• 注册
  • 办公 办公 关注:2 内容:10609

    一份很用心的H桥驱动扫盲教程

  • 查看作者
  • 打赏作者
  • 当前位置: 职业司 > 资讯 > 办公 > 正文
    • 办公
    • 一份很用心的H桥驱动扫盲教程

      什么是H桥?

      H桥是一个比较简单的电路,通常它会包含四个独立控制的开关元器件(例如MOS-FET),它们通常用于驱动电流较大的负载,比如电机,至于为什么要叫H桥(H-Bridge),因为长得比较像字母H,具体如下图所示;

      一份很用心的H桥驱动扫盲教程

      这里有四个开关元器件Q1,Q2,Q3,Q4,另外还有一个直流电机M,D1,D2,D3,D4是MOS-FET的续流二极管;

      开关状态

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

      正转

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

      • 打开Q1和Q4;
      • 关闭Q2和Q3;

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

      一份很用心的H桥驱动扫盲教程

      正转

      反转

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

      • 关闭Q1和Q4;
      • 打开Q2和Q3;

      此时电机反转(与前面介绍的情况相反),这电流依次经过Q2,M,Q3,在图中使用黄色线段进行标注,具体如下图所示;

      一份很用心的H桥驱动扫盲教程

      反转

      调速

      如果要对直流电机调速,其中的一种方案就是;

      • 关闭Q2,Q3;
      • 打开Q1,Q4上给它输入50%占空比的PWM波形,这样就达到了降低转速的效果,如果需要增加转速,则将输入PWM的占空比设置为100%;

      具体如下所示;

      一份很用心的H桥驱动扫盲教程

      停止状态

      这里以电机从正转切换到停止状态为例;

      • 正转情况下;Q1和Q4是打开状态;
      • 这时候如果关闭Q1和Q4,直流电机内部可以等效成电感,也就是感性负载,电流不会突变,那么电流将继续保持原来的方向进行流动,这时候我们希望电机里的电流可以快速衰减;

      这里有两种办法:

      第一种:关闭Q1和Q4,这时候电流仍然会通过反向续流二极管进行流动,此时短暂打开Q1和Q3从而达到快速衰减电流的目的;

      一份很用心的H桥驱动扫盲教程

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

      一份很用心的H桥驱动扫盲教程

      应用

      实际使用的时候,用分立元件制作H桥是很麻烦的,市面上已经有很多比较常用的IC方案,比如常用的L293D、L298N、TA7257P、SN754410等。接上电源、电机,通过输入控制信号就可以驱动电机了;

      下面是某宝上的L298N模块,比较常见,对于新手玩家非常友好,接线也十分简单;

      一份很用心的H桥驱动扫盲教程

      L298N模块

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

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

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

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

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

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

      一份很用心的H桥驱动扫盲教程

      架构

      1. #define enA 9 
      2. #define in1 6 
      3. #define in2 7 
      4. #define button 4 
      5.  
      6. int rotDirection = 0; 
      7. int pressed = false
      8.  
      9. void setup() { 
      10.   pinMode(enA, OUTPUT); 
      11.   pinMode(in1, OUTPUT); 
      12.   pinMode(in2, OUTPUT); 
      13.   pinMode(button, INPUT); 
      14.   // Set initial rotation direction 
      15.   digitalWrite(in1, LOW); 
      16.   digitalWrite(in2, HIGH); 
      17.  
      18. void loop() { 
      19. // Read potentiometer value 
      20.   int potValue = analogRead(A0);  
      21.   // Map the potentiometer value from 0 to 255 
      22.   int pwmOutput = map(potValue, 0, 1023, 0 , 255);  
      23.   // Send PWM signal to L298N Enable pin 
      24.   analogWrite(enA, pwmOutput);  
      25.  
      26.   // Read button - Debounce 
      27.   if (digitalRead(button) == true) { 
      28.     pressed = !pressed; 
      29.   } 
      30.   while (digitalRead(button) == true); 
      31.   delay(20); 
      32.  
      33.   // If button is pressed - change rotation direction 
      34.   if (pressed == true  & rotDirection == 0) { 
      35.     digitalWrite(in1, HIGH); 
      36.     digitalWrite(in2, LOW); 
      37.     rotDirection = 1; 
      38.     delay(20); 
      39.   } 
      40.   // If button is pressed - change rotation direction 
      41.   if (pressed == false & rotDirection == 1) { 
      42.     digitalWrite(in1, LOW); 
      43.     digitalWrite(in2, HIGH); 
      44.     rotDirection = 0; 
      45.     delay(20); 
      46.   } 

      简单描述一下:首先我们需要定义程序所需的引脚和变量。

      在setup()中,我们需要设置引脚模式和电机的初始旋转方向。

      在loop()中,我们先读取电位器值,然后将从中获得的值从0到1023变化,线性映射到PWM信号的0到255的值,将其从0到100%的占空比。

      然后使用analogWrite()函数将PWM信号发送到L298N板的Enable引脚,该引脚实际上驱动电动机。

      接下来,我们检查是否按下了按钮,如果是的话,我们将输入1和输入2的状态反置,从而改变电动机的旋转方向。该按钮将用作切换按钮,每次按下该按钮都会改变电动机的旋转方向。

      某宝上这种小车很多,如下图所示;主控可以换成51单片机或者STM32,当然Arduino也没问题,使用L298N就可以快速搭建一个小车了;

      一份很用心的H桥驱动扫盲教程

      某宝的小车

      总结

      本文简单介绍了H桥的原理,并以直流电机为例简单介绍了驱动的状态,整体比较简单,适合新手玩家,最后给出了基于Arduino和L298N的驱动示例,仅供参考,感兴趣可以去某宝逛逛,enjoy。

      请登录之后再进行评论

      登录

      手机阅读天地(APP)

      • 微信公众号
      • 微信小程序
      • 安卓手机

      功能举例:

    • 动态、帖子、文章、音乐、视频、红包
    • 关注,收藏,喜欢,打赏,评论,拉黑
    • 匿名树洞,说我想说
    • 问答悬赏,VIP可见
    • 密码可见,回复可见
    • 禁止回复,回复隐藏
    • 发布活动、投票内容
    • 即时聊天、群聊互动
    • 签到奖励,任务奖励
    • 幸运转盘,抽奖福利
    • 宠物孵化,赠送礼物
    • 认证功能,圈主工资
    • 金币提现,金币转账
    • 动态头像框,专属头衔
    • 主页背景,购物折扣
    • 学习阅读,资源下载
    • 推广福利,海报分享
    • 参与话题,热点互动
    • 玩法太多,体会一下......
    • 实时动态
    • 签到
    • 做任务
    • 发表内容
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置:
    • 还没有账号?点这里立即注册