added correction factor

This commit is contained in:
shrkey
2016-08-15 20:30:58 +01:00
parent 6b2e637272
commit 95d9be87cd
2 changed files with 4 additions and 4 deletions

View File

@@ -83,7 +83,7 @@ class PCA9685(object):
self._device.write8(MODE1, mode1)
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."""
prescaleval = 25000000.0 # 25MHz
prescaleval /= 4096.0 # 12-bit
@@ -91,7 +91,7 @@ class PCA9685(object):
prescaleval -= 1.0
logger.debug('Setting PWM frequency to {0} Hz'.format(freq_hz))
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))
oldmode = self._device.readU8(MODE1);
newmode = (oldmode & 0x7F) | 0x10 # sleep

View File

@@ -293,12 +293,12 @@ class dw_Controller:
ININ = 0
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._frequency = freq # default @1600Hz PWM freq
# self.steppers = [ Adafruit_StepperMotor(self, 1), Adafruit_StepperMotor(self, 2) ]
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
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)