首页 > 其他分享 >一文看懂智能循迹小车的L298N电机驱动模块到底怎么用

一文看懂智能循迹小车的L298N电机驱动模块到底怎么用

时间:2024-07-01 20:28:17浏览次数:20  
标签:输出 使能 循迹 电机 L298N 单片机 模块 驱动

一、L298N电机驱动模块有什么用?

   我们在做单片机智能循迹小车的时候,经常看到上面有一个L298N电机驱动模块一端连接着小车的电机,另一端连接着单片机的IO口。

    那为什么没有直接用单片机的IO口控制电机呢?

   其中一个原因就是单片机输出的功率较小,不足以驱动电机工作。这时候就需要外接一个驱动模块,这个驱动模块工作电压高、输出电流大、驱动能力强、发热量低、输出功率高等优点,单片机的IO口只需要控制这个驱动模块的工作,即可实现小功率控制大功率的效果。这种方法与继电器小电流控制大电流很相似。

图片

   因此,每当遇到外接设备的工作功率较大,单片机IO口无法直接驱动时,往往都会在中间接一个驱动模块,驱动模块负责输出较大功率来驱动外接设备,单片机IO口负责控制驱动模块。电动小车就是很典型的一个例子: 

     一个电动小车整体的运行,首先依赖于它的电机驱动模块。电机驱动模块主要功能是驱动小车的电机转动,从而使小车轮子转动,让小车行进。

    常用的电机驱动芯片有L297/298 、MC33886 、3L4428等。今天我们主要对L298进行介绍。我们的学习目的就是通过电机驱动模块,驱动电机并且控制电机的转速和正转反转,最终同时驱动两个电机,完成控制小车的轮子转动。

图片

二、L298N电机驱动模块

        L298N可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。

图片

引脚定义
  • VCC:驱动电源正(在图示模块中可使用5V或12V)

  • GND:驱动电源地

  • Out1 Out2 Out3 Out4:功率输出(out1和out2是输出A,out3和out4是输出B)

  • IN1 IN2 IN3 IN4:逻辑输入控制( IN1和IN2是控制输出A的,IN3和IN4是控制输出B的)

  • ENA:IN1 & IN2 使能(TTL高电平使能),进而控制输出A工作。

  • ENB:IN3 & IN4 使能(TTL高电平使能),进而控制输出B工作。

其中 ENA 和 ENB 在市面上有部分模组中可能未透出给开发者,此时它们默认连接至芯片内部的VDD,即默认使能。

图片

下面的表格是逻辑输入端IN1、IN2、IN3、IN4以及使能端ENA、ENB与电机转动的关系。

逻辑输入控制电机状态
ENA和ENBIN1(或IN3)IN2(或IN4)电机状态
PWM输出或0XX停止
PWM输出或100制动
PWM输出或101正转
PWM输出或110反转
PWM输出或111制动

三、接线:

如果只驱动一个电机,接线方面如下:

  • 输出A的OUT1与OUT2 ——> 电机的两端

  • 12V供电 ——> 7-12V电源

  • 供电GND ——> GND (与单片机共地)

  • ENA ——> 单片机IO口 (可自己定义,需要具备PWM功能的IO口)

  • IN1、IN2 ——> 单片机IO口 (可自己定义)

如果要驱动两个电机,同理即可。下图是循迹小车两个电机的接线示意图,单片机io口可自己选择。

图片

四、关键部分代码

我们可以根据前面提到的表格设置电机驱动模块上四个逻辑输入引脚来确定电机状态。

逻辑输入控制电机状态
ENA和ENBIN1(或IN3)IN2(或IN4)电机状态
PWM输出或0XX停止
PWM输出或100制动
PWM输出或101正转
PWM输出或110反转
PWM输出或111制动
 

下面就以51单片机为例,结合L298N电机驱动模块的接线图,编写单片机控制电机驱动模块的代码,本代码案例暂不考虑使用PWM算法,只是简单的控制ENA和ENB使能端,PWM算法另起一篇文章介绍。


#include <reg51.h>


sbit IN1=P1^1 ; //定义逻辑输入的io口,根据电机驱动模块的接线选择对应的单片机端口 
sbit IN2=P1^2 ;
sbit IN3=P1^3 ;
sbit IN4=P1^4 ;

sbit ENA=P3^6 ; //定义使能端的io口,根据电机驱动模块的接线选择对应的单片机端口 
sbit ENB=P3^7 ;

//前进 ,左轮和右轮都正转。
void go(){
  ENA=1; //使能输出A 
  IN1=0 ; // 右轮 正转 
  IN2=1 ;
  
  ENB=1;  // 使能输出B 
  IN3=0;  //左轮 正转 
  IN4=1;
}

//后退 ,左轮和右轮都反转。
void back(){
  ENA=1; //使能输出A 
  IN1=1 ; // 右轮 反转 
  IN2=0 ;
  
  ENB=1;  // 使能输出B 
  IN3=1;  //左轮 反转 
  IN4=0;
}

//向左转弯 ,左轮不动,右轮都正转前进。
void turnLeft(){
  ENA=1; //使能输出A 
  IN1=0 ; // 右轮 正转 
  IN2=1 ;
  
  ENB=1;  // 使能输出B 
  IN3=0;  //左轮 不动 
  IN4=0;
}

//向右转弯 ,右轮不动,左轮都正转前进。
void turnRigth(){
  ENA=1; //使能输出A 
  IN1=0 ; // 右轮 不动 
  IN2=0 ;
  
  ENB=1;  // 使能输出B 
  IN3=0;  //左轮 正转 
  IN4=1;
}

//制动 ,左轮右轮都不转。
void stop(){
  ENA=0; //关闭输出A 
  IN1=0 ; // 右轮 不动 
  IN2=0 ;
  
  ENB=0;  // 关闭输出B 
  IN3=0;  //左轮 不动 
  IN4=0;
}

void main(){
  
  while(1){
    go();//调用前进函数,让小车一直前进 
  } 
  
}

标签:输出,使能,循迹,电机,L298N,单片机,模块,驱动
From: https://blog.csdn.net/u011818860/article/details/140098254

相关文章

  • DI DO IO模块 测试备忘
    DI  DO IO模块 测试备忘DI  DO IO模块 测试备忘电压:12v还是24v接近开关:买常开,还是常闭。串口线:公接2、3、5母接3、2、5端口。下面就是没板时候采集是true,有板时候是false。板就是一个东西,有板就是有东西放到接近开关   erwa.cn二娃备忘 ......
  • BOSHIDA 探讨DC/AC电源模块为绿色能源应用提供可靠的转换解决方案
    BOSHIDA探讨DC/AC电源模块为绿色能源应用提供可靠的转换解决方案DC/AC电源模块是一种能够将直流电源转换为交流电源的装置。随着绿色能源的不断发展和应用,DC/AC电源模块在可再生能源、电动车辆、太阳能发电等领域中扮演着重要的角色。本文将着重探讨DC/AC电源模块为绿色能源应用......
  • 深入理解Java核心技术模块化局部变量类型推断
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)深入理解Java......
  • DH11温湿度检测模块
    目录DHT11温湿度传感器检测模块是否存在:使用LED检测DHT11模块是否接在设备上:读取温湿度数据:DHT11温湿度传感器 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗;自动控制特点......
  • DH11温湿度检测模块、lcd1602、HC-08蓝牙构成温湿度数据管理系统
    目录温湿度通过串口上传PC: 温湿度数据管理系统:温湿度通过串口上传PC:sendByte(datas[0]/10+0x30);sendByte(datas[0]%10+0x30);这两行代码用于将一个字节(是DHT11传感器读取的湿度或温度的整数部分)转换为两个ASCII字符,并通过UART串口发送出去。+0x30:在ASCII......
  • python异常、模块与包
    目录了解异常异常的捕获方法python模块python包安装第三方包了解异常什么是异常当检测到一个错误时,python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUGbug单词的诞生早期计算机采用大量继电器工作,马克二型计算机就是......
  • 模块化编程(二)
    模块的导入经常有这样一句话:“不要重复造轮子”,知道别人已经造好了轮子,并且轮子也好用,那就直接拿别人的轮子来用,此处的“模块导入”就是“拿别人的轮子过来”。前文提到模块化编程的好处之一就是“代码复用性高”。写好的模块可以被反复调用,模块的导入就是“在本模块中使用其......
  • 中台框架模块开发实践-用 Admin.Core 代码生成器生成通用代码生成器的模块代码
    前言之前分享中台Admin.Core的模块代码生成器,陆续也结合群友们的反馈,完善了一些功能和模板上的优化,而本篇将基于此代码生成器生成一个通用代码生成器模块的基本代码后续再在此代码的基础上进行完善,制作一个通用的代码生成器要做一个项目,首先我们要弄清楚需求,这里简单规划了......
  • 【YOLOv8改进 - 注意力机制】NAM:基于归一化的注意力模块,将权重稀疏惩罚应用于注意力机
    YOLO目标检测创新改进与实战案例专栏专栏目录:YOLO有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLO基础解析+创新改进+实战案例摘要识别较不显著的特征是模型压缩的关键。然而,这在革命性的注意力机制......
  • 【重写SpringFramework】第一章beans模块:本章小结(chapter 1-13)
    1.前言在Spring框架中,beans模块是仅次于core模块的基础模块。我们知道,IOC机制是Spring框架的两大基石之一,beans模块的主要任务就是实现控制反转和依赖注入的功能。从具体实现来说,BeanFactory接口是整个模块的核心接口,几乎所有功能都是围绕对象展开的。BeanFacto......