Hello,
I am using 2 PCA9685 PWM Servo driver boards connected in chain to drive 30 motors.
They work perfectly when the servos are powered all the time, however, I am trying to use the output enable to keep the motors from "buzzing" between movements. This technique works most of the time.
Sometimes, when I set OE HIGH, some servos move to a different position than the one they were actually set to, as soon as OE is set back to LOW, they move back to their original position.
How can I fix this? Can this be fixed in the code? Do I have to use a relay instead of using OE?
Thank you in advance
PWM Servo driver - PCA9685 - Output Enable
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- charafantah
- Posts: 3
- Joined: Fri Jan 11, 2008 7:27 pm
- adafruit_support_bill
- Posts: 88154
- Joined: Sat Feb 07, 2009 10:11 am
Re: PWM Servo driver - PCA9685 - Output Enable
The OE pin just cuts the signal to the servos, it does not cut the power. Most servos will just stop where they are and stop controlling the motor. But I've seen some that will twitch randomly or continue actively maintaining the last position.
The other thing that might be happening is that the OE pin cuts off in the middle of a control pulse, so the last pulse to the servo is shortened and the servo tries to seek that position. This could be prevented by stopping the pulses by doing a setPWM with 0 for both the start and stop times.
The other thing that might be happening is that the OE pin cuts off in the middle of a control pulse, so the last pulse to the servo is shortened and the servo tries to seek that position. This could be prevented by stopping the pulses by doing a setPWM with 0 for both the start and stop times.
- charafantah
- Posts: 3
- Joined: Fri Jan 11, 2008 7:27 pm
Re: PWM Servo driver - PCA9685 - Output Enable
Hello,
Thank you. Your suggestion of doing a setPWM with 0 for both the start and stop times seems to work fine, I ran the servos for a couple of hours and I haven't noticed the problem at all
Thank you. Your suggestion of doing a setPWM with 0 for both the start and stop times seems to work fine, I ran the servos for a couple of hours and I haven't noticed the problem at all
- RobertDw
- Posts: 1
- Joined: Wed Mar 22, 2017 4:07 am
Re: PWM Servo driver - PCA9685 - Output Enable
Just reading your question about the PCA9685 chip problem with stopping mid signal and generating a foreign signal that offsets the servo position, I have tried using the setPWM with 0's but it doesn't have any effect .
Is there another method that stops the signal in a non-distorting way ?
I have checked the signal with an oscilloscope and can see the short pulse at the end of the pulse train.
Any help would be appreciated.
Is there another method that stops the signal in a non-distorting way ?
I have checked the signal with an oscilloscope and can see the short pulse at the end of the pulse train.
Any help would be appreciated.
- adafruit_support_bill
- Posts: 88154
- Joined: Sat Feb 07, 2009 10:11 am
Re: PWM Servo driver - PCA9685 - Output Enable
I don't know of any other ways to stop the pulses. You could check with NXP.
https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf
https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf
Please be positive and constructive with your questions and comments.