L298N电机驱动模块的接线使用与代码实现

简介: L298N电机驱动模块的接线使用与代码实现

1、驱动模块介绍


电机驱动模块一般使用的都是L298N作为主控芯片

image.png

样子如图所示

image.png

当用单片机5V电源给L298N供电驱动5V的小马达时,驱动模块的12V和5V都接单片机的5V(这样可以动,但轮子转动的速度不快,详细查看下面的连接方法)GND一定得接单片机的GND,也就是一定要与单片机共地。

第一排6个排针接单片机的IO口就可以了。其中IN1到IN4为马达逻辑输入,控制其正转和反转。以左边马达为例当IN1=0,IN2=1时为正转。IN1=1,IN2=0时为反转。待机则全为0,刹车则全为1。ENA和ENB为两马达的使能,需要调速的时候就把那两个使能的跳线帽直接拔掉,然后在第一个入口接入一个PWM信号即可。(PWM调速可以参考我的另外一篇文章)


2、驱动模块的连线方法


1)第一种方法(不建议)

12V供电口和5V供电口都接入单片机的5V电压

20201222210752930.png

ps::第一种方法的提高电压较小,轮子转速不足,可能无法进行调速


2)第二种方法(建议)

当接入7~12V电压时,正5V不需要接电压,其可以输出5V的电压供单片机使用。中间那个接单片机的GND。

2020122221093138.png

ps:由于5v供电口可以输出5v的电压,可以直接拿来为单片机供电


3)第三种方法(不建议)

当输入的电压大于12V小于24V时,需要拔掉电源旁的跳线帽,5V端需要接入5v的电压,GND还是接GND。

20201222211021937.png

ps:第三种方法的输入电压较大,PWM调速的时候怕对单片机造成影响,所以我用的是第二种方法


3、驱动模块的使用方法


image.png

  • 使用方法:

输出A: 通道A输出 ,连接电机

输出B: 通道B输出 ,连接电机

12V供电: 主电源正极输入

供电GND: 主电源正负极极输入

5V输出: 5v电压输出端,可用于给MCU供电

ENA: 通道A使能 ,pwm信号连接(调速使用)

ENB: 通道B使能 pwm信号连接(调速使用)

IN1~IN4: 逻辑输入IN1 ~ IN2控制通道A,逻辑输入IN3~IN4控制通道B

板载5V跳线帽: 接上后板载5V输出有效


4、参考代码


1)52单片机版本

image.png

image.png

image.png


2)stm8版本(自写)

// 关于电机驱动的宏定义
#define RightIN1 PH_ODR_ODR0    //定义为输出量
#define RightIN2 PH_ODR_ODR1
#define LeftIN1  PH_ODR_ODR2     //定义为输出量
#define LeftIN2  PH_ODR_ODR3
void Motor_Init(void)
{
   //设置Ph0-3端口为推挽低速输出
  PH_DDR_DDR0 = 1;  
  PH_CR1_C10 = 1;    
  PH_CR2_C20 = 0;    
  PH_DDR_DDR1 = 1;  
  PH_CR1_C11 = 1;    
  PH_CR2_C21 = 0;  
  PH_DDR_DDR2 = 1;  
  PH_CR1_C12 = 1;    
  PH_CR2_C22 = 0;  
  PH_DDR_DDR3 = 1;  
  PH_CR1_C13 = 1;    
  PH_CR2_C23 = 0;  
}
//小车左转
void Motor_TurnLeft(void)
{
    RightIN1 = 0;
    RightIN2 = 1;
    LeftIN1 = 1;
    LeftIN2 = 1;
  //  delay_ms(2000);
}
//小车右转
void Motor_TurnRight(void)
{
    RightIN1 = 1;
    RightIN2 = 1;
    LeftIN1 = 1;
    LeftIN2 = 0;
  //  delay_ms(2000);
}
//小车直走
void Motor_GoForward(void)
{
    RightIN1 = 0;
    RightIN2 = 1;
    LeftIN1 = 1;
    LeftIN2 = 0;
  //  delay_ms(2000);
}
//小车倒退
void Motor_GetBack(void)
{
    RightIN1 = 1;
    RightIN2 = 0;
    LeftIN1 = 0;
    LeftIN2 = 1;
  //  delay_ms(2000);
}
void Motor_BeParking(void)
{
    RightIN1 = 1;
    RightIN2 = 1;
    LeftIN1 = 1;
    LeftIN2 = 1;
}



5、常见问题


1)电机不会转动?

(1)有响声但是齿轮不转,可能是电压不够,加大电压

(2)接线存在错误,没有与MCU共地等

(3)逻辑端编程错误,没有正确的使能

2)关于ENA和ENB上面的跳线帽要不要拔去?

如果只是需要转动马达就不需拔去,如果需要调试,就需要拔去然后直接接入一个PWM信号


参考链接:

L298N 驱动电机与单片机的线路连接图

目录
相关文章
【单片机】按键声光报警实验(蜂鸣器)
【单片机】按键声光报警实验(蜂鸣器)
685 0
|
编解码
STM32:PWM驱动舵机(内含:1.接线原理图/实物图+2.代码部分+3.补充知识部分)
STM32:PWM驱动舵机(内含:1.接线原理图/实物图+2.代码部分+3.补充知识部分)
1395 1
STM32:PWM驱动舵机(内含:1.接线原理图/实物图+2.代码部分+3.补充知识部分)
|
6月前
|
数据采集 传感器 数据处理
LabVIEW步开发进电机的串口控制程序
LabVIEW步开发进电机的串口控制程序
44 0
|
异构计算
实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计(上)
实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计(上)
922 0
实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计(上)
|
传感器 芯片
可编程 USB 转串口适配器开发板与振弦传感器测量模块
当通过 IIC 接口修改 VM5xx 单个寄存器后,被修改的寄存器立即保存(断电不丢失),但连续寄存器的写入仅当时修改生效,模块重启后会自动恢复。为了能够使寄存器永久保存,可以单独向功能寄存器 03 写入指令码 0x000C 来强制保存所有寄存器。
可编程 USB 转串口适配器开发板与振弦传感器测量模块
舵机应该如果选择?讲讲模拟舵机,数字舵机和总线舵机的区别
舵机应该如果选择?讲讲模拟舵机,数字舵机和总线舵机的区别
1179 0
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
408 1
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
721 0