Advanced Tips
Maximizing Performance and Advanced Programming
Motors output the most power when the load is exactly half of the stall torque. At this load, they also draw half of their stall current. Because of this, gearing your mechanisms such that they load the servo to half of its stall torque (or less) is the most optimal gearing possible.

Motor power curve
Lets say that you have a arm that weighs 1kg and has a distance of 10 cm from the center of mass to the pivot. To move that arm, you would need 10kg-cm of torque. Applying what we learned from above, you would want to gear your servo such that it has, at minimum, 20kg-cm of stall torque.
Servos from non-reputable manufacturers are often "over-specced". This means that they have less torque than they actually claim. Be careful, and make sure to account for this when designing a mechanism.
Axon Servos are tested on a dyno to reliably be able to output the stall torque and operating speed that they claim.
Direct drive is the action of driving a load such that the mass is mounted directly to the servo shaft.
Though servos are perfectly capable of direct driving under low load, at high loads the parts inside the servo can snap/shear due to shock and transverse loads. Therefore, it is not recommended to direct drive under high loads. These issues can be mitigated by adding an extra bearing to the output to help with bending, but this does not solve the shock loads.
The solution to this is to add a chain, belt, gearing, linkage, etc to dampen/soak up some of the shock load from your mechanism.
Counter-springing is a great way to add efficiency to your mechanism. The most common example of counterpointing is using some kind of spring to counterbalance the effects of gravity. It is primarily a method for 4-bar linkages but can also be used on virtual 4-bars and traditional arms.
// get our servo from the hardwareMap
ServoImplEx servo = hardwareMap.get(ServoImplEx.class, "myservo");
// axon servos have a PWM range of 500us-2500us
// but we keep it slightly lower to ensure no wraparounds occur
servo.setPwmRange(new PwmControl.PwmRange(505, 2495));
// set position
servo.setPosition(1);
// get our servo from the hardwareMap
CRServoImplEx servo = hardwareMap.get(CRServoImplEx.class, "myservo");
// axon servos have a PWM range of 500us-2500us
servo.setPwmRange(new PwmControl.PwmRange(500, 2500));
// set power
servo.setPower(1);
// Coming soon
// Coming soon
Last modified 26d ago