目录

参考资料:

原理说明

材料准备

具体思路

PIGPIO库实现pwm波的控制

 例程

 用树莓派自带的GPIOZERO实现

连接部分 


原理说明

材料准备

树莓派、面包板、杜邦线(公对公、公对母各5根左右)、好盈20A电调、3s11.1V电源、holybro 2216 880kv无刷电机一个、发光二极管一个。

具体思路

由于本人只有3天时间来完成这个项目,所以很多知识都不是特别了解,只能用自己的理解表述了。利用树莓派输出的PWM波可以实现对无刷电机转速的控制,PWM波的主要参数为占空比(duty circle)与频率(frequency),占空比就是高电平在PWM波一个循环中占的比例,类似交流电,不同占空比能控制实际电压输出大小。但是树莓派的PWM波只能作为输入的控制信号,还需要电调对无刷电机进行实际控制,为了驱动无刷电机,必然需要电源。于是架构便清晰了。

树莓派自带的python库gpiozero可以实现PWM波的输出,具体请查阅开头给出的库说明文档。

PIGPIO库实现pwm波的控制

gpiozero库输出的貌似是software PWM,效果极差,驱动电机时电机抖动明显,这边建议使用pigpio的库,其不仅需要import还要在使用前打开

下载

wget https://github.com/joan2937/pigpio/archive/master.zip
unzip master.zip
cd pigpio-master
make
sudo make install

验证

sudo pigpiod
./x_pigpio.py

库的使用与关闭

sudo pigpiod         # open
sudo killall pigpiod #close

注意:个人不推荐下面参考的升级,直接使用上面的代码下载,验证即可

 例程

其运行后gpio12引脚输出硬件PWM波,其大小依靠终端输入con_Str控制,输入的范围为(0,1]

具体的使用可以参考开头的pigpio的文档,这边主要是使用了pi.hardware_PWM函数

from pigpio import pi
from time import sleep
p12=pi()
pin_use=12
# p12.set_PWM_frequency(pin_use,100)
# p12.set_PWM_range(pin_use,1000)
# while 1 :
#     num1=float(input("con_Str: "))
#     if (num1>1000) | (num1==0) :
#         break
#     else :
#         p12.set_PWM_dutycycle(12,num1)
while 1 :
    num1=float(input("con_Str:"))
    if (num1==0) | (num1>1) :
        break
    current_speed=num1*1e6
    p12.hardware_PWM(pin_use,100,int(current_speed))



p12.write(12,0)
p12.stop()

 用树莓派自带的GPIOZERO实现

请参考开头的文献

树莓派智能车pid控制调速python 树莓派怎么控制电机_自动化

 

树莓派智能车pid控制调速python 树莓派怎么控制电机_github_02

这边给出一个删减版的案例,其实现通过键入控制指令控制PWM占空比来改变无刷电机的速度。 

from gpiozero import PWMLED
from time import sleep
# coef
# Set the pin|frequency|duty_initial
#num1=input("start")
pwm_out=PWMLED(12)
pwm_out.frequency=50
# pwm_out.value=0.2
# initalize the Electric regulate
while 1 :
    num1=float(input("控制指令!"))
    if num1==2 :
        break
    else :
        pwm_out.value=num1
    

pwm_out.off()
print("done")

连接部分 

 于是连接好电路后,即可实现对无刷电机的控制

但是需要注意,电调需要一些初始设置,具体请查阅用户手册。

 具体连接如下,图中并未连接电源

树莓派智能车pid控制调速python 树莓派怎么控制电机_参考资料_03

 示意图如下,可以考虑并联一个发光二极管以实现对信号的检测

树莓派智能车pid控制调速python 树莓派怎么控制电机_参考资料_04

 编写好程序后,run,输入0.15,电机转动