140 likes | 354 Views
IR & Servos. Lab 3. Servos. DC Gearhead motor with interface circuitry Often used for angular positioning Can be “hacked” to act as a standard DC Gearhead motor. Servos – Handy Board Specifics. Handy Board uses PWM to command servo to desired angular position
E N D
IR & Servos Lab 3 Spring Quarter
Servos • DC Gearhead motor with interface circuitry • Often used for angular positioning • Can be “hacked” to act as a standard DC Gearhead motor Spring Quarter
Servos – Handy Board Specifics • Handy Board uses PWM to command servo to desired angular position • Handy Board can control 2 servos (second servo requires alternate source of 5 volts) • Digital port 9 • TOC3 port (under LCD) • Need to include library files • Servo.icb • AND Servo.c • OR servo.lis Spring Quarter
Servo - Calibration • Servo.c constants may need "calibrated" to make full use of servo • To do so, use servo (x) command • Set MIN_SERVO_WAVETIME=0, MAX_SERVO_WAVETIME=10000 (interaction window) • Reduce x (>1400) until servo is at 0° • Increase x(<4860) until servo is >180° • In your main program, assign new values to the global variables MIN_SERVO_WAVETIME and MAX_SERVO_WAVETIME Spring Quarter
Servo – use • Load servo.lis • To turn servo on – servo_on ( ); • To command servo - • servo (int period); • servo_rad (float radians); • servo_deg (float degrees); • To turn servo off – servo_off ( ); Spring Quarter
Infrared (IR) Basics • EM wave – 1013- 1014 Hz • Many things give off IR • Remote controls • Sun • Fluorescent lights • Handy Board • How do we avoid interference from all these sources? Spring Quarter
IR – Specifics • Use Sharp GP1U5 IR detector • Looks for a 40kHz IR pulse • 40kHz? • Used to reduce interference • Also rumored to be used due to legacy remote controls (ultrasonic) Spring Quarter
IR – Waveform Specifics • Another waveform is “modulated” on this 40 kHz carrier Spring Quarter
IR – Handy Board detection • Handy Board can look for 100Hz, 125Hz signals • Handy Board looks for a matching waveform by sampling and pattern matching Spring Quarter
IR – Waveform matching Signal X X X X X X X X X X X X X X X X X X X X Stored copy of signal Spring Quarter
IR – Handy Board specifics • Handy Board checks incoming signal for match w/ stored copy • When they match, ir_counts return a number from 1 to 255 • If there is no match, 0 is returned • The longer the receiver sees a valid signal, the higher the count • If you look away, counts goes to 0 Spring Quarter
IR – Handy Board use • Handy Board does not handle mixed mode arithmetic • Must use casting operators - angle=(float)deg where deg is integer and angle is floating point • IR reception can take as much as 30% of HB resources ! ! Spring Quarter
IR – Handy Board functions • void set_ir_receive_frequency (int f) ; • void ir_receive_on ( ); • void ir_receive_off ( ); • int ir_counts (int p); • Where you should note that: • ir_counts (5) => from digital port 15 • ir_counts (4) => from digital port 14 Spring Quarter
Lab • Write code to seek out an IR beacon • Scan a servo over 180° • Return to angle where beacon is located • Try for accuracy, fast search time Spring Quarter