提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、简介
 - 二、工作原理
 - 三、使用前准备
 - 四、测试方法
 - 五、实验现象
 
一、简介
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第二个电机反转。


















