树莓派驱动无刷电机全攻略(三)无刷电机控制

目录

参考资料:

原理说明

材料准备

具体思路

PIGPIO库实现pwm波的控制

 例程

 用树莓派自带的GPIOZERO实现

连接部分 


参考资料:

GPIO Zero Documentation:GPIOZERO库说明文档

pigpio:pigpio library 

好盈20A电调:用户手册

好盈电调设置说明书.pdf_淘豆网

原理说明

材料准备

树莓派、面包板、杜邦线(公对公、公对母各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

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

可以参考查看:[树莓派]使用pigpio库(1) - 介绍和安装_The Daylight的博客-CSDN博客_pigpio

我升级时遇到的问题解决方案为:

由于没有公钥,无法验证下列签名 :NO_PUBKEY 的解决方法_Half_A的博客-CSDN博客_由于没有公钥,无法验证下列签名:

 例程

其运行后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实现

请参考开头的文献

 

这边给出一个删减版的案例,其实现通过键入控制指令控制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")

连接部分 

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

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

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

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

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


 

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值