当前位置:网站首页>最全H桥电机驱动模块L298N原理及应用
最全H桥电机驱动模块L298N原理及应用
2022-06-27 08:55:00 【嵌入式悦翔园】
H 桥 - 基础知识
通常,H 桥是一个相当简单的电路,包含四个开关元件,负载位于中心,采用类似 H 的配置。

开关元件 (Q1…Q4) 通常是双极或 FET 晶体管,在某些高压应用中为 IGBT。也存在集成解决方案,但开关元件是否与其控制电路集成与本讨论的大部分内容无关。二极管 (D1…D4) 称为钳位二极管,通常为肖特基类型。
桥的顶端连接到电源(例如电池),底端接地。
一般来说,所有四个开关元件都可以独立打开和关闭,尽管有一些明显的限制。
尽管理论上负载可以是您想要的任何东西,但到目前为止,如果 H 桥带有有刷直流或双极步进电机(步进电机每个电机需要两个 H 桥)负载,则最普遍的应用。在下文中,我将专注于作为有刷直流电机驱动器的应用。
H 桥的静态操作
H 桥的基本工作模式相当简单:如果 Q1 和 Q4 导通,电机的左引线将连接到电源,而右引线连接到地。电流开始流过电机,电机正向(比方说)通电,电机轴开始旋转。

如果 Q2 和 Q3 接通,则会发生反转,电机反向通电,轴将开始反向旋转。

在桥梁中,您永远不应该同时关闭 Q1 和 Q2(或 Q3 和 Q4)。如果你这样做了,你只是在电源和 GND 之间创建了一个非常低电阻的路径,有效地短路了你的电源。这种情况称为“击穿”,几乎可以保证快速破坏您的电桥或电路中的其他东西。

由于对四种可能状态的限制,A 侧开关可能只有三种有意义:
| Q1 | Q2 |
|---|---|
| open | open |
| close | open |
| open | close |
同样对于 B 面:
| Q3 | Q4 |
|---|---|
| open | open |
| close | open |
| open | close |
故全桥可以有 9 种不同的状态:
| Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|
| close | open | open | open |
| close | open | open | close |
| close | open | close | open |
| open | close | open | open |
| open | close | open | close |
| open | close | close | open |
| open | open | open | open |
| open | open | open | close |
| open | open | close | open |
也有一些组合模式,是不向电机供电。比如当四个晶体开关都断开,此时电机负载相当于两端悬空。如果电机此时在运动,其转子的动能就会在摩擦力的作用下逐步消耗,电机慢慢停止。
下图所示的两种情况:H桥电路的上半部(或者下半部)的两个晶体管闭合,对应的另外两个晶体管断开。此时电机两端被桥电路实际上是短接在一起。电机两端电压为0。如果此时电机在运动,那么它转子的动能会通过所产生的反向电动势(EMF)在外部短路桥电路回路中形成制动电流,电机会快速制动。

同边桥臂短路情况有时是控制信号不好(没有给足死区时间),有时是功率器件不够坚强(耐压不够被击穿)。但由于关系到H桥电路的生死,所以需要精细避免。
H-桥控制电机
下面以控制一个直流电机为例,对H桥的几种开关状态进行简单的介绍,其中正转和反转是人为规定的方向,实际工程中按照实际情况进行划分即可。
电机正转控制
通常H桥用来驱动感性负载,这里我们来驱动一个直流电机;
| Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|
| open | close | close | open |
此时假设电机正转,这电流依次经过 Q1 , M , Q4 ,在图中使用黄色线段进行标注,具体如下图所示:

电机反转控制
另外一种状态则是电机反转;此时四个开关元器件的状态如下;
| Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|
| close | open | open | close |
此时电机反转(与前面介绍的情况相反),这电流依次经过 Q2 , M , Q3 ,在图中使用黄色线段进行标注,具体如下图所示:

电机调速
如果要对直流电机调速,其中的一种方案就是;
关闭 Q2 , Q3 ;
打开 Q1 , Q4 上给它输入 50% 占空比的PWM波形;
这样就达到了降低转速的效果,如果需要增加转速,则将输入PWM的占空比设置为100%;具体如下所示

电机停止
这里以电机从正转切换到停止状态为例,正转情况下; Q1 和 Q4 是打开状态;
这时候如果关闭 Q1 和 Q4 ,直流电机内部可以产生等效成电感,也就是感性负载,电流不会突变,那么电流将继续保持原来的方向进行流动,这时候我们希望电机里的电流可以快速衰减,这里有两种办法:
第一种:关闭 Q1 和 Q4 ,这时候电流仍然会通过反向续流二极管进行流动,此时短暂打开 Q1 和 Q3 从而达到快速衰减电流的目的。

第二种:准备停止的时候,关闭 Q1 ,打开 Q2,这时候电流并不会衰减地很快,电流循环在Q2,M,Q4之间流动,通过MOS-FET的内阻将电能消耗掉。

H-桥应用
实际使用的时候,用分立元件制作H桥是很麻烦的,市面上已经有很多比较常用的IC方案,比如常用的L293D、L298N、TA7257P、SN754410等。接上电源、电机,通过输入控制信号就可以驱动电机了。
下面是某宝上的L298N模块,比较常见,对于新手玩家非常友好,接线也十分简单。

L298N模块这个模块有一个板载5V稳压器,该稳压器可使用跳线的方式进行使能。
如果电机电源电压高达12V,我们可以启用5V稳压器,并且5V引脚可以用作输出,例如给Arduino板供电。
但是,如果电动机电压大于12V,则必须断开跳线,因为这些电压会损坏板载5V稳压器。
在这种情况下,5V引脚将用作输入,因为我们需要将其连接到5V电源,以使IC正常工作。
我们在这里可以注意到,该IC的电压降约为2V。因此,如果使用12V电源,则电动机端子上的电压约为10V,这意味着我们将无法从12V直流电动机中获得最大速度。
这里使用Arduino为例,这是网上找的一个Demo整体的框架如下图所示:

主要代码
#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);
// Set initial rotation direction
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
}
void loop() {
// Read potentiometer value
int potValue = analogRead(A0);
// Map the potentiometer value from 0 to 255
int pwmOutput = map(potValue, 0, 1023, 0 , 255);
// Send PWM signal to L298N Enable pin
analogWrite(enA, pwmOutput);
// Read button - Debounce
if (digitalRead(button) == true) {
pressed = !pressed;
}
while (digitalRead(button) == true);
delay(20);
// If button is pressed - change rotation direction
if (pressed == true & rotDirection == 0) {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
rotDirection = 1;
delay(20);
}
// If button is pressed - change rotation direction
if (pressed == false & rotDirection == 1) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
rotDirection = 0;
delay(20);
}
}
代码讲解
简单描述一下:首先我们需要定义程序所需的引脚和变量。
在setup()中,我们需要设置引脚模式和电机的初始旋转方向。
在loop()中,我们先读取电位器值,然后将从中获得的值从0到1023变化,线性映射到PWM信号的0到255的值,将其从0到100%的占空比。
然后使用analogWrite()函数将PWM信号发送到L298N板的Enable引脚,该引脚实际上驱动电动机。
接下来,我们检查是否按下了按钮,如果是的话,我们将输入1和输入2的状态反置,从而改变电动机的旋转方向。该按钮将用作切换按钮,每次按下该按钮都会改变电动机的旋转方向。
某宝上这种小车很多,如下图所示;主控可以换成51单片机或者STM32,当然Arduino也没问题,使用L298N就可以快速搭建一个小车了;

总结
虽然我们不能够确认原文作者所有的结论、公式都是正确的。但看到他清晰的话语、生动的插图、详尽的公式分析反映了他从一个需要设计小型电机H桥电路驱动工程出发 ,不停的在思索桥电路工作的各环节的原理和一些控制细节,并最终后总结成博文。可以体会到他内心在整个知识增长过程中的喜悦。
参考资料
- H-Bridges – the Basics | Modular Circuits
- https://blog.csdn.net/tiandiren111/article/details/112130898
边栏推荐
- ThreadLocal再次挖掘它的知识点
- Summary of three basic interview questions
- Several cases that do not initialize classes
- Fake constructor???
- 【mysql篇-基础篇】通用语法1
- vim 从嫌弃到依赖(19)——替换
- 招聘需求 视觉工程师
- ThreadLocal digs its knowledge points again
- 粗读DS-TransUNet: Dual Swin Transformer U-Net for Medical Image Segmentation
- Rockermq message sending mode
猜你喜欢

我大抵是卷上瘾了,横竖睡不着!竟让一个Bug,搞我两次!

MySQL index details

vim 从嫌弃到依赖(19)——替换

The largest rectangle in the bar graph of force buckle 84

Obsidian 一周使用心得(配置、主题和插件)

Some exercises about binary tree

Correctly understand MySQL mvcc

Analysis of orthofinder lineal homologous proteins and result processing

MySQL锁详解

NoSQL database redis installation
随机推荐
RockerMQ消息发送与消费模式
Semi supervised learning—— Π- Introduction to model, temporary assembling and mean teacher
Linux下Redis的安装
June 26, 2022 (LC 6100 counts the number of ways to place houses)
Flow chart of Alipay wechat payment business
枚举?构造器?面试Demo
力扣84柱状图中最大的矩形
I'm almost addicted to it. I can't sleep! Let a bug fuck me twice!
How much do you know about the cause of amplifier distortion?
了解神经网络结构和优化方法
Analysis of orthofinder lineal homologous proteins and result processing
ucore lab3
浏览器的markdown插件显示不了图片
Summary of three basic interview questions
三道基础面试题总结
Collection framework generic LinkedList TreeSet
The largest rectangle in the bar graph of force buckle 84
粗读DS-TransUNet: Dual Swin Transformer U-Net for Medical Image Segmentation
1098 Insertion or Heap Sort(堆排序解释)(PAT甲级)
The background prompt module for accessing fastadmin after installation does not exist