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ı

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
/*
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);
}
}
Kaynaklar ve referanslar
-
Dış
Dosyalar📁
Gerber files
-
H-Bridge-TIP120-TIP125 Gerber file for PCBXIncludes 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.zip0.05 MB