Set Neutral Position on Continuous Rotation Servo Using the EV3
What is Continuous Rotation Servo (CR Servo)?
A standard RC servo is designed for 180 degree swing of the shaft, (90 degrees to left of neutral position, and 90 degrees to right), with ability to position and stop the shaft precisely at any angle in this range.
Continuous Rotation servos are a modified version of the RC Servo where the shaft can rotate continuously. On such RC Servos, you can not stop the shaft at precise position.
Why Calibrate a CR Servo
A standard RC servo is designed for neutral position at 1500 μS. i.e. when a pulse of 1500 μS width is given, the servo shaft holds position at 0 degrees without moving.
A CR servo in a neutral position will hold shaft stationary. When the pulse width is reduced from the neutral position, (say 1400 μS ) the shaft starts to rotate in anti-clockwise direction. Whereas when the pulse width is increased (say 1600 μS ) the shaft starts to rotate in clockwise direction. The CR Servo neutral position needs to be calibrated for each servo for the operating voltage.
Chart below illustrates a neutral position change for change in operating voltage:
How to find and set neutral position of CR Servo using NXTServo-v3
Download the program from following location:
Set neutral program
Attach NXTServo to your EV3 on port 1, attach power to NXTServo, and power on EV3.
Run program “set-neutral”.
Attach a CR Servo to NXTServo on SV1 port.
This program initially sets your RC Servo to 1500 μS position. If your servo remains steady at this position, that’s your neutral position.
If your servo creeps (turns slowly), note the direction in which it’s creeping. So if you servo is creeping clockwise you need to click the right arrow and if the servo if creeping counter-clockwise you need to press the left button. Using arrow keys on your EV3 change the position value such that it stops creeping (say it stops at 1510 μS).
Continue to change the position value even after it stops creeping, and note the range of values in which it does not creep (say it starts creeping again at 1514 μS, so your neutral range is 1510 to 1514 μS).
Use the average of these values as your neutral position (in our example 1512 μS).
Simply set your new found neutral position by clicking the center button on the EV3.
Follow the same procedure for as many servos as you need, connecting them to their respective ports on NXTServo.
Note: each time you enter this program it automatically sets the default netraul position to 1500μS so you will have to repeat this process if you enter an already set servo.
Changing speeds of CR Servos
Speed of a CR Servo can not be controlled precisely, however, upto 20 μS from neutral position, the speed is proportional to the deviation from neutral position, and you can use this fact to control the speed of your CR servo.
i.e. If your CR servo has neutral position of 1510 μS, you can control it’s speed upto 1530 μS (clockwise) and 1490 μS (anti-clockwise). Beyond this zone, the speed is constant.