Search Code

H-Jembatan 1: Membangun penggerak motor H-jembatan di papan sirkuit menggunakan transistor Darlington TIP120 dan TIP125

H-Jembatan 1: Membangun penggerak motor H-jembatan di papan sirkuit menggunakan transistor Darlington TIP120 dan TIP125

Tutorial ini akan memandu Anda dalam membangun penggerak motor H-bridge menggunakan transistor Darlington TIP120 dan TIP125 di papan sirkuit. Pengaturan ini ideal untuk mengontrol arah dan kecepatan motor DC, yang sangat penting untuk berbagai proyek robotika dan otomatisasi. Di akhir tutorial ini, Anda akan dapat mengontrol motor dengan rotasi searah jarum jam dan berlawanan arah jarum jam, serta modifikasi kecepatan.

Dalam panduan ini, kami akan menggunakan Arduino untuk mengendalikan motor. Konfigurasi H-bridge memungkinkan untuk membalik arah motor dengan mengendalikan sinyal input yang dikirim ke transistor. Ini adalah aspek penting untuk banyak aplikasi, seperti lengan robot atau robot bergerak yang memerlukan kontrol motor yang tepat. Untuk klarifikasi lebih lanjut, silakan merujuk ke video (dalam video pada 00:00).

Penjelasan Perangkat Keras

Komponen utama dari proyek ini termasuk transistor TIP120 dan TIP125, yang digunakan sebagai saklar untuk mengontrol operasi motor. TIP120 adalah transistor Darlington NPN, dan TIP125 adalah transistor Darlington PNP. Bersama-sama, mereka membentuk konfigurasi H-jembatan, memungkinkan kita untuk mengontrol arah arus yang mengalir melalui motor.

Dalam pengaturan ini, sinyal PWM (Modulasi Lebar Pulsa) digunakan untuk mengontrol kecepatan motor. Transistor menyala dan mati dengan cepat untuk menciptakan tegangan rata-rata yang menentukan kecepatan motor. Pin EN mengaktifkan atau menonaktifkan transistor, memastikan motor beroperasi hanya saat diperlukan.

Detail Lembar Data

Produsen Texas Instruments
Nomor bagian TIP120
Tegangan Logika/IO 5-15 V
Tegangan suplai 60 V
Arus keluaran (per saluran) 5 A
Arus puncak (per saluran) 30 A
Panduan frekuensi PWM 1 kHz maks
Ambang logika input 2,5 V (tinggi), 0,8 V (rendah)
Penurunan tegangan / RDS(on)/ saturasi 1,2 V
Batas termal 175 °C
Paket TO-220
Catatan / varian Tersedia sebagai TIP125

  • Pastikan pendinginan yang tepat untuk aplikasi arus tinggi.
  • Gunakan sinyal PWM untuk mengontrol kecepatan motor secara efektif.
  • Verifikasi orientasi transistor untuk mencegah kerusakan sirkuit.
  • Perhatikan peringkat tegangan untuk menghindari melebihi batas.
  • Gunakan kapasitor decoupling untuk menstabilkan pasokan tegangan.

Petunjuk Pengkabelan

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

Untuk menghubungkan driver motor H-bridge, pertama sambungkan pin VCC dari TIP120 dan TIP125 ke suplai 5V pada Arduino Anda. Sambungkan pin GND ke ground. Pin kontrol PWM,PWM1danPWM2, harus terhubung ke pin digital 9 dan 3 pada Arduino, masing-masing. Pin enable,EN1danEN2, akan terhubung ke pin digital 8 dan 2.

Selanjutnya, sambungkan terminal motor Anda ke pin kolektor transistor TIP120 dan TIP125. Pastikan motor tersebut kompatibel dengan catu daya Anda. Jika menggunakan komponen tambahan seperti dioda untuk perlindungan flyback, tempatkan dioda tersebut secara paralel dengan terminal motor untuk mencegah kerusakan akibat back EMF. Jika Anda menggunakan model Arduino yang berbeda, verifikasi pemetaan pin untuk sinyal PWM dan enable.

Contoh Kode & Panduan

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

Dalam pengaturan, kami mendefinisikan pin kontrol untuk sinyal PWM dan pin enable.pinModefungsi mengatur pin-pin ini sebagai output untuk mengendalikan transistor yang menggerakkan motor.

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

Fungsi loop ini menunjukkan operasi motor. Pertama, ia menjalankan motor searah jarum jam pada kecepatan 50% selama 5 detik, kemudian berhenti selama 2 detik.Motorfungsi dipanggil dengan parameter arah dan kecepatan, mengendalikan perilaku motor berdasarkan input tersebut.

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

TheMotorfungsi ini mengambil arah boolean dan kecepatan integer. Ini memetakan persentase kecepatan ke nilai PWM dan menggunakananalogWriteuntuk mengatur pin yang sesuai untuk kontrol motor. Fungsi ini sangat penting untuk mengubah arah dan kecepatan motor secara dinamis.

Demonstrasi / Apa yang Diharapkan

Setelah menyelesaikan pengkabelan dan mengunggah kode, Anda harus mengamati motor berputar searah jarum jam pada kecepatan 50% selama 5 detik, diikuti dengan berhenti. Setelah jeda, motor akan berputar berlawanan arah jarum jam pada kecepatan 80% selama 5 detik lagi. Kesalahan umum termasuk pengkabelan yang salah dan melebihi batas tegangan, yang dapat merusak transistor atau motor.

Stempel Waktu Video

  • 00:00- Pendahuluan
  • 01:30- Ikhtisar Perangkat Keras
  • 03:15- Petunjuk Pengkabelan
  • 05:00- Penjelasan Kode
  • 08:45- Demonstrasi

Gambar

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

Berkas📁

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