计算连续伺服PWM频率和占空比

2024-10-04 01:25:01 发布

您现在位置:Python中文网/ 问答频道 /正文

  • 我用的是覆盆子皮2
  • 2个DS3115-360伺服系统

我试图让频率和占空比正常工作,但我找不到这个伺服的数据表
我尝试了典型的50hz 7.5 dc,但它似乎对我不起作用。
我尝试将占空比设置为2.5,这甚至不会移动伺服。
我试着使用更接近的dc值,如6.8和7.8,有时通过非常缓慢地移动伺服和分配口吃来工作。
有时,它甚至会在7.5时开始运行得更快。
我想可能是RPI5V端口,所以我使用了外部电源(5.8v),这给了我同样的结果。 同时,每次仅使用一个电机也可以获得相同的结果

我的代码:

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BOARD)

GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
    
pwm1=GPIO.PWM(11, 50)
pwm2=GPIO.PWM(13, 50)
    
pwm1.start(0)
pwm2.start(0)
sleep(0.2)
GPIO.output(11, True)
GPIO.output(13, True)

def StopRotation(): 
    cycle = 7.5    
    print(cycle)
    pwm1.ChangeDutyCycle(cycle)
    pwm2.ChangeDutyCycle(cycle)
    sleep(0.2)
def RotateClockwise(speed):  
    cycle = 7.5 - speed
    print(cycle)
    pwm1.ChangeDutyCycle(cycle)
    pwm2.ChangeDutyCycle(cycle)
def RotateAntiClockwise(speed): 
    cycle = 7.5 + speed
    print(cycle)
    pwm1.ChangeDutyCycle(cycle)
    pwm2.ChangeDutyCycle(cycle)
RotateClockwise(0.8)
sleep(2)
StopRotation()
sleep(2)
RotateAntiClockwise(0.8)
sleep(2)
StopRotation()
GPIO.output(11, False)
GPIO.output(13, False) 
GPIO.cleanup()

Tags: importoutputgpiodefsetupsleepdcout