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

1、驱动模块介绍

电机驱动模块一般使用的都是L298N作为主控芯片
在这里插入图片描述
样子如图所示
在这里插入图片描述
当用单片机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电压
在这里插入图片描述
ps::第一种方法的提高电压较小,轮子转速不足,可能无法进行调速

2)第二种方法(建议)

当接入7~12V电压时,正5V不需要接电压,其可以输出5V的电压供单片机使用。中间那个接单片机的GND。
在这里插入图片描述
ps:由于5v供电口可以输出5v的电压,可以直接拿来为单片机供电

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

当输入的电压大于12V小于24V时,需要拔掉电源旁的跳线帽,5V端需要接入5v的电压,GND还是接GND。
在这里插入图片描述
ps:第三种方法的输入电压较大,PWM调速的时候怕对单片机造成影响,所以我用的是第二种方法

3、驱动模块的使用方法

在这里插入图片描述

  • 使用方法:

输出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单片机版本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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 驱动电机与单片机的线路连接图
L298N模块的连接与使用(stm32驱动与51驱动)

### 回答1: L298N 模块是一种常用的驱动直流电机的电路模块,它可以帮助电机控制电路实现方向和速度的控制。在使用 L298N 模块控制电机时,可以使用 PWM 调节电机的转速,下面是使用 L298N 模块驱动电机实现 PWM 调速的基本步骤: 1. 将 L298N 模块与 Arduino 或其他单片机连接,确保连接正确,参考模块和单片机的引脚说明书。 2. 连接电机,将电机的正极和负极分别连接到模块的 OUT1 和 OUT2 引脚,或 OUT3 和 OUT4 引脚上。 3. 在代码中初始化 L298N 模块,设置引脚模式和初始电平状态。 4. 使用 PWM 函数控制电机的转速,可以根据需要调整 PWM 占空比来控制电机的速度。 5. 控制电机的方向,通过改变模块的使能引脚(ENA 和 ENB)的电平状态,实现正转和反转。 以下是一个简单的示例代码使用 L298N 模块控制电机的转速和方向,实现 PWM 调速: ``` // 定义引脚 int enA = 10; int in1 = 9; int in2 = 8; void setup() { // 设置引脚模式 pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); } void loop() { // 设置 PWM 占空比,控制电机速度 analogWrite(enA, 200); // 控制电机方向,实现正转 digitalWrite(in1, HIGH); digitalWrite(in2, LOW); delay(5000); // 延迟 5 秒 // 控制电机方向,实现反转 digitalWrite(in1, LOW); digitalWrite(in2, HIGH); delay(5000); // 延迟 5 秒 } ``` 在上述代码中,我们使用了 Arduino 的 `analogWrite()` 函数来设置 PWM 占空比,控制电机的转速。使用 `digitalWrite()` 函数控制模块的使能引脚和电机的方向。在 `loop()` 循环中,我们控制电机先正转 5 秒,再反转 5 秒,实现电机的周期性运动。 ### 回答2: L298N模块是一个常用的直流电机驱动模块。它能够驱动两个直流电机,最大输出电流可以达到2A,支持PWM调速。 使用L298N模块驱动电机,需要先将直流电源连接到模块的电源接口上。接着,将电机连接到模块的输出端口和控制信号端口上。 L298N模块的控制信号来自于单片机或其他控制器。需要提前设定好电机速度、方向等参数。控制信号通过L298N模块的控制接口发送给模块,模块根据这些信号控制电机转动。其中,PWM调速是通过控制信号的脉宽来实现的。 为了实现PWM调速,需要将控制信号接到模块的使能端口上。根据控制信号的高低电平,模块会给电机发送不同的电流,从而实现不同的转速。在实际应用中,可以通过改变脉宽来调节电机的转速。 总之,L298N模块是一种非常实用的电机驱动器,可以轻松驱动直流电机,并提供PWM调速的功能,是众多电子制作和机器人控制项目的不可或缺的组成部分。 ### 回答3: l298n模块驱动电机是一种常用的电机驱动模块,可以用来驱动直流电机和步进电机。其使用场景非常广泛,常见于机器人、小车、航模等各种电子设备中。 l298n模块的主要功能是将微控制器输出的PWM信号经过驱动电路放大后,通过电机输出来实现电机调速。使用l298n模块可以实现电机的正转、反转和调速功能,可以满足各种应用场景的需求。 l298n模块的接线非常简单,只需要将模块的VCC、GND、IN1、IN2、EN1和EN2引脚依次连接到微控制器的正负电源、PWM信号输出、以及电机的正负极。在编写代码时,可以利用PWM信号调节EN1和EN2引脚输出的占空比,从而控制电机的转速。 在使用l298n模块驱动电机时,需要注意一些问题。首先,需要根据实际需要选择合适的电机,同时保证电机的电压和电流范围在l298n模块的支持范围之内。其次,需要根据实际情况调整PWM信号的占空比,以达到理想的电机转速。最后,还需要注意模块的供电和散热问题,以保证模块的正常工作和使用寿命。 总的来说,l298n模块驱动电机是一种非常实用的电机驱动模块,可以帮助开发者快速搭建各种电子设备。在使用过程中,需要注意一些问题,但只要注意到这些问题,就可以用它来实现各种电机调速的要求。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clichong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值