Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
living with the lab Using Hobby Servos with the Arduino © 2012 David Hall living with the lab DISCLAIMER & USAGE The content of this presentation is for informational purposes only and is intended only for students attending Louisiana Tech University. The author of this information does not make any claims as to the validity or accuracy of the information or methods presented. Any procedures demonstrated here are potentially dangerous and could result in injury or damage. Louisiana Tech University and the State of Louisiana, their officers, employees, agents or volunteers, are not liable or responsible for any injuries, illness, damage or losses which may result from your using the materials or ideas, or from your performing the experiments or procedures depicted in this presentation. If you do not agree, then do not view this content. The copyright label, the Louisiana Tech logo, and the “living with the lab” identifier should not be removed from this presentation. You may modify this work for your own purposes as long as attribution is clearly provided. 2 living with the lab wires to power & control servo white = signal red = 5V black = Gnd output shaft 3 living with the lab servo components 1. small DC motor 2. gearbox with small plastic gears to reduce the RPM and increase output torque 3. special electronics to interpret a pulse signal and deliver power to the motor 4 living with the lab types of servos continuous rotation can rotate all the way around in either direction pulse tells servo which way to spin & how fast to spin standard can only rotate 180 degrees pulse tells servo which position to hold 5 living with the lab Arduino programming these lines of code make the servo go full speed counter clockwise void loop() { digitalWrite(3, HIGH); delayMicroseconds(1700); digitalWrite(3, LOW); delay(20); } // hold pin 3 high for 1700μs or 1.7ms // hold pin 3 low for 20ms full speed clockwise voltage (V) pulse width varies between 1.3ms and 1.7ms full speed counter clockwise 5V - 20ms 0V - time (milliseconds) pulse width (μs) servo action 1300 full speed CW 1400 ½ speed CW 1500 stopped 1600 ½ speed CCW 1700 full speed CCW speed not linear with pulse duration 6 living with the lab wiring servo to breadboard Since the servos will likely be hooked up for a while, it is worthwhile to keep the wiring tidy, cutting short jumpers from the power bus. The red wire from the power bus should go back to Vin or 5V, and the black wire should go back to Gnd. 7 living with the lab playing around with programing void setup() { pinMode(3, OUTPUT); } void loop() { int i; for (i=0; i<200; i++) { digitalWrite(3, HIGH); delayMicroseconds(1300); digitalWrite(3, LOW); delay(20); } delay(1000); for (i=0; i<400; i++) { digitalWrite(3, HIGH); delayMicroseconds(1700-i); digitalWrite(3, LOW); delay(20); } } “for” loop executes 200 times i = 0, 1, 2, 3, 4, . . . 199 create a square wave with a pulse width of 1300ms followed by a 20ms pulse wait one second this for loop causes the servo to go from full speed CCW (pulse width = 1700ms) to full speed CW (pulse width = 1300ms) 8