【问题标题】:How to run ESC Brushless Motor on raspberry Pi using Python?如何使用 Python 在树莓派上运行 ESC 无刷电机?
【发布时间】:2021-01-21 15:43:34
【问题描述】:

我是树莓派和硬件的新手。我正在尝试用 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

【问题讨论】:

    标签: python raspberry-pi motordriver


    【解决方案1】:

    我假设您要控制的电机是有刷直流电机而不是无刷电机,否则您需要在 RPI 和电机之间安装一个驱动器。 对于有刷直流电机,您可以通过更改 PWM 输出的占空比来控制电机的速度。如果您不想更改速度,只需设置一个占空比并保持不变。 根据https://sourceforge.net/p/raspberry-gpio-python/wiki/PWM/查看这个例子:

    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()
    

    这里我们使用 GPIO 7,开关频率为 50Hz,占空比为 10%。调整值以满足您的需要。

    【讨论】:

    • 感谢您的回答。但它没有奏效。我运行代码,但电机开始发出哔哔声,但没有任何反应。
    • 首先检查您是否使用了正确的引脚。 GPIO.setmode(GPIO.BOARD) 表示您使用的是引脚编号而不是 GPIO 编号。检查此article。要更改为 GPIO 编号,请改为设置 GPIO.setmode(GPIO.BCM)。在我的回答中,我说我们使用的是 GPIO 7 是错误的。相反,我应该说引脚 7 根据您的 RPI 模型匹配不同的 GPIO。最好的检查方法是使用万用表。
    • 然后尝试硬件 PWM 输出,例如 GPIO12。并非所有 GPIO 引脚都是硬件 PWM。在这种情况下,将 GPIO 模式设置为 BCM,然后设置 p=GPIO.PWM(12,50)。
    • @MDSulaiman 以便获得您需要提供更多信息的任何帮助。什么不工作?您是否在预期的引脚上有电压并且电机仍然不旋转,或者您根本没有电压?我之前没有说过,但这是一个相关点,树莓派输出只能直接驱动非常小的电机,因为它们输出只有几毫安的 3.3V。
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2019-08-31
    • 2015-03-22
    相关资源
    最近更新 更多