提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、简介
- 二、工作原理
- 三、使用前准备
- 四、测试方法
- 五、实验现象
一、简介
L9110电机驱动模块采用推挽式功率放大,设有固定安装孔,适合组装,工作电压为2.5-12V,最大工作电流为0.8A,可以同时驱动2个直流电机或者1个4线2相式步进电机。
二、工作原理
我们控制有刷直流电机主要是控制输出轴的旋转方向和旋转速度,通过H桥电路控制输出轴的旋转方向。关闭左上角和右下角的开关可以电机顺时针旋转,关闭右上角和左下角的开关可以使电机逆时针旋转,从而达到控制电机输出轴的旋转方向(工作原理图如下图所示)。输出轴的旋转方向可以通过PWM来控制。
三、使用前准备
两路电机驱动 H桥 L9110 电机驱动模块 步进电机 | 1个 |
---|---|
原装正版Arduino uno r3开发板 | 1个 |
USB2.0打印机数据线高速方口连接转接线 A公对B公 | 1条 |
130直流电机 | 2个 |
杜邦线 | 若干 |
四、测试方法
用USB2.0打印机数据线高速方口连接转接线与Arduino uno r3开发板连接在一起。Arduino uno r3开发板的3,5,6和9引脚分别接L9110 电机驱动模块IA1,IB1,IA2和IB2连接在一起,再和130电机连接(注意L9110电机驱动模块使用外部供电),如下图所示
代码如下:
/*
* DC电机 运行状态 IN1 IN2 IN3 IN4
* 电机A 正转(调速) 1/PWM 0
* 电机A 反转(调速) 0 1/PWM
* 空转 0 0
* 刹车 1 1
* 电机B 正转(调速) 1/PWM 0
* 电机B 反转(调速) 0 1/PWM
* 空转 0 0
* 刹车 1 1
* This example code is in the public domain.
*/
// XY-2.5AD 连接Arduino引脚编号
int IN1 = 3;
int IN2 = 5;
int IN3 = 6;
int IN4 = 9;
int pinNum; // 控制引脚号
int ctrlVal; // 电机运行控制
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) { // 检查串口缓存是否有数据等待传输
char cmd = Serial.read(); // 获取电机指令中电机编号信息
switch(cmd){
case 'p': // 设置引脚编号
pinNum = Serial.parseInt();
Serial.print("Pin Number ");
Serial.print(pinNum);
Serial.print(" ,");
break;
case 'a': // 模拟模式控制电机
ctrlVal = Serial.parseInt();
analogWrite(pinNum, ctrlVal);
Serial.print("Set Value ");
Serial.print(ctrlVal);
Serial.println(".");
break;
case 'd': // 数字模式控制电机
ctrlVal = Serial.parseInt();
digitalWrite(pinNum, ctrlVal);
Serial.print("Set Value ");
Serial.print(ctrlVal);
Serial.println(".");
break;
default: // 未知指令
Serial.println("Unknown Command");
break;
}
}
}
五、实验现象
输入p3d1p5d0第一个电机正转,输入p6d0p9d1第二个电机反转。