Wednesday, June 18, 2014

Leg Data and a 1501MG  Servo Problem                                                                                         


Piston characteristics
I connected the servos, the pressure sensors and the hip rotation sensors to an Arduino test program. This allowed me to measure the pressure in each piston as the servos moved though their entire range. This back-pressure is caused by the heavy return springs pushing in on the piston, slightly compressing the air inside. Because the piston head has seven square inches of surface area, I can calculate the force on the springs as well. I also measured the knee angle and hip to foot distance for each servo position. The results are summarized in the excel graph.

Rotation sensor data.
The hip angle sensors produced these digital outputs and  voltages for each hip angle. Note that the right and left leg data are mirror images. The leg is perpendicular to the floor at an angle of 90º. The angle gets lower as the leg swings forward; higher as it moves backward.





Power HD 1501MG servo
I am somewhat disappointed with the performance of the Power HD 1501MG. These servos are inexpensive, are incredibly strong and have excellent metal gears, but the electronic driver circuit design is flawed. The problem is that during fast moves, the servo easily looses it’s position. This is because the potentiometer position feedback loop inside the servo only works within a narrow band around the target position signal. Yes, this is true. If the servo position is more than about a dozen degrees from the target position then the servo goes dead; not to become live again until the target signal eventually finds the servo’s true position. Perhaps this design is a way to protect the servo from self destructing when asked to produce torques higher than rated. All I know is that I cannot afford to have a servo lose control during a leg move. ***

I think I found a solution to the servo problem. I am going to convert these analog servos into digital servos. I found an excellent white-paper on how to do this: 


Analog to digital servo conversion.
In the servo, the potentiometer is replaced with two fixed resistors; causing the servo input signal to control servo speed, not servo position. The servo potentiometer output is sent back to the microprocessor to use to control the servo speed. Added benefits are: real-time info on the servos actual position, and also, direct control over servo speeds, making movement smoother. The down-side is that I will need two more controller analog inputs and that my code will be more complex. 


*** The 1501MG servos are good. See July 19, 2014 entry for explanation.


No comments:

Post a Comment