电机驱动板

作者:hardihuang   hardihuang   |   贡献者:   Sunny   

一、概述 #


我们可以通过简单地控制直流电动机的输入电压来控制直流电动机的速度,最常用的方法是使用PWM信号。

二、PWM直流电动机控制 #


PWM或脉冲宽度调制是一种技术,它使我们能够通过快速打开和关闭电源来调整流向电子设备的电压平均值。平均电压取决于占空比,或者信号开启的时间量与信号在单个时间段内关闭的时间量有关。

PWM为什么能调速呢
我们可以想象你在0-100米的一条跑道上骑车子,第一次你全程100%的时间都在蹬踏板,全速前进,而第二次你只有在前半段50%的时间是蹬踏板的,其余时间让自行车自由滑行,相比之下,肯定第一次自行车移动的速度更快。- From 森宝老师

因此,根据电机的大小,我们可以简单地将Arduino PWM输出连接到晶体管的基极或MOSFET的栅极,并通过控制PWM输出来控制电机的速度。低功率Arduino PWM信号在MOSFET的栅极上打开和关闭,通过该MOSFET驱动高功率电机。

三、H桥直流电动机控制 #


另一方面,为了控制旋转方向,我们只需要反转流过电动机的电流的方向即可,最常见的方法是使用H桥。

H桥电路包含四个开关元件(晶体管或MOSFET),并且位于中心的电机形成类似H的配置。通过同时激活两个特定的开关,我们可以改变电流的方向,从而改变电动机的旋转方向。因此,如果我们结合使用PWM和H桥这两种方法,就可以完全控制直流电动机。

S1S2S3S4电机状态
1001电机正传
0110电机反转
0000电机自由停止
0101电机制动
1010电机制动
H桥的四个开及电机的运动状态关系

警告

有些电机信号引脚设置为低、低是电机自由停止,而高、高则是电机制动,然而L9110S芯片不支持电机制动功能的,低、低和高、高都是电机自由停止

然而真正的驱动板中,这四个开关是用四个三极管所代替的

四、L9110s驱动板 #


电机驱动版有很多种,而我们最常见的还是使用L9110s作为驱动芯片的电机驱动板

此处我们使用MG生产的MG电机驱动板作为例子讲解

五、程序控制 #


1、mixly控制代码 #

提示

在mixly中,当调用「数字输出 管脚# 设为 高/低」模块时,mixly会默认在初始化函数增加管脚模式为输出,因此初始化中当两行管脚模式代码可以不写,但是为了让大一点的孩子理解整个程序结构,最好还是加上。

控制电机向前1s,停止1s、向后1s、停止1s。

警告

当主控板供电不稳定时(例如只用USB下载线供电时),如果让电机向前转动后突然向后转动,容易导致主控板突然掉电重启,从而看到电机不会反转当现象,因此程序中尽量在反转前增加一个停止当延时,或者供电充足当情况下再这样操作。

将电机运动语句打包成函数,方便重复调用

2、Arduino IDE控制代码 #

/*
 *Arduino motor control by Hardi Huang 2021.4.5
 *Description: motor control state: forward, backward and stop.
*/

void setup() {
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
}

void loop() {
  
  forward();
  delay(1000);
  stop();
  delay(1000);
  backward();
  delay(1000);
  stop();
  delay(1000);

}

void forward(){
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
}

void backward(){
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
}

void stop(){
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
}

六、参考习题 #


1、单片机能通过电机驱动板控制电机实现哪几种状态?

答案:正转、反转、停转、变速转

2、H桥电路中包含_____个三极管?

答案:4个

3、通过______信号,我们可以调节电机的转速?

答案:PWM信号

4、通过电机驱动板控制电机转动,至少需要几个I/O口?

答案:两个

5、请完成下方表格,要想实现右边的电机三种状态,两个I/O口的信号是怎样的?

信号A信号B电机状态
正传
反转
停转

答案:

信号A信号B电机状态
10正传
01反转
00停转

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注