Arduino实现L298N控制直流电机正反转和调速的方法

Arduino驱动L298N控制直流电机的正反转和调速

  • 一、前言
  • 二、产品参数
  • 三、驱动直流电机
  • 三、接线图
  • 四、程序
  • 五、实验结果
  • 总结
  • 一、前言

    本模块使用ST公司的L298N作为主驱动芯片,具有驱动能力强,发热量低,抗干扰能力强的特点。LN298N可以用来驱动直流电机和步进电机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电平在低电压下工作。模块使用大容量滤波电容,续流保护二极管,可以提高可靠性。

    二、产品参数

    1.驱动芯片:L298N 双 H 桥直流电机驱动芯片
    2.驱动部分端子供电范围 Vs:+5V~+35V ; 如需要板内取电,则供电范围 Vs:+7V~+35V
    3.驱动电流 :2A
    4.逻辑部分端子供电范围 Vss:+5V~+7V(可板内取电+5V)
    5.逻辑部分工作电流范围:0~36mA
    6.控制信号输入电压范围:
    低电平:-0.3V≤Vin≤1.5V
    高电平:2.3V≤Vin≤Vss
    7.使能信号输入电压范围:
    低电平:-0.3≤Vin≤1.5V(控制信号无效)
    高电平:2.3V≤Vin≤Vss(控制信号有效)
    8.最大功耗:25W(温度 T=75℃时)
    9.存储温度:-20℃~+135℃

    三、驱动直流电机

    1.控制直流电机正反转的状态图如下:


    2.对直流电机进行 PWM 调速,设置 IN1 和 IN2信号分别为0,1,电机的转动方向为反转,然后对使能端输出 PWM 脉冲,即实现直流电机的速度从小到大调速。
    3.利用电位器读取值实现脉宽调制调速。

    三、接线图

    Arduino L298N 直流电机 电位器模块 电源
    9 ENA
    8 IN1
    5V V
    GND GND GND GND
    A0 S
    Out1 任意引脚
    Out2 任意引脚
    +12V 9V

    四、程序

     #define ENA 9
    #define IN1 8
    #define IN2 7
    void setup()
    {
    pinMode(ENA,OUTPUT);
    pinMode(IN1,OUTPUT);
    pinMode(IN2,OUTPUT);
    Serial.begin(9600);
    }
    void loop()
    {
    //Pos_NegRotation();//控制电机正反转
    //PWMcontrol();//脉宽调制速度从小到大
    Potentiometer();//利用电位器读取实现脉宽调制调速
    }
    void Pos_NegRotation()//控制电机正反转
    {
    analogWrite(ENA,60);
    digitalWrite(IN1,HIGH);//反转2秒
    digitalWrite(IN2,LOW);
    delay(2000);
    digitalWrite(IN1,HIGH);//刹车停2秒
    digitalWrite(IN2,HIGH);
    delay(2000);
    digitalWrite(IN1,LOW);//正转2秒
    digitalWrite(IN2,HIGH);
    delay(2000);
    digitalWrite(IN1,LOW);//刹车2秒
    digitalWrite(IN2,LOW);
    delay(2000);
    }
    void PWMcontrol()//脉宽调制速度从小到大
    {
    int i;
    digitalWrite(IN1,LOW);//反转
    digitalWrite(IN2,HIGH);
    for(i=0;i<=255;i++)
    {
     Serial.print("Value_i=");
     Serial.println(i);
     analogWrite(ENA,i);
     delay(20);
     }
    digitalWrite(IN1,HIGH);//刹车停2秒
    digitalWrite(IN2,HIGH);
    delay(2000); 
    }
    void Potentiometer()//利用电位器读取值实现脉宽调制调速
    {
    int pValue=analogRead(A0);
    //读取电位器的数值:0-1023
    int PWMout=map(pValue,0,1023,0,255);
    //把0-1023的数值映射 到0-255 
    Serial.print("PWMot=");//串口打印数值
    Serial.println(PWMout);
    analogWrite(ENA,PWMout);
    //把获得的0-255数值写入使能口=D9
    digitalWrite(IN1,HIGH);//反转1秒
    digitalWrite(IN2,LOW);
    delay(1000);
    }
    

    五、实验结果

    电机正反转:

    脉宽调速串口显示:

    电位器调速:

    总结

    注意:Arduino 、L298N、电位器和电源要共地。

    物联沃分享整理
    物联沃-IOTWORD物联网 » Arduino实现L298N控制直流电机正反转和调速的方法

    发表评论