added correction factor
This commit is contained in:
@@ -83,7 +83,7 @@ class PCA9685(object):
|
|||||||
self._device.write8(MODE1, mode1)
|
self._device.write8(MODE1, mode1)
|
||||||
time.sleep(0.005) # wait for oscillator
|
time.sleep(0.005) # wait for oscillator
|
||||||
|
|
||||||
def set_pwm_freq(self, freq_hz):
|
def set_pwm_freq(self, freq_hz, correctionFactor=1.0):
|
||||||
"""Set the PWM frequency to the provided value in hertz."""
|
"""Set the PWM frequency to the provided value in hertz."""
|
||||||
prescaleval = 25000000.0 # 25MHz
|
prescaleval = 25000000.0 # 25MHz
|
||||||
prescaleval /= 4096.0 # 12-bit
|
prescaleval /= 4096.0 # 12-bit
|
||||||
@@ -91,7 +91,7 @@ class PCA9685(object):
|
|||||||
prescaleval -= 1.0
|
prescaleval -= 1.0
|
||||||
logger.debug('Setting PWM frequency to {0} Hz'.format(freq_hz))
|
logger.debug('Setting PWM frequency to {0} Hz'.format(freq_hz))
|
||||||
logger.debug('Estimated pre-scale: {0}'.format(prescaleval))
|
logger.debug('Estimated pre-scale: {0}'.format(prescaleval))
|
||||||
prescale = int(math.floor(prescaleval + 0.5))
|
prescale = round(prescaleval * correctionFactor + 0.5)
|
||||||
logger.debug('Final pre-scale: {0}'.format(prescale))
|
logger.debug('Final pre-scale: {0}'.format(prescale))
|
||||||
oldmode = self._device.readU8(MODE1);
|
oldmode = self._device.readU8(MODE1);
|
||||||
newmode = (oldmode & 0x7F) | 0x10 # sleep
|
newmode = (oldmode & 0x7F) | 0x10 # sleep
|
||||||
|
|||||||
@@ -293,12 +293,12 @@ class dw_Controller:
|
|||||||
ININ = 0
|
ININ = 0
|
||||||
PHASE = 1
|
PHASE = 1
|
||||||
|
|
||||||
def __init__(self, addr = 0x60, freq = 100):
|
def __init__(self, addr = 0x60, freq = 100, correctionFactor = 1.0):
|
||||||
self._i2caddr = addr # default addr on HAT
|
self._i2caddr = addr # default addr on HAT
|
||||||
self._frequency = freq # default @1600Hz PWM freq
|
self._frequency = freq # default @1600Hz PWM freq
|
||||||
# self.steppers = [ Adafruit_StepperMotor(self, 1), Adafruit_StepperMotor(self, 2) ]
|
# self.steppers = [ Adafruit_StepperMotor(self, 1), Adafruit_StepperMotor(self, 2) ]
|
||||||
self._pwm = PCA9685(addr)
|
self._pwm = PCA9685(addr)
|
||||||
self._pwm.set_pwm_freq(self._frequency)
|
self._pwm.set_pwm_freq(self._frequency, correctionFactor)
|
||||||
# Just gonna default to high for now
|
# Just gonna default to high for now
|
||||||
GPIO.setmode(GPIO.BCM)
|
GPIO.setmode(GPIO.BCM)
|
||||||
GPIO.setwarnings(False)
|
GPIO.setwarnings(False)
|
||||||
|
|||||||
Reference in New Issue
Block a user