Using Servos With Arduino Made Easy !
by electro18 in Circuits > Arduino
43005 Views, 577 Favorites, 0 Comments
Using Servos With Arduino Made Easy !


Servomotors or simply servos are essential components of a robot which convert electrical energy into mechanical energy.They are widely used in the field of RC hobby and robotics. But unlike simple geared motors , these servos are made by integrating a geared motor with a position feedback circuit which allows us to control the rotation of the shaft precisely. To drive a servo , we need a controller which provides PWM signals to the servo which in turn determines the angle of rotation. Using an arduino to do this is pretty easy job, all you need is :
1. A servo ( To make your own servo , check this out : make your own servo ! )
2. Arduino ( and the default "knob.ino" sketch )
3. A bunch of jumper wires ( male to male )
4. A 10k potentiometer
5. A USB cable
Prepare the Potentiometer


The potentiometer has three pins one is for the wiper and the other two have 10k resistance between them. The wiper should be connected to the analog 0 pin on the arduino , one of the remaining two pins should be connected to +5v and the other should be grounded. The potentiometer has been soldered on a protoboard to make it "arduino friendly" ( you can use a breadboard too ).
Based on how you rotate the the wiper arm , the analog values on the analog 0 pin will change and therefore the angle of rotation of the servo will also change.
Upload the Program and Attach the Servo






I've made some minor changes in the program :
pin 15 ( analog 1 ) and pin 16 ( analog 2 ) are used as power source for the potentiometer board.
The arduino reads values from potentiometer between 0 and 1023
" val = analogRead(potpin); "
Then it converts or "maps" the values from 0-1023 to 0-179 ( in degrees )
" val = map(val , 0 , 1023 , 0 , 179 ); "
Finally , it writes these values to the servo.
CONNECTIONS :
1. Connect the potentiometer to the arduino ( as mentioned above )
2. Attach the yellow/orange signal pin of servo to pin 9 on arduino.
3. Connect the red wire to VIN pin* and the brown one to ground.
4. Take power from USB.
5. Upload the attached sketch to arduino.
***IF you are using external power source ( other than USB ) then first convert the voltage to 5v.
>> some important tips
Downloads
Troubleshooting and Tips
TIPS :
1. Do Not take +5v from any pin on arduino or from the +5v pin on arduino , I'm saying this because sometimes servos tend to draw high current from the source which can seriously damage the microcontroller. Instead use lithium batteries or any other batteries to power-up your servo ( USB power also works quite well ).
2. If your arduino keeps on resetting and the servo behaves abnormally , try adding capacitors to your power supply.
3. You can use optoisolators / optocouplers to electrically isolate the servo from microcontroller. This keeps the high current away from the microcontroller and stops the noises from damaging the controller.
At last , feel free to ask your questions
and if you find my instructable helpful , please do vote for me :)