Radio Control (RC) hobby servos are small actuators designed for remotely operating model vehicles such as cars, airplanes, and boats. Nowadays, servos are become more popular in robotics, creating humanoid robot, biologically inspired robot, robotic arm and etc This is because its size are small consider the built in circuitry and more over its ability to rotate and maintain at certain position or angle according to control pulses from a single signal wire. Inside a typical servo contains a small motor and gearbox to do the work, a potentiometer to measure the position of the output gear, and an electronic circuit that controls the motor to make the output gear move to the desired position. This is the “servo system” which will elaborate at next section. Servos has three wire, one is for power (+5V), ground and the signal wire. Because all of these components are packaged into a compact, low-cost unit, servos are great actuators for robots.
2. How to control the servo motor?
Servos are controlled by sending them a pulse of variable width. It is important to note that different servos will have different constraints on their rotation but they all have a neutral position, and that position is always around 1.5 milliseconds (ms).
... ___.................... ___ ..................... ___
...|....|...................|....|.....................|....|
...|....|____________|....|_____________|....|_____________
...|....|
...1.5ms
...|<------20ms---->|
The angle is determined by the duration of a pulse that is applied to the signal wire. This is called Pulse width Modulation. The servo expects to see a pulse every 20 ms. The length of the pulse will determine how far the motor turns. For example, a 0.7ms pulse will make the motor turn to the 0 degree position. Different brands, and even different servos of the same brand, will have different maximum and minimums. Generally the minimum pulse will be about 1 ms wide (some servo is 0.5ms) and the maximum pulse will be 2 ms wide (some servo is 2.5ms).
Over range of pulse will damage the servos!
3. I would like to control my servo motor to a certain angel, but i totally have no idea how to write the program.
Sample pseudo code
loop:
set the output pin of the servo
delay x ms
clear the output pin of the servo
delay (20-x)ms
goto loop
[0.7ms < x < 2.5ms] Pulse width range, x is for reference only. The 'x' will determine the angle of the servo motor.
Sample source code has been provided too at the product page.
Over range of pulse will damage the servos! So please start the servo calibration at 1.5ms.
4. Does cytron provide Servos datasheet?
Yes, the servos datasheet can be found in the product page.
4. Can i supply more than 6V power to servos?
Cytron analog/standard servos will be damage if you supply more than 6V power to them. Please follow the specification of the servos.
5. May i know how to connect the servo to microcontroller?
Cytron servo has three wires which is white (signal), black (ground) and red (+5V). The signal wire should connect to the output pin of microcontroller.
Simple schematic:
![Image](http://img186.imageshack.us/img186/6827/schematicservo1.jpg)
6.The servos keep shaking and rotating inconsistently after the pulse is given.
This is the most common problem face by the user. The main course is probably insufficient current supplied to the servos. This problem always happen because the 6V regulator 7806 only supply up to maximum 1A current (normally more than 3 servos will need more than 1A current) So you need to boost the current with adding extra circuitry, for example :
![Image](http://img186.imageshack.us/img186/707/boostu.jpg)
7. How to write the program if i want to control more than 8 servo motors?
Control many servos involve complicated programming.The most easier way to control many servos is by using Servo Controller (for example SC16A from cytron). With servo controller, you can control as many servo as you want. And the control method is as easy as 1,2,3. What you need to do is sending 1 packet (which consist of few bytes) of command to servo controller via UART (for SC16A case), than the servos will work according to your command.