Trying to use the Servo Class from the library
1530 Views - Created 17/12/2018
Getting exact 1-degree precision is difficult with an RC servo using the Servo Pi as the PWM output is 12 bits precision which is not high enough to make it generate the correct number of steps to correspond exactly to 1-degree increments.
To make it as accurate as possible you can use the Servo class and make a few measurements with your servo.
First, adjust the low limit with the servo.set_low_limit(1.0) function.
servo.set_low_limit(1.0)servo.move(1, 0, 250)
Adjust the 1.0 value down in 0.1 increments until the servo stops moving, this will give you your lower limit. On some servos, you may find that it is above 1.0.
Next, adjust the high limit with servo.set_high_limit(2.0).
servo.set_high_limit(2.0)???????servo.move(1, 250, 250)
Adjust the 2.0 value up in the same way as you did with the low limit to find the upper position of the servo.
Once you have found the lower and upper limits you will need to measure the full range of motion in degrees using a protractor. Run the while loop below to make the servo move between its limits and hold the protractor above to measure its range.
while True: servo.move(1, 0, 250) time.sleep(1.0) servo.move(1, 250, 250) time.sleep(1.0)
Once you know what the full range of your servo is you can use that value as the number of steps in the servo.move function. For example, if your servo has a range of 180 degrees and you want to move to 90 degrees you could use the following command.
servo.move(1, 90, 180)
The servo.move function has to round the number to the nearest available position so it will not always move in exactly 1-degree increments but this should give you the closest accuracy you can get with the Servo Pi.
Note: documents in Portable Document Format (PDF) require Adobe Acrobat Reader 5.0 or higher to view, download Adobe Acrobat Reader or other PDF reading software for your computer or mobile device.