Search Code

H-Bridge 1: การสร้างไดรเวอร์มอเตอร์ H-bridge บนบอร์ดทดลองโดยใช้ทรานซิสเตอร์ดาร์ลิงตัน TIP120 และ TIP125

H-Bridge 1: การสร้างไดรเวอร์มอเตอร์ H-bridge บนบอร์ดทดลองโดยใช้ทรานซิสเตอร์ดาร์ลิงตัน TIP120 และ TIP125

บทแนะนำนี้จะพาคุณไปสร้างไดรเวอร์มอเตอร์ H-bridge โดยใช้ทรานซิสเตอร์ TIP120 และ TIP125 Darlington บนบอร์ดทดลอง การตั้งค่านี้เหมาะสำหรับการควบคุมทิศทางและความเร็วของมอเตอร์กระแสตรง ซึ่งเป็นสิ่งจำเป็นสำหรับโครงการหุ่นยนต์และอัตโนมัติที่หลากหลาย เมื่อสิ้นสุดบทแนะนำนี้ คุณจะสามารถควบคุมมอเตอร์ได้ทั้งการหมุนตามเข็มนาฬิกาและทวนเข็มนาฬิกา พร้อมกับการปรับความเร็ว

ในคู่มือนี้ เราจะใช้ Arduino ในการควบคุมมอเตอร์ การตั้งค่า H-bridge ช่วยให้สามารถเปลี่ยนทิศทางของมอเตอร์ได้โดยการควบคุมสัญญาณนำเข้าที่ส่งไปยังทรานซิสเตอร์ นี่เป็นแง่มุมที่สำคัญสำหรับแอปพลิเคชันหลายอย่าง เช่น แขนหุ่นยนต์หรือหุ่นยนต์เคลื่อนที่ที่ต้องการการควบคุมมอเตอร์ที่แม่นยำ สำหรับข้อมูลเพิ่มเติม โปรดดูวิดีโอ (ในวิดีโอที่ 00:00)

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักของโครงการนี้ประกอบด้วยทรานซิสเตอร์ TIP120 และ TIP125 ซึ่งใช้เป็นสวิตช์ในการควบคุมการทำงานของมอเตอร์ TIP120 เป็นทรานซิสเตอร์ NPN Darlington และ TIP125 เป็นทรานซิสเตอร์ PNP Darlington เมื่อรวมกันจะสร้างการกำหนดค่าฮีบริดจ์ H ซึ่งช่วยให้เราสามารถควบคุมทิศทางของกระแสไฟฟ้าที่ไหลผ่านมอเตอร์ได้

ในการตั้งค่านี้ สัญญาณ PWM (การปรับความกว้างของพัลส์) ถูกใช้เพื่อควบคุมความเร็วของมอเตอร์ ทรานซิสเตอร์จะเปิดและปิดอย่างรวดเร็วเพื่อสร้างแรงดันเฉลี่ยที่กำหนดความเร็วของมอเตอร์ ขา EN จะเปิดหรือปิดทรานซิสเตอร์ เพื่อให้มั่นใจว่ามอเตอร์ทำงานเฉพาะเมื่อจำเป็นเท่านั้น

รายละเอียดแผ่นข้อมูล

ผู้ผลิต เท็กซัส อินสตรูเมนต์ส
หมายเลขชิ้นส่วน TIP120
แรงดันไฟฟ้า Logic/IO 5-15 โวลต์
แรงดันไฟฟ้าจ่าย 60 โวลต์
กระแสไฟฟ้าเอาต์พุต (ต่อช่อง) 5 A
กระแสสูงสุด (ต่อช่อง) 30 A
คำแนะนำความถี่ PWM 1 kHz สูงสุด
เกณฑ์ตรรกะนำเข้า 2.5 โวลต์ (สูง), 0.8 โวลต์ (ต่ำ)
แรงดันไฟฟ้าตก / RDS(on)/ ความอิ่มตัว 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-bridge ให้เชื่อมต่อขา VCC จาก TIP120 และ TIP125 เข้ากับแหล่งจ่าย 5V บน Arduino ของคุณ เชื่อมต่อขา GND เข้ากับกราวด์ ขา PWM ควบคุมPWM1และPWM2ควรเชื่อมต่อกับขาดิจิตอล 9 และ 3 บน Arduino ตามลำดับ ขาเปิดใช้งานEN1และEN2จะเชื่อมต่อกับขาดิจิตอล 8 และ 2.

ถัดไป เชื่อมต่อขั้วของมอเตอร์ของคุณเข้ากับขาเก็บของทรานซิสเตอร์ TIP120 และ TIP125 ตรวจสอบให้แน่ใจว่ามอเตอร์เข้ากันได้กับแหล่งจ่ายไฟของคุณ หากใช้ส่วนประกอบเพิ่มเติมเช่นไดโอดสำหรับการป้องกันฟลายแบ็ค ให้วางไว้ขนานกับขั้วมอเตอร์เพื่อป้องกันความเสียหายจาก EMF กลับ หากคุณใช้โมเดล 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
  }
}

TheMotorฟังก์ชันรับทิศทางแบบบูลีนและความเร็วเป็นจำนวนเต็ม มันแมพเปอร์เซ็นต์ความเร็วไปยังค่าพีดับเบิลยูเอ็มและใช้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); 
  }
 
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

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