美文网首页每天一点单片机知识单片机学习
MicroPython pyboard 控制 无刷电调

MicroPython pyboard 控制 无刷电调

作者: 头发旺盛的玮儿 | 来源:发表于2019-04-24 20:41 被阅读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)

此时电机应该转起来了。

相关文章

网友评论

    本文标题:MicroPython pyboard 控制 无刷电调

    本文链接:https://www.haomeiwen.com/subject/uapngqtx.html