当前位置: 首页 > article >正文

0基础 | L298N电机驱动模块 | 使用指南

引言

在嵌入式系统开发中,电机驱动是一个常见且重要的功能。L298N是一款高电压、大电流电机驱动芯片,广泛应用于各种电机控制场景,如直流电机的正反转、调速,以及步进电机的驱动等。本文将详细介绍如何使用51单片机来控制L298N电机驱动模块,帮助大家快速上手相关项目开发。

L298N电机驱动模块简介

L298N内部包含4通道逻辑驱动电路,可以方便地驱动两个直流电机或者一个两相步进电机。它具有以下主要特点:

  • 高电压、大电流:能够提供高达46V的电压和2A的电流,满足大多数电机的驱动需求。
  • 逻辑兼容性好:可以直接与5V逻辑电平的微控制器(如51单片机)连接。
  • 控制灵活:通过控制输入引脚的电平状态,可以方便地实现电机的正反转、制动和使能等功能。

从外观上看,L298N模块通常由红色的电路板、黑色的散热片以及多个引脚和接线端子组成,如图所示:

(此处可替换为实际图片链接)

模块上的引脚功能如下:

  • 12V供电:为L298N内部电路提供工作电源,一般接12V直流电源。
  • 供电GND:电源地,与12V供电的地相连。
  • 5V供电:为L298N的逻辑电路提供5V电源,也可为5V单片机供电(注意电流限制)。
  • 板载5V使能:当该引脚接高电平时,5V供电输出有效;接低电平时,5V输出被切断。
  • 通道A使能(ENA):控制通道A(输出A)电机的使能状态,高电平有效。
  • 逻辑输入(IN1、IN2):控制通道A电机的正反转,通过不同的电平组合实现。
  • 通道B使能(ENB):控制通道B(输出B)电机的使能状态,高电平有效。
  • 逻辑输入(IN3、IN4):控制通道B电机的正反转,通过不同的电平组合实现。
  • 输出A:连接直流电机的一端或步进电机的一相。
  • 输出B:连接直流电机的另一端或步进电机的另一相。

硬件连接

电源连接

  1. 将12V直流电源的正极连接到L298N模块的12V供电引脚。
  2. 将12V直流电源的负极连接到L298N模块的供电GND引脚。
  3. 如果51单片机的工作电压为5V,可以将L298N模块的5V供电引脚连接到51单片机的5V电源引脚,同时将L298N模块的供电GND引脚也连接到51单片机的GND引脚。注意,L298N的5V供电能力有限,若同时驱动多个大电流设备,可能需要额外为51单片机提供独立的5V电源。
注意
“板载5V” 的短接口连上时,12v和GND为电源接入,5V为电源输出
通道A和通道B的使能引脚短接:可以控制两个电机的正反转
逻辑输入IN1和IN2控制OUT1和OUT2;逻辑输入IN3和IN4控制OUT3和OUT4;

电机连接

假设我们要驱动一个直流电机,将电机的两端分别连接到L298N模块的Output 1(输出A)和Output 2(输出B)引脚。

51单片机连接

  1. 使能引脚连接
    • 将51单片机的一个GPIO引脚(例如P1.0)连接到L298N模块的通道A使能引脚(ENA)。
    • 将51单片机的另一个GPIO引脚(例如P1.1)连接到L298N模块的通道B使能引脚(ENB)。
  2. 逻辑输入引脚连接
    • 将51单片机的一个GPIO引脚(例如P1.2)连接到L298N模块的逻辑输入引脚IN1。
    • 将51单片机的一个GPIO引脚(例如P1.3)连接到L298N模块的逻辑输入引脚IN2。
    • 将51单片机的一个GPIO引脚(例如P1.4)连接到L298N模块的逻辑输入引脚IN3。
    • 将51单片机的一个GPIO引脚(例如P1.5)连接到L298N模块的逻辑输入引脚IN4。

板载5V使能连接(可选)

如果需要使用L298N模块的板载5V供电功能,可以将51单片机的一个GPIO引脚连接到板载5V使能引脚,并在程序中进行控制。

软件编程

电机正反转

下面以51单片机C语言为例,给出控制直流电机正反转的代码示例:

#include <reg51.h>
#include < intrins.h>// 定义引脚
sbit ENA = P1^0;  // 通道A使能引脚
sbit ENB = P1^1;  // 通道B使能引脚
sbit IN1 = P1^2;  // 通道A逻辑输入引脚1
sbit IN2 = P1^3;  // 通道A逻辑输入引脚2
sbit IN3 = P1^4;  // 通道B逻辑输入引脚1
sbit IN4 = P1^5;  // 通道B逻辑输入引脚2// 延时函数
void delay(unsigned int time)
{unsigned int i, j;for(i = 0; i < time; i++)for(j = 0; j < 1275; j++);
}void main()
{while(1){// 电机正转ENA = 1;  // 使能通道AIN1 = 1;IN2 = 0;delay(5000);  // 延时一段时间// 电机反转ENA = 1;  // 保持通道A使能IN1 = 0;IN2 = 1;delay(5000);  // 延时一段时间// 电机停止ENA = 0;  // 失能通道Adelay(5000);  // 延时一段时间}
}

在上述代码中:

  1. 首先定义了与L298N模块连接的51单片机引脚。
  2. delay函数用于实现简单的延时功能,通过嵌套循环来消耗一定的时间。
  3. main函数中,通过改变ENAIN1IN2的电平状态来控制电机的正转、反转和停止。

电机调速

如果要实现电机的调速功能,可以使用PWM(脉冲宽度调制)技术。以定时器T0产生PWM信号控制ENA引脚为例,代码如下:

#include <reg51.h>
#include < intrins.h>// 定义引脚
sbit ENA = P1^0;  // 通道A使能引脚
sbit ENB = P1^1;  // 通道B使能引脚
sbit IN1 = P1^2;  // 通道A逻辑输入引脚1
sbit IN2 = P1^3;  // 通道A逻辑输入引脚2
sbit IN3 = P1^4;  // 通道B逻辑输入引脚1
sbit IN4 = P1^5;  // 通道B逻辑输入引脚2// 定义PWM相关变量
unsigned char PWM_Count;
unsigned char PWM_Duty;// 初始化定时器T0为PWM模式
void Timer0_Init()
{TMOD = 0x01;  // 设置定时器T0为工作方式1TH0 = 0xFE;   // 设置定时器初值,产生1ms的定时周期(假设晶振为12MHz)TL0 = 0x33;ET0 = 1;      // 使能定时器T0中断EA = 1;       // 使能总中断TR0 = 1;      // 启动定时器T0
}// 定时器T0中断服务程序
void Timer0_ISR(void) interrupt 1
{TH0 = 0xFE;   // 重新赋初值TL0 = 0x33;PWM_Count++;if (PWM_Count >= PWM_Duty){ENA = 0;  // 低电平,电机减速}else{ENA = 1;  // 高电平,电机加速}if (PWM_Count >= 100)  // PWM周期为100ms{PWM_Count = 0;}
}// 设置PWM占空比
void Set_PWM_Duty(unsigned char duty)
{PWM_Duty = duty;
}void main()
{Timer0_Init();while(1){// 电机正转并设置PWM占空比为50%

相关文章:

0基础 | L298N电机驱动模块 | 使用指南

引言 在嵌入式系统开发中&#xff0c;电机驱动是一个常见且重要的功能。L298N是一款高电压、大电流电机驱动芯片&#xff0c;广泛应用于各种电机控制场景&#xff0c;如直流电机的正反转、调速&#xff0c;以及步进电机的驱动等。本文将详细介绍如何使用51单片机来控制L298N电…...

【金仓数据库征文】金仓数据库:创新驱动,引领数据库行业新未来

一、引言 在数字化转型的时代洪流中&#xff0c;数据已跃升为企业的核心资产&#xff0c;宛如企业运营与发展的 “数字命脉”。从企业日常运营的精细化管理&#xff0c;到战略决策的高瞻远瞩制定&#xff1b;从客户关系管理的深度耕耘&#xff0c;到供应链优化的全面协同&…...

大模型系列(五)--- GPT3: Language Models are Few-Shot Learners

论文链接&#xff1a; Language Models are Few-Shot Learners 点评&#xff1a; GPT3把参数规模扩大到1750亿&#xff0c;且在少样本场景下性能优异。对于所有任务&#xff0c;GPT-3均未进行任何梯度更新或微调&#xff0c;仅通过纯文本交互形式接收任务描述和少量示例。然而&…...

Qt QCheckBox 使用

1.开发背景 Qt QCheckBox 是勾选组件&#xff0c;具体使用方法可以参考 Qt 官方文档&#xff0c;这里只是记录使用过程中常用的方法示例和遇到的一些问题。 2.开发需求 QCheckBox 使用和踩坑 3.开发环境 Window10 Qt5.12.2 QtCreator4.8.2 4.功能简介 4.1 简单接口 QChec…...

Java SolonMCP 实现 MCP 实践全解析:SSE 与 STDIO 通信模式详解

一、MCP简介 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;是由Anthropic公司于2024年推出的开放标准&#xff0c;旨在统一AI模型与外部数据源、工具之间的通信方式。MCP提供了一套规范化的接口&#xff0c;使大语言模型&#xff08;LLM&…...

系统架构-面向服务架构(SOA)

概述 服务指的是系统对外提供的功能集 从应用的角度定义&#xff0c;可以认为SOA是一种应用框架&#xff0c;将日常业务划分为单独的业务功能和流程&#xff08;即服务&#xff09;&#xff0c;SOA使用户可以构建、部署和整合这些服务。 从软件的基本原理定义&#xff0c;SO…...

AJAX原理

AJAX使用XHR 对象和服务器进行数据交互 XHR <p class"my-p"></p><script>const xhr new XMLHttpRequest()xhr.open(GET,http://hmajax.itheima.net/api/province)xhr.addEventListener(loadend,()>{// console.log(xhr.response)const data …...

Paddle Serving|部署一个自己的OCR识别服务器

前言 之前使用C部署了自己的OCR识别服务器&#xff0c;Socket网络传输部分是自己写的&#xff0c;回过头来一看&#xff0c;自己犯傻了&#xff0c;PaddleOCR本来就有自己的OCR服务器项目&#xff0c;叫PaddleServing&#xff0c;这里记录一下部署过程。 1 下载依赖环境 1.1 …...

Web开发—Vue工程化

文章目录 前言 Vue工程化 一、介绍 二、环境准备 1.介绍create-vue 2.NodeJS安装 3.npm介绍 三&#xff0c;Vue项目创建 四&#xff0c;项目结构 五&#xff0c;启动项目 六&#xff0c;Vue项目开发流程 七&#xff0c;API风格 前言 Vue工程化 前面我们在介绍Vue的时候&#…...

Word如何制作三线表格

1.需求 将像这样的表格整理成论文中需要的三线表格。 2.直观流程 选中表格 --> 表格属性中的边框与底纹B --> 在设置中选择无&#xff08;重置表格&#xff09;–> 确定 --> 选择第一行&#xff08;其实是将第一行看成独立表格了&#xff0c;为了设置中线&…...

毫米波雷达点云SLAM系统

毫米波雷达点云SLAM系统 基于毫米波雷达点云数据的三维SLAM(同步定位与建图)系统&#xff0c;用于狭窄环境如室内和地下隧道的三维建图。 项目概述 本项目实现了一个完整的SLAM系统&#xff0c;利用毫米波雷达采集的点云数据进行实时定位和环境三维重建。系统特别针对狭窄空…...

5 从众效应

引言 有一个成语叫做三人成虎&#xff0c;意思是说&#xff0c;有三个人谎报市上有老虎&#xff0c;听者就信以为真。这种人在社会群体中&#xff0c;容易不加分析地接受大多数人认同的观点或行为的心理倾向&#xff0c;被称为从众效应。 从众效应&#xff08;Bandwagon Effec…...

【实战教程】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南

&#x1f525; 本文详细讲解如何从零搭建一个完整的DeepSeek AI对话系统&#xff0c;包括Spring Boot后端和React前端&#xff0c;适合AI开发入门者快速上手。即使你是编程萌新&#xff0c;也能轻松搭建自己的AI助手&#xff01; &#x1f4da;博主匠心之作&#xff0c;强推专栏…...

用C语言实现的——一个支持完整增删查改功能的二叉排序树BST管理系统,通过控制台实现用户与数据结构的交互操作。

一、知识回顾 二叉排序树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;&#xff0c;又称二叉查找树或二叉搜索树&#xff0c;是一种特殊的二叉树数据结构。 基本性质&#xff1a; ①有序性 对于树中的每个节点&#xff0c;其左子树中所有节点的值都小于该节点的…...

排队论基础一:马尔可夫排队模型

排队论基础一:马尔可夫排队模型 介绍基本概念状态概率分布平均队列人数与平均排队人数平均停留时间与平均等待时间Little公式(Little Law)生灭过程生灭过程排队系统(马尔可夫排队模型)状态平衡方程介绍 最近写论文需要,学了一下排队过程模型。其实这些内容本科的时候我都…...

论文阅读笔记——ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors

RoboGround 论文 一类中间表征是语言指令&#xff0c;但对于空间位置描述过于模糊&#xff08;“把杯子放桌上”但不知道放桌上哪里&#xff09;&#xff1b;另一类是目标图像或点流&#xff0c;但是开销大&#xff1b;由此 GeoDEX 提出一种兼具二者的掩码。 相比于 GR-1&#…...

系统架构设计(四):架构风格总结

黑板 概念 黑板体系架构是一种用于求解复杂问题的软件架构风格&#xff0c;尤其适合知识密集型、推理驱动、数据不确定性大的场景。 它模拟了人类专家协同解决问题的方式&#xff0c;通过一个共享的“黑板”协同多个模块&#xff08;专家&#xff09;逐步构建解决方案。 组…...

『 测试 』测试基础

文章目录 1. 调试与测试的区别2. 开发过程中的需求3. 开发模型3.1 软件的生命周期3.2 瀑布模型3.2.1 瀑布模型的特点/缺点 3.3 螺旋模型3.3.1 螺旋模型的特点/缺点 3.4 增量模型与迭代模型3.5 敏捷模型3.5.1 Scrum模型3.5.2 敏捷模型中的测试 4 测试模型4.1 V模型4.2 W模型(双V…...

robomaster机甲大师--电调电机

文章目录 C620电调ID设置速率 电调发送报文电调接收报文cubemx程序初始化发送接收 C620电调 ID设置 速率 1Mbps 电调发送报文 发送的数据为控制电机的输出电流&#xff0c;需要将can数据帧的ID设置为0x200 电调接收报文 机械角度&#xff1a;电机的0到360度映射到0到几千转…...

汽车诊断简介

历史 20世纪80年代&#xff0c;由于美国西海岸严重的雾霾问题&#xff0c;CARB&#xff08;加州空气资源委员会&#xff09;通过了一项法律&#xff0c;要求对机动车辆进行车载监测诊断。这推动了OBD-I的引入&#xff0c;并在1990年代被OBD II取代。与此同时&#xff0c;欧洲也…...

少儿编程机构用的教务系统

在编程教育行业快速发展的今天&#xff0c;培训机构面临着学员管理复杂、课程体系专业性强、教学效果难以量化等独特挑战。爱耕云教务系统针对编程培训机构的特殊需求&#xff0c;提供了一套全方位的数字化解决方案&#xff0c;帮助机构实现高效运营和教学质量提升。 为什么编…...

优化理赔数据同步机制:从4小时延迟降至15分钟

优化理赔数据同步机制&#xff1a;从4小时延迟降至15分钟 1. 分析当前同步瓶颈 首先诊断当前同步延迟原因&#xff1a; -- 检查主从复制状态&#xff08;在主库执行&#xff09; SHOW MASTER STATUS; SHOW SLAVE HOSTS;-- 在从库执行检查复制延迟 SHOW SLAVE STATUS\G -- 关…...

面试中常问的设计模式及其简洁定义

&#x1f3af; 一、面试中常问的设计模式及其简洁定义 模式名常被问到解释&#xff08;简洁&#xff09;单例模式✅ 高频保证一个类只有一个实例&#xff0c;并提供全局访问点。工厂模式✅ 高频创建对象的接口由子类决定&#xff0c;屏蔽了对象创建逻辑。抽象工厂模式✅提供多…...

基于VSCode+PlatformIO环境的ESP8266的HX1838红外模块

以下是针对ESP8266开发板的红外遥控解码系统开发教程&#xff0c;基于VSCodePlatformIO环境编写 一、概述 本实验通过ESP8266开发板实现&#xff1a; 红外遥控信号解码自定义按键功能映射串口监控输出基础设备控制&#xff08;LED&#xff09; 硬件组成&#xff1a; NodeMC…...

Linux中的防火墙

什么是防火墙 windows防火墙的设置 linux防火墙设置命令 什么是防火墙&#xff1f; 防火墙是一种网络安全设备&#xff0c;它能够&#xff1a; 监控和过滤进出网络的流量 阻止不安全的连接 保护计算机和网络免受未授权访问 创建一个安全边界 简单来说&#xff0c;防火…...

补补表面粗糙度的相关知识(一)

表面粗糙度&#xff0c;或简称粗糙度&#xff0c;是指表面不光滑的特性。这个在机械加工行业内可以说是绝绝的必备知识之一&#xff0c;但往往也是最容易被忽略的&#xff0c;因为往往天天接触的反而不怎么关心&#xff0c;或者没有真正的去认真学习掌握。对于像我一样&#xf…...

力扣刷题Day 46:搜索二维矩阵 II(240)

1.题目描述 2.思路 方法1&#xff1a;分别找到搜索矩阵的右、下边界&#xff0c;然后从[0][0]位置开始遍历这部分矩阵搜索目标值。 方法2&#xff1a;学习Krahets佬的思路&#xff0c;从搜索矩阵的左下角开始遍历&#xff0c;matrix[i][j] > target时消去第i行&#xff0c…...

Kubernetes 集群部署应用

部署 Nginx 应用 命令行的方式 1. 创建 deployment 控制器的 pod # --imagenginx&#xff1a;这个会从 docker.io 中拉取&#xff0c;这个网站拉不下来 # kubectl create deployment mynginx --imagenginx# 使用国内镜像源拉取 kubectl create deployment mynginx --imaged…...

Spark 处理过程转换:算子与行动算子详解

在大数据处理领域&#xff0c;Apache Spark 凭借其强大的分布式计算能力脱颖而出&#xff0c;成为处理海量数据的利器。而 Spark 的核心处理过程&#xff0c;主要通过转换算子和行动算子来实现。本文将深入探讨 Spark 中的转换算子和行动算子&#xff0c;帮助读者更好地理解和应…...

Unity3D仿星露谷物语开发42之粒子系统

1、目标 使用例子系统&#xff0c;实现割草后草掉落的特效。 通过PoolManager获取特效预制体&#xff0c;通过VFXManager来触发特效。 2、配置例子特效 在Hierarchy -> PersistentScene下创建新物体命名为Reaping。 给该物体添加Particle System组件。 配置例子系统参数…...