如何使用Python在raspberry Pi上运行ESC无刷电机?

如何使用Python在raspberry Pi上运行ESC无刷电机?,python,raspberry-pi,motordriver,Python,Raspberry Pi,Motordriver,我是一个非常新的树莓pi和硬件。我正在尝试用ESC旋转无刷电机。下面是一段代码(取自youtube视频),它将电机旋转到9点,然后将其减速到4点。但是我想在不改变循环和占空比的情况下运行电机。意思是当我运行程序时,电机应该旋转,当我停止程序时,电机应该停止旋转。请更新以下代码 对不起,我的英语不好。我希望我清楚我需要什么 下面是我从视频中获取的代码 代码: p = GPIO.PWM(7, 50) p.start(0) print ("starting 0") time.sl

我是一个非常新的树莓pi和硬件。我正在尝试用ESC旋转无刷电机。下面是一段代码(取自youtube视频),它将电机旋转到9点,然后将其减速到4点。但是我想在不改变循环和占空比的情况下运行电机。意思是当我运行程序时,电机应该旋转,当我停止程序时,电机应该停止旋转。请更新以下代码

对不起,我的英语不好。我希望我清楚我需要什么

下面是我从视频中获取的代码

代码:

p = GPIO.PWM(7, 50)

p.start(0)
print ("starting 0")
time.sleep(3)

p.ChangeDutyCycle(3)
print("start")
time.sleep(5)



while True:
    i = 4
    while i<10:
        
        print(i)
        p.ChangeDutyCycle(i)
        time.sleep(.05)
        i +=.02
    
    while i>4:
        print(i)
        p.ChangeDutyCycle(i)
        time.sleep(.05)
        i -=.05
p=GPIO.PWM(7,50)
p、 开始(0)
打印(“开始0”)
时间。睡眠(3)
p、 变化周期(3)
打印(“开始”)
时间。睡眠(5)
尽管如此:
i=4
而i4:
印刷品(一)
p、 变化周期(一)
时间。睡眠(.05)
i-=0.05

我假设您要控制的电机是有刷直流电机,而不是无刷电机,否则您需要在RPI和电机之间安装一个驱动器。 对于有刷直流电机,您可以通过改变PWM输出的占空比来控制电机的速度。如果你不想改变速度,只需设置一个dutycycle并保持它。 根据以下内容检查此示例:


这里我们使用的是GPIO 7,开关频率为50Hz,占整个工作周期的10%。调整值以满足您的需要。

谢谢您的回答。但它不起作用。我运行代码,但电机开始发出嘟嘟声,什么也没有发生。首先检查您是否使用了正确的pin。setmode(GPIO.BOARD)表示您使用的是管脚编号而不是GPIO编号。看看这个。要更改为GPIO编号,请改为设置GPIO.setmode(GPIO.BCM)。在我的回答中,我犯了一个错误,说我们正在使用GPIO 7。相反,我应该说引脚7,根据您的RPI模型匹配不同的GPIO。最好的检查方法是使用万用表。然后尝试硬件PWM输出,如GPIO12。并非所有GPIO引脚都是硬件PWM。在这种情况下,将GPIO模式设置为BCM,然后设置p=GPIO.PWM(12,50)。它不起作用。请help@MDSulaiman为了得到任何帮助,你需要提供更多的信息。什么不起作用?您的预期引脚中是否有电压,并且电机仍然不旋转,或者根本没有电压?我以前没有说过这一点,但这是一个相关的问题,raspberry pi输出只能直接驱动非常小的电机,因为它们输出3.3V电压,只有几毫安。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)

p = GPIO.PWM(7, 50)
p.start(10)
input('Press return to stop:') 
p.stop()
GPIO.cleanup()