前言:有玩过车模/航模/车模的可能都知道,更换电调,只需要按说明书把口子一接就好了,那么自己用arduino或者单片机又要怎么控制电调来驱动电机呢?这里,我就介绍一下怎么用esp8266来控制电调驱动有刷电机。 (一)首先,我们先介绍一下我使用的电调:火凤凰 480A 风冷有刷双向电调(大家可淘宝自行搜索)。长下面这样: 这里呢 1.电源线就不用介绍怎么接了吧,认好红线,接头也有防呆设计,不用担心接反 2.电机接线随便接就好啦 3.电调电源开关,嗯嗯(o)/ 4.电调信号线:需要特别注意的,有3条线,一条电源,一条GND,一条控制电调的信号线。这里呢如果单片机是单独供电的,只需要接信号线和GND就可以了。经常有小伙伴把电源线错当成是单片机对电调供电,其实是电调对单片机的供电线,然后就烧了,O(∩_∩)O哈哈~ (二)然后是电调的参数: 这里看图就好,根据参数选择电池、电机,需要注意的是480A是瞬间电流,平时的工作电流是80A/60A。 (三)电调的模式选择 这里也是按需选择,电调上有滑动按钮选择电池类型和电机驱动模式。这里我用的是锂电池(往左滑)和攀爬模式(滑到中间)。下面代码也是用于攀爬模式,其它模式可简单修改。这里也是个注意点,比如你选了单向和双向,那么你想控制电机向正转然后马上反转,对不起,代码写对了也做不到。 (四)重点来了,讲怎么驱动电调了。 1.首先要明白,电调是用来控制电机的转速和方向的; 2.**电调是通过PWM信号控制的,且PWM的频率为50HZ=20ms,高电平脉冲只能处于1ms-2ms;电机转向和速度中位为高电平脉冲1.5ms,即高电平脉冲从1.5ms到2ms的时候,电机正向转,然后随着高电平脉冲宽度逐渐变大转速也逐渐变大,2ms的时候转速封顶。高电平脉冲从1.5ms到1ms的时候,电机反转,然后随着高电平脉冲宽度逐渐变窄转速逐渐变大,1ms的时候封顶。**这里和舵机控制有点类似,舵机也是通过50hz的PWM信号来控制转向的,当高电平脉冲为1.5ms的时候,舵机归中,处于90°转态。然后高电平脉冲宽度在1ms到2ms(实际上是0.5ms到2.5ms)之间分别映射到0°到180°。如脉冲为1ms的时候,舵机左转90度,脉冲为2ms的时候舵机右转90度。 下面就不多说了,上代码:
#include <Servo.h> //包含伺服电机的库文件 Servo ESC; void setup() { //设定产生PWM的引脚,最小脉宽和最大脉宽 ESC.attach(4,1000,2000); } void loop() {//实现电机正转加速和反转加速 for(byte i=90;i>0;i--){ ESC.write(i); // 发送不同脉宽PWM信号给电调 delay(500); //延时方便观察反转的加速过程 } for(byte i=90;i<180;i++){ ESC.write(i); //发送不同脉宽PWM信号给电调 delay(500); //延时方便观察正转的加速过程 } }
1.这里需要包含伺服电机的库文件,原因很简单,能严格产生50hz的PWM波,不需要自己去用数字信号模拟,或者自己用定时器产生,何乐而不为。 2.setup()这里需要在初始化的时候设置脉宽最大最小值。然后就可以将控制舵机用的0到180映射到1000到2000啦。然后控制引脚选的是4号脚。 3.loop()实现了电机反转逐渐加速和正转逐渐加速的过程。
好啦,现在是2022/4/15,18:37.文章就写到这里了。如果有不明白的,觉得我写到不好的,可以参考另一篇文章,毕竟笔者也是从人家那里学的。下附链接:传送门在这里 最后,附上本人电机疯狂转动的视频:点击下方链接: esp8266控制New Rain火凤凰480A电调控制直流电机 需要程序交流或者开发远程智能小车的,可以加Q群:975786188。添加时候记得说明来处哦!!!!