MicroPython pyboard 控制 无刷电调
2019-04-24 本文已影响5人
头发旺盛的玮儿
最近实验室需要开始准备国赛,我们组选的飞行控制类的方向。
然后准备提前做一个自己的飞控出来。
但是国赛的芯片必须要使用Ti
芯片,看了下micropython
支持的TI芯片发现了一款MSP-EXP432P401R
是可以烧录micropython固件的,然后就立即买了一快,在没到货的时候先用手头的pyboard
先做着。
首先 无刷电机的转速是由PWM控制的,然后pyb里面的Timer正好已经为我们准备了PWM
波的方式,所以就很方便了。
然后我们再来了解以下什么是 电调。
由于电池电压过高(四轴无人机电压14.1V,电动漂移板28.8V),若是直接连接单片机,会烧坏。这个时候便需要连接电调(speed controler)作为中转桥梁。
目前网上单片机对电调的控制资料还是很少的,尤其micropython对电调的文章几乎没有,所以这篇文章的目的就是,解决micropython如何连接电调控制电机。
-
电调的初始化
这电调可高级了,内置独立的程序和连接马达的报错程序。
最关键的是,电调首次使用,没调制好油门行程,也是不能驱动电机的。想要首次激活电调,就要在Arduino上说一样的“暗号”,也就是模仿实体遥控器的程序走一遍。
说明书上关于实体遥控器校准的方法是这样的:
图片.png
于是,我们需要模拟设置油门行程。以下为代码:
# main.py -- put your code here!
from pyb import Pin,Timer
import time
tm = Timer(2,freq=50)# 频率50Hz
t = tm.channel(1,Timer.PWM,pin=Pin('A0'))
def init():#初始化
t.pulse_width_percent(10)
time.sleep(2)
t.pulse_width_percent(5)
def stop():#停止
t.pulse_width_percent(5)
def set(n):#设置速度 n是百分比值 0-100%
for i in range(n):
t.pulse_width_percent(5 + i*5/100)
time.sleep(0.1)
time.sleep(5)
stop()
设置好了之后,电机终于转起来了!若是正常使用,以后就不需要再次校准了。
以上代码可以在REPL里面使用
import main
main.init()
main.set(30)
此时电机应该转起来了。