我是靠谱客的博主 雪白硬币,最近开发中收集的这篇文章主要介绍最全H桥电机驱动模块L298N原理及应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最全H桥电机驱动模块L298N原理及应用

    • H 桥 - 基础知识
      • H 桥的静态操作
    • H-桥控制电机
      • 电机正转控制
      • 电机反转控制
      • 电机调速
      • 电机停止
    • H-桥应用
      • 主要代码
      • 代码讲解
    • 总结

H 桥 - 基础知识

通常,H 桥是一个相当简单的电路,包含四个开关元件,负载位于中心,采用类似 H 的配置。

开关元件 (Q1…Q4) 通常是双极或 FET 晶体管,在某些高压应用中为 IGBT。也存在集成解决方案,但开关元件是否与其控制电路集成与本讨论的大部分内容无关。二极管 (D1…D4) 称为钳位二极管,通常为肖特基类型。

桥的顶端连接到电源(例如电池),底端接地。

一般来说,所有四个开关元件都可以独立打开和关闭,尽管有一些明显的限制。

尽管理论上负载可以是您想要的任何东西,但到目前为止,如果 H 桥带有有刷直流或双极步进电机(步进电机每个电机需要两个 H 桥)负载,则最普遍的应用。在下文中,我将专注于作为有刷直流电机驱动器的应用。

H 桥的静态操作

H 桥的基本工作模式相当简单:如果 Q1 和 Q4 导通,电机的左引线将连接到电源,而右引线连接到地。电流开始流过电机,电机正向(比方说)通电,电机轴开始旋转。

▲ H-桥电路驱动电机正向电压

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

▲ H-桥电路驱动电机反向电压

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

▲ H-桥电路直通

由于对四种可能状态的限制,A 侧开关可能只有三种有意义:

Q1Q2
openopen
closeopen
openclose

同样对于 B 面:

Q3Q4
openopen
closeopen
openclose

故全桥可以有 9 种不同的状态:

Q1Q2Q3Q4
closeopenopenopen
closeopenopenclose
closeopencloseopen
opencloseopenopen
opencloseopenclose
openclosecloseopen
openopenopenopen
openopenopenclose
openopencloseopen

也有一些组合模式,是不向电机供电。比如当四个晶体开关都断开,此时电机负载相当于两端悬空。如果电机此时在运动,其转子的动能就会在摩擦力的作用下逐步消耗,电机慢慢停止。

下图所示的两种情况:H桥电路的上半部(或者下半部)的两个晶体管闭合,对应的另外两个晶体管断开。此时电机两端被桥电路实际上是短接在一起。电机两端电压为0。如果此时电机在运动,那么它转子的动能会通过所产生的反向电动势(EMF)在外部短路桥电路回路中形成制动电流,电机会快速制动。

▲ 电机两端电压被桥电路强制短接在一起

同边桥臂短路情况有时是控制信号不好(没有给足死区时间),有时是功率器件不够坚强(耐压不够被击穿)。但由于关系到H桥电路的生死,所以需要精细避免。

H-桥控制电机

下面以控制一个直流电机为例,对H桥的几种开关状态进行简单的介绍,其中正转和反转是人为规定的方向,实际工程中按照实际情况进行划分即可。

电机正转控制

通常H桥用来驱动感性负载,这里我们来驱动一个直流电机;

Q1Q2Q3Q4
openclosecloseopen

此时假设电机正转,这电流依次经过 Q1 , M , Q4 ,在图中使用黄色线段进行标注,具体如下图所示:

▲ 电机正转电流流向示意图

电机反转控制

另外一种状态则是电机反转;此时四个开关元器件的状态如下;

Q1Q2Q3Q4
closeopenopenclose

此时电机反转(与前面介绍的情况相反),这电流依次经过 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实物图

L298N模块这个模块有一个板载5V稳压器,该稳压器可使用跳线的方式进行使能。

如果电机电源电压高达12V,我们可以启用5V稳压器,并且5V引脚可以用作输出,例如给Arduino板供电。

但是,如果电动机电压大于12V,则必须断开跳线,因为这些电压会损坏板载5V稳压器。

在这种情况下,5V引脚将用作输入,因为我们需要将其连接到5V电源,以使IC正常工作。

我们在这里可以注意到,该IC的电压降约为2V。因此,如果使用12V电源,则电动机端子上的电压约为10V,这意味着我们将无法从12V直流电动机中获得最大速度。

这里使用Arduino为例,这是网上找的一个Demo整体的框架如下图所示:

▲ Arduino通过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);
  // 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
????点击下方公众号卡片获取资料????

最后

以上就是雪白硬币为你收集整理的最全H桥电机驱动模块L298N原理及应用的全部内容,希望文章能够帮你解决最全H桥电机驱动模块L298N原理及应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部