工业控制
H 桥(全桥)驱动器在驱动有刷直流电机等负载中非常流行,广泛用于机器人和工业。使用 H 桥驱动器的主要优点是效率高、旋转方向改变和制动电机。在这篇文章/视频中,我介绍了一个完整的 H 桥直流电机驱动器,它使用四个 IR3205 功率 MOSFET 和两个 IR2104 MOSFET 驱动器。理论上,上述 MOSFET 可以处理高达 80 A 的电流;然而,在实践中,如果 MOSFET 温度保持尽可能低,使用大散热器甚至风扇,我们可以期望获得高达 40 A 的电流。
电路分析
图1显示了H桥直流电机驱动器的原理图。很明显,电路的核心是两个 IR2104 MOSFET 驱动芯片。
我选择了 4 IR3205 1进行切换。该 MOSFET 提供了对该应用至关重要的良好特性,非常低的 R DS(on)电阻和高电流处理能力。根据 IRF3205 数据表:“International Rectifier 的先进 HEXFET 功率 MOSFET 采用先进的处理技术来实现每硅面积极低的导通电阻。这一优势与 HEXFET 功率 MOSFET 众所周知的快速开关速度和坚固的器件设计相结合,为设计人员提供了一种极其高效和可靠的器件,可用于各种应用。TO-220 封装是所有商业工业应用的普遍首选,功耗水平约为 50 W。TO-220 的低热阻和低封装成本有助于其在整个行业中的广泛接受。
我选择了两个 IR2104 2来驱动 MOSFET。根据 IR2104 数据表:“IR2104(S) 是高压、高速功率 MOSFET 和 IGBT 驱动器,具有相关的高侧和低侧参考输出通道。专有的 HVIC 和锁存免疫 CMOS 技术可实现坚固的单片结构。逻辑输入与标准 CMOS 或 LSTTL 输出兼容,低至 3.3V 逻辑。输出驱动器具有高脉冲电流缓冲级,专为最小化驱动器交叉传导而设计。浮动通道可用于驱动高端配置中的 N 通道功率 MOSFET 或 IGBT,其工作电压范围为 10 至 600 V。”
IR2104 的好消息是该芯片兼容 3.3-V 和 5-V 逻辑电平。图 2显示了芯片的基本接线图。很明显,芯片和负载(电机)的电源不需要相同;然而,这两种电源有一个共同点。
C1、C3、C4、C5、C6、C7 和 C9 已用于降低噪声。R1 和 D2、R2 和 D3、R3 和 D8 以及 R4 和 D9 已用于抑制在 MOSFET 开/关时可能由电感器和电容器引入的振铃和寄生效应。不要忘记 MOSFET 在其栅极引脚上引入了一个电容。1N4148 二极管对栅极电容放电。
D4、D5、D6 和 D7 3用于抑制直流电机的反向电流尖峰。内部反向肖特基二极管已嵌入 MOSFET;然而,使用这些外部肖特基二极管也可以降低内部二极管的应力。根据数据表和应用要求选择 C2、C8、D1 和 D10。
P1 是一个五针 XH 连接器,用于将芯片的电源和控制信号施加到板上。K1 是一个 KF45 电源连接器,用于将电机和电机的电源线连接到板上。
PCB 布局
图 3显示了 H 桥直流电机驱动器的 PCB 布局。它是两层PCB板,所有元件封装都是通孔的。
图 4显示了 PCB 板从顶部和底部的 3D 视图。
我没有 IR2104 4和 IRF3205 5(组件库)的原理图符号和 PCB 封装,因此我使用了 SamacSys 组件库并使用 SamacSys Altium Designer 插件安装了缺少的库(图 5)。SamacSys 为几乎所有著名的电子设计软件提供了插件(图 6)。有趣的是,所有服务都是免费的,图书馆遵循 IPC 标准。您只需要下载并使用您喜欢的 CAD 插件。6另一种选择是从 ComponentSearchEngine.com 下载库并导入它们。
阻焊层没有完全覆盖高载流轨道。这使您可以通过焊接或使用一些粗铜线来加强轨道。图 7显示了这些部分暴露的轨迹。
组装和测试
图 8显示了组装好的单元,图 9显示了测试环境。我已经对 Arduino Uno 进行了编程来控制电机驱动板。我还在原型板上构建了一个简单的键盘,以便能够改变电机的速度(使用 PWM)和旋转方向。
所有按钮均为低电平有效,并使用 Arduino 的内部上拉电阻。您可以考虑下面的 Arduino 代码:
#include
int PWM_Value;
字节 Enable_Pin = 13;
字节 PWM1_Pin = 11;
字节 PWM2_Pin = 10;
字节 PWM_Pin = 11;
按钮 UP(9, 25, true, true);
Button Down(8, 25, true, true);
左按钮(7、25、true、true);
按钮右(6、25、真、真);
无效设置(){
pinMode(Enable_Pin,输出);
pinMode(PWM1_Pin,输出);
pinMode(PWM2_Pin,输出);
UP.开始();
Down.begin();
Left.begin();
对。开始();
digitalWrite(Enable_Pin,低);
PWM_Value = 0;
模拟写入(PWM1_Pin,PWM_Value);
模拟写入(PWM2_Pin,PWM_Value);
}
无效循环()
{
digitalWrite(Enable_Pin, HIGH);
UP.read();
Down.read();
Left.read();
对.read();
if (UP.wasReleased() && PWM_Value < 250)
{
PWM_Value +=5;
}
if (Down.wasReleased() && PWM_Value > 5)
{
PWM_Value -=5;
}
if (Left.wasReleased())
{
PWM_Pin = PWM1_Pin;
模拟写入(PWM2_Pin,0);
}
if (Right.wasReleased())
{
PWM_Pin = PWM2_Pin;
模拟写入(PWM1_Pin,0);
}
模拟写入(PWM_Pin,PWM_Value);
}
材料清单
图 10显示了材料清单。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !