0

Correct way to release a servo using the Adafruit PWM Servo?
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Correct way to release a servo using the Adafruit PWM Servo?

by mattbrailsford on Sun Sep 21, 2014 10:30 am

Hi guys,

I've hooked up my Adafruit 16-Channel 12-bit PWM/Servo Driver to my Raspberry Pi and am using the code from the Adafruit PWM Servo Driver to control 3 servos. Controlling the servos and everything works great, however I hit an issue earlier today, burning out a servo.

The burnout occurred when I left everything connected, but as far as I was aware, none of the servos were engaged. The only thing I could think it could be would be if I dis-engaged the servos incorrectly. Not being able to find any documentation on how to do this, the best I came up with was

Code: Select all | TOGGLE FULL SIZE
pwm.setPWM(0,0,0)

which did seem to work (the servos stopped), however for this specific servo I'm guessing that didn't work.

Can someone confirm the correct way to release a servo when using this library so that I can be sure I am doing it correctly? And can anyone think of any other reason if the servo was dis-engaged, why the servo could burn itself out just by being connected?

Many thanks

Matt

mattbrailsford
 
Posts: 18
Joined: Tue Nov 22, 2011 12:22 pm

Re: Correct way to release a servo using the Adafruit PWM Se

by adafruit_support_bill on Sun Sep 21, 2014 11:08 am

That should work. It will stop sending pulses to the servo. Even if left active, a servo shouldn't burn out unless over-powered or overloaded.

What servos are you using and how are you powering them?

adafruit_support_bill
 
Posts: 74058
Joined: Sat Feb 07, 2009 10:11 am

Re: Correct way to release a servo using the Adafruit PWM Se

by mattbrailsford on Sun Sep 21, 2014 11:18 am

Hi, thanks for confirming. It is very strange.

The servo was a Turnigy Power HD 1501MG High Torque Servo and power was a 6v 4.5Ah battery connected to the screw terminal block, so should be right and within the servos limits.

Everything seemed fine during use, and then everything was told to release. 5/10 mins later I got that distinctive TCP smell and then realized it was burning up (too late).

Matt

mattbrailsford
 
Posts: 18
Joined: Tue Nov 22, 2011 12:22 pm

Re: Correct way to release a servo using the Adafruit PWM Se

by mattbrailsford on Sun Sep 21, 2014 11:20 am

PS the servo is under stress as it is acting as an elbow joint to a robot arm, but hence why I had the release code to prevent it sitting in a constant heavy load state.

mattbrailsford
 
Posts: 18
Joined: Tue Nov 22, 2011 12:22 pm

Re: Correct way to release a servo using the Adafruit PWM Se

by adafruit_support_bill on Sun Sep 21, 2014 11:28 am

When the servo is released, the joint should go slack. The internal servo circuitry will still be powered, but the motor itself should not be getting any power. You should not feel or hear any motor vibration.
Code: Select all | TOGGLE FULL SIZE
pwm.setPWM(0,0,0)

Are you sure you had statements for all the servos? The code above only applies to the servo on channel 0.

In general, arms are a stressful application for servos. I like to design a counterspring into the upper joints to limit the stress on the servo itself.

adafruit_support_bill
 
Posts: 74058
Joined: Sat Feb 07, 2009 10:11 am

Re: Correct way to release a servo using the Adafruit PWM Se

by mattbrailsford on Sun Sep 21, 2014 11:45 am

To be honest, I don't know if it did go slack. This is the robot I'm controlling

http://www.youtube.com/watch?v=lcGUsJbiGmA&feature=youtu.be

When I issue the release command, the head mechanism drops due to the weight of the head so I just assumed that all servos released. As you can see, the eblow does have a couple of springs to help hold the load (if you release the servos, the elbow stays in it's position).

This is the code that I am using (I'm using ToushOSC on my iPhone to control it)

https://github.com/mattbrailsford/LuxOSC/blob/master/luxosc.py

Line 55,56,57 is where all three servos are released so it should be doing it for all servos.

The only thing I could think that possibly could have happened is if after releasing everything, I accidentally touched the control that positioned the elbow servo and so put it back under load, but I didn't notice it move in anyway.

Matt

mattbrailsford
 
Posts: 18
Joined: Tue Nov 22, 2011 12:22 pm

Re: Correct way to release a servo using the Adafruit PWM Se

by adafruit_support_bill on Sun Sep 21, 2014 12:03 pm

Great project! You can test the release by plugging a spare servo into that channel if you have one. Other than accidentally touching the control, the only other possibility is a problem with the servo itself.

adafruit_support_bill
 
Posts: 74058
Joined: Sat Feb 07, 2009 10:11 am

Re: Correct way to release a servo using the Adafruit PWM Se

by mattbrailsford on Sun Sep 21, 2014 12:18 pm

Thanks :) And thanks for clarifying everything. Aat least I know my project should be setup ok and I'm using the right commands, so fingers crossed it was just a fluke (I'll put some better checks in my code though incase it was an accidental touch).

Many thanks

Matt

mattbrailsford
 
Posts: 18
Joined: Tue Nov 22, 2011 12:22 pm

Please be positive and constructive with your questions and comments.