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
Step 1: 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.
Step 2: 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.
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
Step 3: Troubleshooting and 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 :)