0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过H桥驱动感性负载的直流电机驱动设计方案

电子设计 来源:小麦大叔 作者:菜刀和小麦 2021-01-04 14:47 次阅读

什么是H桥?

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

o4YBAF_yuLGADKWWAAFMCSEaJF0031.png

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

开关状态

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

正转

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

● 打开Q1和Q4;

● 关闭Q2和Q3;

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

pIYBAF_yuMiAGQHiAALkFCgp9PM170.png

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

● 关闭Q1和Q4;

● 打开Q2和Q3;

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

o4YBAF_yuOGAPSD2AAKa-woOm9o671.png

反转

调速

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

● 关闭Q2,Q3;

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

具体如下所示;

pIYBAF_yuPWAAuzVAAKn0p3VA7g310.png

停止状态

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

● 正转情况下;Q1和Q4是打开状态;

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

这里有两种办法:

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

o4YBAF_yuQuAajoxAALfqpFc35I106.png

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

pIYBAF_yuR6AYpBsAAKyFSvuuxI258.png

应用

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

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

pIYBAF_yuS-ASMUtAAUR_yiHcXo434.png

L298N模块

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

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

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

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

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

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

o4YBAF_yuT-AJ_fKAALS-SVnUUM531.png

架构

#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桥的原理,并以直流电机为例简单介绍了驱动的状态,整体比较简单,适合新手玩家,最后给出了基于Arduino和L298N的驱动示例,仅供参考。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 稳压器
    +关注

    关注

    24

    文章

    4088

    浏览量

    92022
  • 控制信号
    +关注

    关注

    0

    文章

    118

    浏览量

    11835
  • 驱动电机
    +关注

    关注

    8

    文章

    379

    浏览量

    30410
收藏 人收藏

    评论

    相关推荐

    无刷直流电机驱动单元

    NEWUnitBLDCDriverUnitBLDCDriver是一款专为无刷直流电机(BLDC)设计的驱动单元,采用I2C通信接口,可同时挂载多路电机进行控制。适用于风扇、小型泵等小型无刷直流
    的头像 发表于 04-13 08:29 82次阅读
    无刷<b class='flag-5'>直流电机</b><b class='flag-5'>驱动</b>单元

    使用PWM输出方式驱动有刷直流电机:PWM驱动的原理

    所需功率的一种方法。脉冲的大小和周期是恒定的,通过调整打开时的脉冲宽度(时间)来控制要发送的功率。输出电压是对应于导通和脉冲周期的时间比=占空比的平均大小。 下面是有刷直流电机的PWM驱动原理示意图
    发表于 03-26 13:57

    直流电机驱动器电路图分享

    直流电机驱动器是一种电子设备,用于控制和驱动直流电动机。其工作原理是将来自控制器的步进和方向输入转换为与电机兼容的电流和电压,从而控制
    的头像 发表于 02-04 16:51 1339次阅读
    <b class='flag-5'>直流电机</b><b class='flag-5'>驱动</b>器电路图分享

    直流电机的励磁是直流电吗?直流电机励磁的作用?

    磁是指直流电机的励磁线圈直接与电机绕组相连,形成闭路,通过在绕组中产生磁场来达到励磁的目的。根据励磁电源的不同,自励磁又可以分为磁场电源自励磁和电枢电源自励磁两种方式。 磁场电源自励磁是指通过
    的头像 发表于 01-18 16:07 973次阅读

    直流电机驱动电路结构组成

    直流电机驱动电路是一种将直流电源转换为直流电机所需的电流和电压的电路。它主要由电源模块、电流控制模块和速度控制模块组成。这些模块的功能和相互之间的关系是实现
    的头像 发表于 12-20 17:11 591次阅读

    请问DC24V直流电机属于感性负载吗?

    DC24V直流电机属于感性负载吗?
    发表于 11-20 07:34

    单通道低压 H 电机驱动芯片AT9110H 兼容L9110 马达驱动芯片

    H直流电机驱动电路是一种用于控制直流电机运转的电路,其主要特点是可以实现正反转控制,控制电机
    发表于 11-07 14:47

    H驱动有刷电机资料分享

    使用Proteus仿真,使用单片机,搭建H驱动电路,使用NMOS驱动24V有刷直流电机,资料内包含整个程序工程,peoteus工程,以及一
    发表于 09-27 06:32

    无刷直流电机中的门驱动

    电子发烧友网站提供《无刷直流电机中的门驱动器.pdf》资料免费下载
    发表于 07-24 15:44 0次下载
    无刷<b class='flag-5'>直流电机</b>中的门<b class='flag-5'>驱动</b>器

    如何控制无刷直流电机

    本文将探讨驱动无刷直流电机的多种不同技术、传感器方案以及使用的流行算法。此外,还将介绍一些来自领先供应商的电机驱动器IC以及合适的开发和原型
    的头像 发表于 07-23 16:05 518次阅读
    如何控制无刷<b class='flag-5'>直流电机</b>

    如何控制无刷直流电机

    本文将探讨驱动无刷直流电机的多种不同技术、传感器方案以及使用的流行算法。此外,还将介绍一些来自领先供应商的电机驱动器IC以及合适的开发和原型
    的头像 发表于 07-14 15:12 756次阅读
    如何控制无刷<b class='flag-5'>直流电机</b>

    有刷直流电机驱动电路及其优缺点

    直流电动机已经存在了近 200 年,在此期间进行了一系列稳定的改进。最近,无刷直流电机变得越来越流行,但对于许多应用来说,有刷直流电机仍然是正确的选择。有刷电机成本更低,
    发表于 07-12 09:13 904次阅读
    有刷<b class='flag-5'>直流电机</b><b class='flag-5'>驱动</b>电路及其优缺点

    基于STM32的300W无刷直流电机驱动方案

    由于无刷直流电机大规模的研发和技术的逐渐成熟,已逐步成为工业用电机的发展主流。一起来看300W直流无刷电机驱动
    的头像 发表于 07-06 11:09 568次阅读
    基于STM32的300W无刷<b class='flag-5'>直流电机</b><b class='flag-5'>驱动</b><b class='flag-5'>方案</b>

    555定时器无刷直流电机驱动

    电子发烧友网站提供《555定时器无刷直流电机驱动板.zip》资料免费下载
    发表于 06-09 11:28 0次下载
    555定时器无刷<b class='flag-5'>直流电机</b><b class='flag-5'>驱动</b>板

    流电机直流电机的区别是什么

    流电机直流电机的区别是什么 交流电机直流电机的主要区别是它们运转的方式和所需要的电源类型不同。 交流电机
    的头像 发表于 06-02 15:37 4697次阅读