I have a hexapod that a friend and I built this summer, but there is a big problem whenever we try to move multiple servos. When using the Adafruit_Python_PCA9685 library, I am able to move the servos perfectly fine for a short period, but then they will breakdown and start erratically twitching.
To illustrate the problem, I just modified a few lines from Adafruit's simpletest.py program.
Here is the code:
# Simple demo of of the PCA9685 PWM servo/LED controller library.
# This will move channel 0 from min to max position repeatedly.
# Author: Tony DiCola
# License: Public Domain
from __future__ import division
import time
# Import the PCA9685 module.
import Adafruit_PCA9685
# Uncomment to enable debug output.
import logging
logging.basicConfig(level=logging.DEBUG)
# Initialise the PCA9685 using the default address (0x40).
# pwm = Adafruit_PCA9685.PCA9685()
# Alternatively specify a different address and/or bus:
pwm = Adafruit_PCA9685.PCA9685(address=0x40, busnum=2)
# Configure min and max servo pulse lengths
servo_min = 300 # Min pulse length out of 4096
servo_max = 400 # Max pulse length out of 4096
# Helper function to make setting a servo pulse width simpler.
def set_servo_pulse(channel, pulse):
pulse_length = 1000000 # 1,000,000 us per second
pulse_length //= 60 # 60 Hz
print('{0}us per period'.format(pulse_length))
pulse_length //= 4096 # 12 bits of resolution
print('{0}us per bit'.format(pulse_length))
pulse *= 1000
pulse //= pulse_length
pwm.set_pwm(channel, 0, pulse)
# Set frequency to 60hz, good for servos.
pwm.set_pwm_freq(60)
print('Moving servo on channel 0, press Ctrl-C to quit...')
while True:
# Move servo on channel O between extremes.
for i in range(0, 3):
for j in range(0,3):
k = (4*i)+j
pwm.set_pwm(k, 0, servo_min)
time.sleep(1)
pwm.set_pwm(k, 0, servo_max)
time.sleep(1)
And here is a video of the "erratic movement" (the first 8 seconds are normal movement)
I am running the code on a Beagle Bone Green Wireless with ubuntu on it and I am using turnigy TGY-S091D servos.
I don't have enough reputation to post more detailed pictures, but hopefully this is enough.
Please help.