搜索代码

H桥1:在面包板上使用TIP120和TIP125达林顿晶体管构建H桥电机驱动器

H桥1:在面包板上使用TIP120和TIP125达林顿晶体管构建H桥电机驱动器

本教程将指导您在面包板上使用TIP120和TIP125达林顿晶体管构建H桥电机驱动器。该设置非常适合控制直流电机的方向和速度,这对于各种机器人和自动化项目至关重要。在本教程结束时,您将能够控制电机的顺时针和逆时针旋转,并进行速度调节。

在本指南中,我们将使用Arduino来控制电机。H桥配置通过控制发送到晶体管的输入信号来实现电机方向的反转。这是许多应用中的一个关键方面,例如需要精确电机控制的机器人手臂或移动机器人。有关进一步的说明,请参阅视频(视频中的00:00)。

硬件解析

该项目的主要组件包括 TIP120 和 TIP125 晶体管,它们用作开关来控制电机的操作。TIP120 是 NPN 达林顿晶体管,而 TIP125 是 PNP 达林顿晶体管。它们一起形成 H 桥配置,使我们能够控制流经电机的电流方向。

在这个设置中,PWM(脉宽调制)信号用于控制电机的速度。晶体管快速开关以产生一个平均电压,从而决定电机的速度。EN 引脚启用或禁用晶体管,确保电机仅在需要时运行。

数据表详情

制造商 德州仪器
零件编号 TIP120
逻辑/IO电压 5-15 伏
供电电压 60 伏
输出电流(每通道) 5 A
峰值电流(每通道) 30 A
PWM频率指导 1 kHz 最大
输入逻辑阈值 2.5 V(高),0.8 V(低)
电压降 / RDS(开)/ 饱和度 1.2 伏
热限制 175 °C
包裹 TO-220
备注 / 变体 可作为TIP125使用

  • 确保高电流应用的适当散热。
  • 使用PWM信号有效控制电机速度。
  • 验证晶体管方向以防止电路损坏。
  • 注意电压等级,以避免超过限制。
  • 使用去耦电容器来稳定电压供应。

接线说明

555 Relay Timer of 20A 0-10 minutest on breadboard wiring
555 Relay Timer of 20A 0-10 minutest on breadboard wiring

要连接H桥电机驱动器,首先将TIP120和TIP125的VCC引脚连接到Arduino的5V电源。将GND引脚连接到地面。PWM控制引脚,PWM1PWM2应分别连接到Arduino的数字引脚9和3。使能引脚,EN1EN2将连接到数字引脚8和2。

接下来,将电机的端子连接到TIP120和TIP125晶体管的集电极引脚。确保电机与您的电源兼容。如果使用二极管等额外组件进行反向保护,请将它们与电机端子并联,以防止反向电动势造成损坏。如果您使用不同的Arduino型号,请验证PWM和使能信号的引脚映射。

代码示例与演练

const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;

在设置中,我们定义了PWM信号的控制引脚和使能引脚。pinMode该函数将这些引脚设置为输出,以控制驱动电机的晶体管。

void loop() {
  Motor(CW, 50); //in CW at 50% speed
  delay(5000);
  stop(); // stops the motor
  delay(2000);
}

此循环功能演示了电机的操作。它首先以50%的速度顺时针运行电机5秒钟,然后停止2秒。Motor函数被调用时带有方向和速度参数,根据这些输入控制电机的行为。

void Motor(boolean direction, int speed=0) {
  int speedPWM = map(speed, 0, 100, 0, 255);
  if(direction) {
    analogWrite(PWM1, speedPWM); // Set speed for CW
  } else {
    analogWrite(PWM2, speedPWM); // Set speed for CCW
  }
}

Motor该函数接受一个布尔方向和一个整数速度。它将速度百分比映射到PWM值并使用analogWrite设置适当的引脚以控制电机。此功能对于动态改变电机方向和速度至关重要。

演示 / 期待什么

完成接线并上传代码后,您应该观察到电机以50%的速度顺时针旋转5秒,然后停止。经过一段延迟后,它将以80%的速度逆时针旋转另5秒。常见的陷阱包括接线错误和超过电压额定值,这可能会损坏晶体管或电机。

视频时间戳

  • 00:00- 介绍
  • 01:30- 硬件概述
  • 03:15- 接线说明
  • 05:00- 代码演示
  • 08:45- 演示

图像

H-Bridge Project with TIP120 TIP125 Wiring diagram
H-Bridge Project with TIP120 TIP125 Wiring diagram
Schematic for TIP120, TIP125 H-bridge
schematic for TIP120 TIP125 H-Bridge
H-Bridge Project with TIP120 TIP125 3
H-Bridge Project with TIP120 TIP125 3
555 Relay Timer of 20A 0-10 minutest on breadboard wiring
555 Relay Timer of 20A 0-10 minutest on breadboard wiring
371-Arduino code for H-Bridge Project with TIP120/TIP125 Transistors
语言: C++
/*
This code is for:
Building an H-Bridge Motor driver using TIP120 and TIP125 on a breadboard and full PCB Design with Arduino
https://youtu.be/6ugrL5ziPn8

This code has been downloaded from Robojax.com
You can access the resources page and download the Gerber file to produce
the PCB or a fully assembled PCB from PCBX.com
Visit https://robojax.com/tutorial_view.php?id=392
to control a DC motor using TIP120 and TIP125 as an
H bridge
Written by Ahmad Shamshiri
26 Aug 2024
*/
const int PWM1= 9;//pin with ~
const int EN1= 8;

const int PWM2= 3;//pin with ~
const int EN2= 2;

const boolean CW =1;
const boolean CCW =0;

void Motor(boolean, int);//prototype
void brake();//prototype

void setup() {
  Serial.begin(9600);
  Serial.println("TIP120 H Bridge by Robojax");
  pinMode(PWM1, OUTPUT);
  pinMode(EN1, OUTPUT);

  pinMode(PWM2, OUTPUT);
  pinMode(EN2, OUTPUT);   

}

void loop() {
  Motor(CW, 50);//in CW at 50% speed
  delay(5000);

  stop();
  delay(2000);

  Motor(CCW, 80);//in CCW at 80% speed
  delay(5000);

  brake();
  delay(2000);

  for (int i=0; i<=100; i++)
  {
   Motor(CCW, i);
   delay(25);
  }
    delay(5000);

  brake();
  delay(2000);
}

/*
stop()
stops the output
*/
void stop()
{
    Serial.println ("=== Stop"); 
  digitalWrite(PWM1, LOW);
  digitalWrite(EN1, LOW);
  digitalWrite(PWM2, LOW);
  digitalWrite(EN2, LOW);  
}

/*
brake()
*/
void brake()
{
    Serial.println ("=== Brake"); 
  digitalWrite(PWM1, HIGH);
  digitalWrite(EN1, LOW);
  digitalWrite(PWM2, HIGH);
  digitalWrite(EN2, LOW);   
}

void Motor(boolean direction, int speed=0)
{
  int speedPWM = map(speed, 0, 100, 0, 255);
  Serial.print("Speed: "); Serial.print (speedPWM);
  Serial.print ("(");Serial.print (speed);Serial.print ("%)");


  if(direction){
    Serial.print(" dir: ");Serial.println ("CW");   
      analogWrite(PWM1, speedPWM);
    digitalWrite(EN1, HIGH);
    digitalWrite(PWM2, LOW);
    digitalWrite(EN2, LOW); 
  }else{
    Serial.print(" dir: ");Serial.println ("CCW");  
    digitalWrite(PWM1, LOW);
    digitalWrite(EN1, LOW);    
      analogWrite(PWM2, speedPWM);
    digitalWrite(EN2, HIGH); 
  }
 
}

文件📁

其他文件

  • H-Bridge-TIP120-TIP125 Gerber file for PCBX
    Includes H-Bridge-TIP120-TIP125.zip, H-Bridge-TIP120-TIP125-BOM.xls and H-Bridge-TIP120-TIP125-coor.xls files to place order easily.
    H-Bridge-TIP120-TIP125 Gerber file.zip 0.05 MB