For a certain robotic application (actually for the FTC challenge this year) our team is performing an operation where a servo-driven arm could potentially be forced into an unknown position. We are using NXT+Tetrix.

Since this could damage a powered servo working against this forced position (servo holding arm weight on fixed base is now trying to move heavy base relative to fixed arm), we are thinking about somehow de-powering our servos (or servo controller), in order to get the servos to "relax" and accept the mechanically-forced position.

Originally, we were thinking of having our RobotC code determine the physical position of a given servo and set its desired position to there every loop, limiting how much a servo would try to fight the movement, but to our dismay, ServoValue[fooServo] actually gives us the setpoint, and not the physical location (due to the servo being unable to provide this information).

We also considered setting ServoChangeRate[fooServo] to 1(the minimal value) but this only changes the rate of the target location changing relative to the previous target.

So, we're concluding that the only way to really do this is to fully depower the servos. Is this possible on NXT/Tetrix with RobotC?

A few notes:

  • I realized as well that one could suggest to rig an encoder(associated with a Tetrix motor that does not need an encoder) onto the rotating area. That actually would not work for mechanical constraints.

  • I looked into setting PWM enable as shown here but am not sure how to send the i2c commands needed. If someone could clue me in to how these commands would be sent in terms of c code, that would be very helpful.

  • 1
    $\begingroup$ Thanks hexafraction, welcome to Robotics. The rcservo tag looks fine to me. $\endgroup$
    – Mark Booth
    Commented Nov 25, 2013 at 12:03

1 Answer 1


Well, when you change the value of PWM to 0 in an instant, it will definitely shut the servo down, but it will happen in such a sudden fashion that it could break the servo. I am also partaking in this event as well at my school and we are also had the same problem. We even tried setting the value of PWM to 0 in the end, but it broke two of our servos due to the sudden movement. What I recommend is, which I used with my FTC robot to solve my problem is to decrease the value of the angle instead of the PWM by decreasing the servo angle, or speed, by 1.25 every second. Every second is crucial in the games so it is always helpful to use your time efficiently and as fast as possible.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.