Search Code

H-brug 1: Bou van 'n H-brug motorbestuurder op 'n broodbord met TIP120 en TIP125 Darlington-transistors

H-brug 1: Bou van 'n H-brug motorbestuurder op 'n broodbord met TIP120 en TIP125 Darlington-transistors

Hierdie tutoriaal sal jou lei om 'n H-brug motorbestuurder te bou met TIP120 en TIP125 Darlington-transistors op 'n broodbord. Hierdie opstelling is ideaal om die rigting en spoed van 'n gelykstroommotor te beheer, wat noodsaaklik is vir verskeie robotika- en outomatiseringsprojekte. Teen die einde van hierdie tutoriaal sal jy in staat wees om 'n motor met beide kloksgewys en teen die klok in rotasies te beheer, saam met spoedmodulasie.

In hierdie gids sal ons 'n Arduino gebruik om die motor te beheer. Die H-brug konfigurasie maak dit moontlik om die motor se rigting te keer deur die insetteksels wat na die transistors gestuur word, te beheer. Dit is 'n belangrike aspek vir baie toepassings, soos robotarms of mobiele robots wat presiese motorbeheer vereis. Vir verdere verduideliking, verwys asseblief na die video (in video by 00:00).

Hardeware verduidelik

Die hoofkomponente van hierdie projek sluit TIP120 en TIP125 transistors in, wat as skakelaars gebruik word om die motor se werking te beheer. Die TIP120 is 'n NPN Darlington-transistor, en die TIP125 is 'n PNP Darlington-transistor. Saam vorm hulle die H-brug konfigurasie, wat ons in staat stel om die rigting van die stroom wat deur die motor vloei, te beheer.

In hierdie opstelling word die PWM (Pulsbreedtemodulasie) sein gebruik om die spoed van die motor te beheer. Die transistors skakel vinnig aan en af om 'n gemiddelde spanning te skep wat die motorspoed bepaal. Die EN-pinne stel die transistors in staat of deaktiveer dit, wat verseker dat die motor slegs werk wanneer dit nodig is.

Datasheet Besonderhede

Fabrikant Texas Instruments
Onderdeel nommer TIP120
Logika/IO spanning 5-15 V
Voorsienings spanning 60 V
Uitsetstroom (per kanaal) 5 A
Piekstroom (per kanaal) 30 A
PWM frekwensie riglyne 1 kHz maks
Invoer logika drempels 2.5 V (hoog), 0.8 V (laag)
Spanningstoename / RDS(on)/ versadiging 1.2 V
Termiese perke 175 °C
Pakket TO-220
Notas / variante Beskikbaar as TIP125

  • Verseker die behoorlike hitte-afleiding vir hoë stroomtoepassings.
  • Gebruik PWM-seine om die motorspoed effektief te beheer.
  • Verifieer die transistororiëntasie om sirkuitschade te voorkom.
  • Let op die spanninggraderings om te voorkom dat jy die perke oorskry.
  • Gebruik ontkoppelkapasitors om die spanningsvoorsiening te stabiliseer.

Draadinstruksies

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

Om die H-brug motorbestuurder te bedrading, verbind eers die VCC-pin van die TIP120 en TIP125 aan die 5V-voorsiening op jou Arduino. Verbind die GND-pin aan die grond. Die PWM-beheerpunte,PWM1enPWM2, moet onderskeidelik aan digitale penne 9 en 3 op die Arduino gekoppel wees. Die aktiveringspenne,EN1enEN2, sal aansluit by digitale penne 8 en 2.

Verbind vervolgens die terminale van jou motor met die versamelpunte van die TIP120 en TIP125 transistors. Verseker dat die motor versoenbaar is met jou kragbron. As jy addisionele komponente soos diodes vir terugslagbeskerming gebruik, plaas hulle parallel met die motor terminale om skade van terug EMF te voorkom. As jy verskillende Arduino-modelle gebruik, verifieer die penkaarte vir PWM en aktiveringsignale.

Kode Voorbeelde & Staproete

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

In die opstelling definieer ons die beheerpunte vir die PWM seine en aktiveringspunte. DiepinModefunksie stel hierdie penne as uitset in om die transistors te beheer wat die motor aandryf.

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

Hierdie lusfunksie demonstreer die werking van die motor. Dit draai eers die motor in 'n kloksgewys rigting teen 50% spoed vir 5 sekondes, dan stop dit vir 2 sekondes. DieMotorfunksie word genoem met rigting en spoed parameters, wat die gedrag van die motor op grond van daardie insette beheer.

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
  }
}

DieMotorfunksie neem 'n booleaanse rigting en 'n heelgetal spoed. Dit kaart die spoedpersentasie na 'n PWM-waarde en gebruikanalogWriteom die toepaslike pen vir motorbeheer in te stel. Hierdie funksie is van kardinale belang om die motorrigting en spoed dinamies te verander.

Demonstraie / Wat om te verwag

Na voltooiing van die bedrading en die opgradering van die kode, behoort jy die motor te sien draai met die klok mee teen 50% spoed vir 5 sekondes, gevolg deur 'n stop. Na 'n vertraging sal dit teen 80% spoed teen die klok in die ander rigting draai vir nog 5 sekondes. Algemene valkuiles sluit verkeerde bedrading en oorskryding van spanninggraderings in, wat die transistors of motor kan beskadig.

Video Tydmerke

  • 00:00- Inleiding
  • 01:30- Hardeware Oorsig
  • 03:15- Bedrading Instruksies
  • 05:00- Kode Staproete
  • 08:45- Demonstrasie

Beelde

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
Taal: 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); 
  }
 
}

Lêers📁

Gerber files

  • 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