Arduino UNO用L9110 电机驱动模块驱动两个直流电机

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、简介

L9110电机驱动模块采用推挽式功率放大,设有固定安装孔,适合组装,工作电压为2.5-12V,最大工作电流为0.8A,可以同时驱动2个直流电机或者1个4线2相式步进电机。

二、工作原理

我们控制有刷直流电机主要是控制输出轴的旋转方向和旋转速度,通过H桥电路控制输出轴的旋转方向。关闭左上角和右下角的开关可以电机顺时针旋转,关闭右上角和左下角的开关可以使电机逆时针旋转,从而达到控制电机输出轴的旋转方向(工作原理图如下图所示)。输出轴的旋转方向可以通过PWM来控制。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

原理图

三、使用前准备

在这里插入图片描述

点击图片购买

两路电机驱动 H桥 L9110 电机驱动模块 步进电机

在这里插入图片描述

点击图片购买

130直流电机

在这里插入图片描述

点击图片购买

原装正版Arduino uno r3开发板

在这里插入图片描述

点击图片购买

USB2.0打印机数据线高速方口连接转接线 A公对B公

在这里插入图片描述

点击图片购买

杜邦线
两路电机驱动 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第二个电机反转。

猜你喜欢

转载自blog.csdn.net/qq_42250136/article/details/130606103
今日推荐