Search Code

H-Köprüsü 1: TIP120 ve TIP125 Darlington transistörlerini kullanarak bir breadboard üzerinde H-köprüsü motor sürücüsü inşa etme

H-Köprüsü 1: TIP120 ve TIP125 Darlington transistörlerini kullanarak bir breadboard üzerinde H-köprüsü motor sürücüsü inşa etme

Bu eğitim, bir breadboard üzerinde TIP120 ve TIP125 Darlington transistörleri kullanarak bir H-köprüsü motor sürücüsü inşa etmenize rehberlik edecektir. Bu kurulum, bir DC motorun yönünü ve hızını kontrol etmek için idealdir; bu, çeşitli robotik ve otomasyon projeleri için gereklidir. Bu eğitimin sonunda, hem saat yönünde hem de saat yönünün tersine dönen bir motoru kontrol edebilecek ve hız modülasyonu yapabileceksiniz.

Bu kılavuzda, motoru kontrol etmek için bir Arduino kullanacağız. H-köprüsü konfigürasyonu, transistörlere gönderilen giriş sinyallerini kontrol ederek motorun yönünü tersine çevirmeye olanak tanır. Bu, hassas motor kontrolü gerektiren robot kolları veya mobil robotlar gibi birçok uygulama için kritik bir unsurdur. Daha fazla açıklama için lütfen videoya bakın (videoda 00:00).

Donanım Açıklandı

Bu projenin ana bileşenleri, motorun çalışmasını kontrol etmek için anahtar olarak kullanılan TIP120 ve TIP125 transistörleridir. TIP120, bir NPN Darlington transistörüdür ve TIP125, bir PNP Darlington transistörüdür. Birlikte, motorun içinden akan akımın yönünü kontrol etmemizi sağlayan H-köprüsü konfigürasyonunu oluştururlar.

Bu düzenekte, PWM (Darbe Genişliği Modülasyonu) sinyali motorun hızını kontrol etmek için kullanılır. Transistörler, motor hızını belirleyen ortalama bir voltaj oluşturmak için hızlı bir şekilde açılıp kapanır. EN pinleri, transistörleri etkinleştirir veya devre dışı bırakır ve motorun yalnızca gerektiğinde çalışmasını sağlar.

Veri Sayfası Detayları

Üretici Texas Instruments
Parça numarası TIP120
Mantık/Giriş-Çıkış voltajı 5-15 V
Besleme voltajı 60 V
Çıkış akımı (kanal başına) 5 A
Zirve akım (kanal başına) 30 A
PWM frekansı rehberi 1 kHz max
Giriş mantığı eşikleri 2.5 V (yüksek), 0.8 V (düşük)
Gerilim düşüşü / RDS(on)doygunluk 1.2 V
Termal sınırlar 175 °C
Paket TO-220
Notlar / varyantlar TIP125 olarak mevcut

  • Yüksek akım uygulamaları için uygun ısı dağıtımını sağlamak.
  • PWM sinyallerini motor hızını etkili bir şekilde kontrol etmek için kullanın.
  • Transistör yönünü doğrulayın, devre hasarını önlemek için.
  • Gerilim değerlerine dikkat edin, sınırları aşmamak için.
  • Gerilim kaynağını stabilize etmek için ayrıştırma kapasitörleri kullanın.

Bağlantı Talimatları

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

H-köprülü motor sürücüsünü bağlamak için, önce TIP120 ve TIP125'ten VCC pinini Arduino'nuzdaki 5V kaynağına bağlayın. GND pinini toprağa bağlayın. PWM kontrol pinleri,PWM1vePWM2, sırasıyla Arduino'daki dijital pin 9 ve 3'e bağlanmalıdır. Enable pinleri,EN1veEN2, dijital pin 8 ve 2'ye bağlanacaktır.

Sonraki adımda, motorunuzun terminallerini TIP120 ve TIP125 transistörlerinin kolektör pinlerine bağlayın. Motorun güç kaynağınızla uyumlu olduğundan emin olun. Eğer geri EMF'den koruma için diyotlar gibi ek bileşenler kullanıyorsanız, bunları motor terminalleriyle paralel olarak yerleştirin. Farklı Arduino modelleri kullanıyorsanız, PWM ve etkinleştirme sinyalleri için pin eşlemelerini kontrol edin.

Kod Örnekleri ve Geçiş Rehberi

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

Kurulumda, PWM sinyalleri ve etkinleştirme pinleri için kontrol pinlerini tanımlıyoruz. BupinModebu fonksiyon, motoru çalıştıran transistörleri kontrol etmek için bu pinleri çıkış olarak ayarlar.

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

Bu döngü fonksiyonu motorun çalışmasını gösterir. Öncelikle motoru saat yönünde %50 hızda 5 saniye çalıştırır, ardından 2 saniye durur.Motorfonksiyon, motorun bu girdilere dayalı davranışını kontrol eden yön ve hız parametreleri ile çağrılır.

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

TheMotorfonksiyon bir boolean yön ve bir tamsayı hız alır. Hız yüzdesini bir PWM değerine eşler ve kullanıranalogWritemotor kontrolü için uygun pini ayarlamak. Bu fonksiyon, motor yönünü ve hızını dinamik olarak değiştirmek için çok önemlidir.

Gösterim / Ne Beklemeli

Kablolama ve kodu yükledikten sonra, motorun 5 saniye boyunca %50 hızda saat yönünde döndüğünü gözlemlemelisiniz, ardından duracaktır. Bir gecikmeden sonra, motor 5 saniye boyunca %80 hızda saat yönünün tersine dönecektir. Yaygın hatalar arasında yanlış kablolama ve voltaj değerlerini aşmak yer alır; bu, transistörlere veya motora zarar verebilir.

Video Zaman Damgaları

  • 00:00- Giriş
  • 01:30- Donanım Genel Bakış
  • 03:15- Kablolama Talimatları
  • 05:00- Kod Geçişi
  • 08:45- Gösteri

Görseller

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

Dosyalar📁

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