电动滑板攻略 - 无刷电机控制原理
动力老男孩发布于 2015-05-14 18:13
PWM是“怕玩命”的缩写,英文写法是“Pulse-width modulation”,也有些外行人士把它翻译成“脉冲宽度调制”。对于没有听说过PWM的同学,请先参考一下我的另一篇博客Arduino的模拟输入和输出。
简单的说,对于传统的控制信号,假设最高速的时候控制电压是1,那么可以输出0.5来表示一般的速度。但是对于单片机来说,输出0和1是方便的,输出0.5会比较麻烦。这种情况了,可以快速的在0和1之间切换,达到的效果就和0.5很相似了。
电调的控制,就是使用了PWM的方式。不过它不是通过占空的比例来控制转速,而是用1的脉冲宽度来判断:
输出高电平2.1ms左右,表示最大值;
输出高电平0.9ms左右,表示最小值。
下面这段代码,用蓝牙发送0~100的数值给单片机,就可以模拟航模摇杆从油门最小推到最大的情况:
#include <Servo.h> #include <SoftwareSerial.h> SoftwareSerial mySerial(11, 5); int motorPin = 12; // 用于控制电机的管脚 Servo powerServo; void setup() { mySerial.begin(9600); powerServo.attach(motorPin); } void loop() { double T = 2500; // 脉冲周期2.5ms,相当于400Hz long t0 = micros(); // 记录当前时间 int readPower = 50; //默认是中点位置50 while(mySerial.available()) { // 从蓝牙输入一个0~100的值 readPower = mySerial.read(); } double len = 900 + readPower * 12; //(0~100对应总周期0.9ms~2.1ms) powerServo.writeMicroseconds(len); int leftMs = (int) (t0 + T - micros()); //休眠到下一个周期继续循环 delayMicroseconds(leftMs); }
需要注意的是,航模和车模的电调操控方式是不同的。航模的油门是从最低点开始,推到头是最大值;而车模的电调平时处于中点位置,向上推到头表示加速,向下拉到头表示刹车。滑板就是使用的车模电调模式,也就是说高电平从 1.5ms~2.1ms是加速区域、从1.5ms~0.9ms是刹车区域。
好盈的电调一般都支持很多模式,另外还有很多可选的参数。如果想修改它的模式,可以按住小按钮后接通电源,然后按照说明书的提示进行设置。
不差钱的同学可以买一个编程器,插上电调之后可以直接设置。
>> 输出高电平2.1ms左右,表示最大值;输出高电平0.9ms左右,表示最小值。
动力哥,这个周期是业界标准吗? 你的150A电调比较贵,我想入个120A 华沃瑞 勇狼。不知道控制周期是不是也一样?
作者的最新随笔
-
愚蠢的地球人:为什么太阳和月亮看上去一样大?
2016-12-12 17:11发布
-
手机端遥控程序
2016-01-23 23:48发布
-
电滑板攻略-手持遥控器
2015-06-08 23:45发布
-
电滑板攻略 - 主控板程序
2015-05-21 22:22发布
-
电动滑板攻略 - 蓝牙控制原理
2015-05-18 19:10发布
阅读数: 80817