Удельное угловое движение в серводвигателе с использованием PCA9685 и Raspberry Pi - PullRequest
0 голосов
/ 22 апреля 2019

Я интегрировал 360-градусный серводвигатель с модулем PCA9685 на Raspberry Pi. Сейчас я пытаюсь вращать серводвигатель на определенные углы, используя python. Вот что я попробовал:

from __future__ import division
import time
import sys

# Import the PCA9685 module.
import Adafruit_PCA9685

# Initialise the PCA9685 using the default address (0x40).
pwm = Adafruit_PCA9685.PCA9685()

# Configure min and max servo pulse lengths
servo_min = 20  # Min pulse length out of 4096
servo_max = 900  # 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...')
try:
    while True:
        # Move servo on channel O between extremes.
        pwm.set_pwm(0, 0, servo_min)
        time.sleep(1)
        pwm.set_pwm(0, 0, 0) # to stop the servo continuous rotation
        time.sleep(1)
        pwm.set_pwm(0, 0, servo_max)
        time.sleep(1)
        pwm.set_pwm(0, 0, 0)
        time.sleep(1)
except KeyboardInterrupt:
    pwm.set_pwm(0, 0, 0)
    print("Exiting......")
    sys.exit(0)

Этот код отлично работает при вращении серводвигателя, но я не могу получить конкретные угловые повороты, такие как вращение на 60 градусов. Любая помощь приветствуется.

...