Arduino应用实例——用L298N芯片驱动直流电机,智能小车必备
liuian 2024-12-08 16:24 131 浏览
在本次的文章中,我们将会介绍如何使用 Arduino 控制直流有刷电机。
直流有刷电机上生活中最为常见的电动机之一。小时候玩的四驱车采用的就是直流有刷电机。这种直流电机的驱动也是非常简单 ,只要给它接上直流电,电机就能转动,改变电源正负极,电机就能反转。那么我们怎么对电机进行调速并且更方便地切换电机的旋转方向呢?
我们知道,一个电机接两节干电池时的转速要比只接一节干电池要快得多。因此我们可以通过简单地控制电机的输入电压来控制直流电机的转速。最常用的方法是使用 PWM 信号控制电机。
PWM 直流电机控制
PWM 脉冲宽度调制(Pulse width modulation,PWM)是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。它相当于我们通过快速打开和关闭电源来调整输入电子设备的电压的平均值。 平均电压取决于占空比,或者信号开启的时间与信号在一个周期内关闭的时间的比值。
因此,根据电机的大小,我们可以简单地将 Arduino PWM 输出连接到晶体管的基极或 MOS管的栅极,并通过控制 PWM 输出来控制电机的速度。 低功率 Arduino PWM 信号打开和关闭 MOS管上的栅极,通过该栅极驱动高功率电机。
注意:Arduino与电机电源需共地。
H-桥直流电机控制
我们已经学会了控制电机的速度,下一步就是控制电机的正反转。为了控制旋转方向,我们只需要反转通过电机的电流方向,最常用的方法是使用H桥。 H桥电路包含四个开关元件、晶体管或MOS管,中间的电机形成类似H型的电路。通过同时激活两个特定的开关,我们就可以改变电流的方向,从而改变电机的旋转方向。比如只接通开关1,3电机正转,只接通2,4开关电机就会反转。
因此,如果我们将PWM和H桥这两种方法结合起来,我们就自如地控制直流电机了。实际上我们有许多具有这种功能的直流电机驱动器,L298N 就是其中最常用的模块之一。
L298N驱动模块
L298N 是双H桥电机驱动器,可同时控制两个直流电机的速度和方向。该模块可以驱动电压在5-35V之间的直流电机,峰值电流可达2A。
该模块左右各有两个螺钉接线端子用于连接电机A和B。中间的螺钉接线端子包括一个接地端,一个电机5-35V的供电端VCC以及一个5V接线端,它可以是输入或输出。这取决于电机 VCC 上使用的电压。 该模块具有板载5V稳压器,可使用跳线启用或禁用该稳压器。 如果电机电源电压高达 12V,我们可以启用5V稳压器,并且 5V 引脚可以用作输出,并为我们的 Arduino 板供电。 但如果电机电压大于 12V,我们必须断开跳线,因为过高的电压会损坏板载 5V 稳压芯片。 在这种情况下,5V 引脚将用作输入,因为我们需要将其连接到 5V 电源才能使 IC 正常工作。
接下来是信号端的接线。使能A(EnableA)和使能B(EnableB)引脚用于启用和控制电机速度。如果该引脚上存在跳线,电机将启动并以最大速度工作。我们也拆下跳线帽,将PWM输入此引脚,就可以控制电机的速度。如果我们将此针脚接地,电机将被禁用。
接下来,IN1和IN2引脚用于控制马达A的旋转方向,IN3和IN4用于马达B。我们通过这些引脚,来L298N IC内部H桥的开关。如果IN1输入低电平而IN2输入高电平,电机将正转,如果N1输入高电平而IN2输入低电平,电机将反转。如果两个引脚输入相同,电机将停止。这同样适用于IN3和IN4以及电机B。
Arduino L298N电机驱动
现在让我们连接上Arduino 做一个实际应用。我们将使用电位计控制电机的速度,并使用按钮改变旋转方向。下面是电路图。
硬件设备:
- Arduino UNO控制器 × 1
- 298N电机驱动模块 × 1
- 直流电机 × 1
- 电位计 × 1
- 按钮 × 1
- 12V 电源 × 1
- 杜邦线 × n
Arduino代码
/* Arduino 直流电机控制 - PWM | H-Bridge | L298N */
#define enA 9 //定义电机控制端和使能端
#define in1 6
#define in2 7
#define button 4 //定义按键
int rotDirection = 0; //定义旋转方向
int pressed = false;
void setup() {
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(button, INPUT);
// 设置初始旋转方向
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
}
void loop() {
int potValue = analogRead(A0); // 读取电位计值
int pwmOutput = map(potValue, 0, 1023, 0 , 255); //将电位计值映射到 0- 255
analogWrite(enA, pwmOutput); // PWM信号输出
// 读取按键值
if (digitalRead(button) == true) {
pressed = !pressed;
}
while (digitalRead(button) == true);
delay(20);
// 如果按键被按下,改变电机旋转方向
if (pressed == true & rotDirection == 0) {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
rotDirection = 1;
delay(20);
}
// 如果按键被按下,改变电机旋转方向
if (pressed == false & rotDirection == 1) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
rotDirection = 0;
delay(20);
}
}该实例程序中,我们需要先定义程序所需的管脚和变量。在setup中,我们需要设置引脚模式和电机的初始旋转方向。在loop中,我们首先读取电位计值,然后将从中获得的值(从0到1023)映射为PWM信号的0到255的值,或者是PWM信号的0到100%占空比。然后使用analogWrite()函数将PWM信号发送到L298N板的启用引脚,该引脚实际驱动电机。
接下来,我们检查是否按下了按钮,如果是值是真的,通过反向设置in1和in2状态来改变电机的旋转方向。该按钮将作为电机换向按钮,每次我们按下它,电机的旋转方向就会改变。
相关推荐
-
- 超好看的动态手机壁纸(超好看的动态手机壁纸图片)
-
可以进入【手机i主题--右上角人形图标--壁纸】,设置动态壁纸。其它情况下手机本身不支持将动态图片和视频设置成桌面壁纸和锁屏。您可以尝试使用第三方软件实现。备注:抖音的参考设置方法:【抖音界面-登录抖音账号-找到视频-点击右下角的“分享”按...
-
2025-12-24 12:05 liuian
- chrome安卓版2025最新版本(chrome稳定版 安卓)
-
手机谷歌地球打不开,一直转圈的话,可能是因为你的网络不太稳定,你可以换一个网络googleearth大概1~2年更新一次。用户可以通过googleearth来查看更新时间。将earth放大到一...
- win10精简版msdn(win10精简版是哪个版本)
-
这个问题只能由技术人员或有使用经验的人回答,无法准确回答“哪个好”。因为msdn官网提供的win7精简版,有不同的版本、不同的功能和不同的定制化程度。选择哪个版本、哪个标准或哪种方案,需要根据具体需...
- 笔记本电脑硬盘分区教程图解
-
第一步:进入磁盘管理器。 在笔记本电脑的桌面找到“计算机”图标,然后点击右键,在下拉列表中找到“管理”选项,点击打开,进入到“计算机管理”界面。然后选择左侧列表中的“磁盘管理”选线,点击打开。 ...
- 还原精灵使用方法(还原精灵使用方法视频)
-
还原精灵是一种用于恢复被损坏或删除的文件的工具。使用方法如下:首先,打开还原精灵软件。然后,选择要恢复的文件类型或指定文件路径。接下来,点击“扫描”按钮,软件将开始扫描并列出可恢复的文件。在列表中选择...
- 装系统教程win7用u盘(用u盘win7系统安装教程)
-
首先,需要准备一个容量不小于4GB的U盘,并下载正版的Windows7系统镜像文件。接着,使用专业的U盘制作工具将系统镜像文件写入U盘中,并将U盘插入需要安装系统的电脑中。在开机时按下电脑的启动键,...
- 苹果16突然黑屏关机(苹果11突然黑屏)
-
苹果手机突然黑屏但是没关机的原因:一般情况下,死机黑屏都是软件系统原因造成的,可能是由于你安装的软件内部冲突所导致的。严重的时候还会花屏重启。还有可能就是手机使用时间长,热量散发不及时。只要同时按住关...
- 子网掩码和网关怎么填(子网掩码与网关怎么设置)
-
1、以WIN10系统为例,电脑的ip地址、默认网关以及子网掩码可以通过进入到该电脑的网络连接属性界面进行填写。打开属性界面以后,选择手动。然后输入正确的编码即可(其中的默认网关与路由器IP地址相同)。...
- windows10不激活影响使用吗(win 10不激活有什么影响)
-
windows10不激活能用一般情况下,不激活的确可以正常使用,但是会有一些功能受到限制。具体的限制如下所示:首先,您的屏幕右下角会显示“激活Windows”的水印;其次,您无法在“个性化”下使用任...
-
- pdf转换器免费(pdf转换器在线版)
-
1.可检索内容的PDF(内容可以用鼠标选中的非双层PDF)文件,推荐用下面软件转换:PDFToWordConverter,是一款将AdobePDF文档转换成Word文档的工具软件,它支持文字,图像及其它内容的输出。这款软件可以...
-
2025-12-24 06:55 liuian
- office2013激活工具win11(office2013激活工具toolkit)
-
用专门的激活工具就可以啦。1、待安装完Office2013后,解压并运行“MicrosoftToolkit.exe”程序,在弹出的程序界面中点击“OfficeButton”按钮以便打开“Office破...
- 手机登录126邮箱网页登录入口
-
www.126.com126邮箱拥有3G超大存储空间,支持超大2G附件,采用了创新Ajax技术,同等网络环境下,页面响应时间最高减少90%,垃圾邮件及病毒有效拦截率超过98%和99.8%。126邮箱采...
- 全国中高风险地区最新名单(全国中高风险地区最新名单7.29)
-
浦东新区康桥镇环桥路1488弄小区,黄浦区南京东路街道西藏中路180号高盛商厦5楼,静安区共和新路街道沪太路785号B座501西区天空音乐量贩式KTV,松江区小昆山镇平原街86弄平原新村,虹口区北外滩...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
