Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control

วงจรต้นแบบขนาดเล็กสำหรับขับมอเตอร์กระแสตรงขนาด 24 โวลต์ 300 วัตต์ แบบเอชบริดจ์ (H-Bridge) และสามารถต่อใช้งานร่วมกับบอร์ดควบคุม Arduino UNO ได้ ลักษณะวงจรแบบง่ายๆ ด้วยเพาเวอร์มอสเฟตแบบ N-channel กับ P-channel และทรานซิสเตอร์ขับสัญญาณ มีวงจรป้องกันกระแสเกิน (Over Current Protection), การแสดงผลทิศทางการหมุนของมอเตอร์เพื่อให้สังเกตการทำงานได้ง่าย

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 1 เตรียมอุปกรณ์ประกอบวงจรต้นแบบ

รูปที่ 1 อุปกรณ์ที่ใช้ในการประกอบโครงงานต้นแบบโดยในรูปจะเป็นอุปกรณ์ส่วนที่สำคัญหลักๆ โดยในโครงงานนี้ใช้อุปกรณ์ที่สามารถหาซื้อได้ทั่วไป

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 2 เริ่มประกอบวงจรต้นแบบส่วนของเพาเวอร์มอสเฟต

รูปที่ 2 ประกอบส่วนของเพาเวอร์มอสเฟตและตัวต้านทานตรวจจับกระแสเกินให้กับวงจรในเบื้องต้นและวางเลย์เอาต์อุปกรณ์บนแผ่นวงจรพิมพ์ในเบื้องต้นก่อน

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 3 ลักษณะของบอร์ดต้นแบบที่ประกอบขึ้น

รูปที่ 3 ลักษณะของบอร์ดต้นแบบที่ประกอบขึ้นและสามารถนำไปทดลองการทำงานเบื้องต้น สำหรับตรวจสอบความถูกต้องของการประกอบอุปกรณ์ต่างๆ

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 4 ลักษณะของการต่อไฟเลี้ยงและมอเตอร์สำหรับทดสอบการทำงาน

รูปที่ 4 แสดงการต่อสายไฟให้กับบอร์ดต้นแบบที่ตำแหน่งต่างๆ เช่น แหล่งจ่ายไฟเลี้ยงวงจร การต่อมอเตอร์ ตำแหน่งของการรับสัญญาณควบคุมจากบอร์ด Arduino UNO เป็นต้น

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 5 ลักษณะของการทดลองวงจรขับมอเตอร์

รูปที่ 5 แสดงลักษณะของการทดลองขับมอเตอร์จากบอร์ดต้นแบบที่ประกอบขึ้น และการต่ออุปกรณ์ต่างๆ ของบอร์ดสร้างสัญญาณควบคุมจะใช้ Arduino UNO และเขียนโปรแกรมควบคุมการทำงานตามที่แสดงข้างล่างนี้

/*
  Code Program Small Size H-Bridge DC Motor Drive 300W
  Test RUN Motor CW, CCW, Free running and Braking mode
  MCU : Arduino UNO
  Date : 29-10-2021 (V.0)
  R&D by : www.electronicsDNA.com
*/

void setup() { 

  pinMode(13,OUTPUT);   // LED Signal
  pinMode(3,OUTPUT);     // Low  Side A
  pinMode(4,OUTPUT);     // High Side A
  pinMode(5,OUTPUT);     // High Side B
  pinMode(6,OUTPUT);     // Low  Side B

  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW); 
   
  digitalWrite(13,HIGH);   
  delay(300); 
  digitalWrite(13,LOW);   
  delay(100);  
}

void loop() {
  
//--------- CW Rotation -----------------------
  digitalWrite(5,HIGH);     // High Side B
  delay(200);             
  analogWrite(3,128);       // PWM Signal Control D = 50% @500Hz
  delay(5000);  
  
//------- RUN Free Stage ---------------------
  digitalWrite(5,LOW);      // High Side B
  digitalWrite(3,LOW);      // Low  Side A
  delay(3000);
  
//---------- Stop Now -------------------------
  digitalWrite(3,HIGH);     // Low  Side A
  digitalWrite(6,HIGH);     // Low  Side B
  delay(1000); 

  digitalWrite(3,LOW);      // Low  Side A
  digitalWrite(6,LOW);      // Low  Side B
  delay(200); 
  
//----------- LED ON --------------------------  
  digitalWrite(13,HIGH);   
  delay(300); 
  digitalWrite(13,LOW);   
  delay(100);   
  

//--------- CCW Rotation ----------------------
  digitalWrite(4,HIGH);     // High Side A
  delay(200);             
  analogWrite(6,128);       // PWM Signal Control D=50% @1kHz
  delay(5000); 
  
//------- RUN Free Stage ---------------------
  digitalWrite(4,LOW);      // High Side A
  digitalWrite(6,LOW);      // Low  Side B
  delay(3000);  

//---------- Stop Now -------------------------
  digitalWrite(3,HIGH);     // Low  Side A
  digitalWrite(6,HIGH);     // Low  Side B
  delay(1000); 

  digitalWrite(3,LOW);      // Low  Side A
  digitalWrite(6,LOW);      // Low  Side B
  delay(200); 
    
//----------- LED ON -------------------------- 
  digitalWrite(13,HIGH);   
  delay(300); 
  digitalWrite(13,LOW);   
  delay(100);           
}

ตัวอย่างโปรแกรมที่ใช้สำหรับทดลองวงจรขับมอเตอร์ โดยจะทดลองขับมอเตอร์ให้หมุนทวนเข็มและตามเข็มนาฬิกา การปรับความเร็วมอเตอร์ (Speed Control) การหยุดการมอตัวมอเตอร์ทันที (Braking mode) และการหยุดการหมุนมอเตอร์โดยการปล่อยให้หยุดหมุนตามแรงที่มีเดิม (Free running) สำหรับเป็นแนวทางนำไปประยุกต์ใช้งานต่างๆ

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 6 แหล่งจ่ายไฟเลี้ยงสำหรับทดลองการทำงาน

รูปที่ 6 แหล่งจ่ายไฟเลี้ยงสำหรับใช้ในการทดลองจะใช้ที่แรงดัน 20V/5A เพื่อเป็นการทดลองการทำงานเบื้องต้น โดยทั้งนี้เราสามารถใช้ไฟเลี้ยงที่ขนาด 24V/20A เพื่อนำไปใช้งานจริงได้

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 7 แอลอีดีสีแดงแสดงผลทิศทางการหมุนมอเตอร์ (1)

รูปที่ 7 กรอบสีแอลอีดีแดงแสดงทิศทางการหมุนของมอเตอร์ เพื่อเป็นที่สังเกตการทำงานได้ง่าย

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 8 สัญญาณพัลซ์วิดมอดูเลตชั่นช่องวัดสัญญษณที่ 1 (CH1)

รูปที่ 8 แสดงสัญญาณพัลซ์วิดมอดูเลตชั่น (PWM Signal) ที่เกิดขึ้นเมื่อควบคุมทิศทางมอเตอร์ให้หมุน

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 9 แอลอีดีสีเขียวแสดงผลทิศทางการหมุนมอเตอร์ (2)

รูปที่ 9 แสดงตำแหน่งของแอลอีดีสีเขียวที่ติดสว่าง เพื่อบอกทิศทางการหมุนของมอเตอร์และสังเกตการทำงานได้ง่ายเช่นเดียวกับรูปที่ 7

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 10 สัญญาณพัลซ์วิดมอดูเลตชั่นช่องวัดสัญญาณที่ 2 (CH2)

รูปที่ 10 แสดงสัญญาณพัลซ์วิดมอดูเลตชั่นช่องวัดสัญญาณที่ 2 โดยในช่วงเวลานี้มอเตอร์จะหมุนกลับด้านและกำหนดค่าดิวตี้ไซเกิลไว้ที่ประมาณ 50% เช่นกัน แต่ความถี่ของสัญญาณพัลซ์วิดมอดูเลตจะมาค่าประมาณ 500Hz (สัญญาณที่ CH2 สวิงเล็กน้อยครับ)

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 11 แสดงการทดลองวัดสัญญาณในวงจร

รูปที่ 11 การวัดสัญญาณที่เกิดขึ้นของตัววงจรในขณะทำงาน เพื่อสังเกตการทำงานต่างๆ เช่นลักษณะของสัญญาณขับเพาเวอร์มอสเฟตตัวบน (High Side Drive) ที่ตำแหน่ง Q3 และ Q4 สัญญาณพัลซ์วิดมอดูเลชั่นที่ตำแหน่ง Q1 และ Q2 ไฟเลี้ยงของขับตัวมอเตอร์ในทิศทางทวนเข็มและตามเข็มนาฬิกาเป็นต้น

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 12 วงจรที่ออกแบบและใช้ในการทดลอง

รูปที่ 12 แสดงวงจรที่ใช้ในการทดลองและออกแบบโดยจะประกอบด้วยกัน 4 ส่วนหลักคือ ส่วนแรกบอร์ดควบคุมการทำงาน Arduino UNO ที่จะใช้สัญญาณควบคุม 4 เส้น (D3,D4,D5 และ D6) ส่วนที่สองบอร์ดขับมอเตอร์ที่ตำแหน่งเพาเวอร์มอสเฟต 4 ตัว (Q1,Q2,Q3 และ Q4) ส่วนที่สามวงจรขับเพาเวอร์มอสเฟตัวบน (Q6 และ Q7) สำหรับสร้างแรงดันไบอัสให้กับ (Q3 และ Q4) ในส่วนี้รวมถึงแอลอีดีแสดงทิศทางการหมุนมอเตอร์ (LED1 และ LED2) และส่วนที่สี่วงจรป้องกันกระแสเกินให้กับการขับมอเตอร์ (Q5) เพื่อป้องกันอันตรายจากกระแสเกินให้วงกับเพาเวอร์มอสเฟต ในช่วงเริ่มต้นการทำงานหรือการซ๊อตเซอร์กิตช่วงขณะ (<500mS) กรณีต่อวงจรผิดพลาดครับ

Small Size H-Bridge DC Motor Drive 300W for Arduino UNO Control
รูปที่ 13 ลักษณะการทดลองโครงงานวงจรขับมอเตอร์ H-bridge 24V/300W

รูปที่ 13 แสดงลักษณะของการทดลองโครงงานและวัดสัญญาณในการทดลอง ซึ่งโครงงานนี้จะเป็นวงจรเล็กๆ เพื่อขับมอเตอร์กระแสตรงทั่วไป และสามารถต่อใช้งานร่วมกับบอร์ดควบคุมไมโครคอนโทรลเลอร์ต่างๆ ที่มีสัญญาณควบคุมระดับ TTL (5Vp-p) โดยเฉพาะ Arduino UNO ซึ่งสามารถค้นหาโค้ดตัวอย่างในการทดลองแบบต่างๆ ได้ง่ายขึ้น.

Information

  1. https://www.yalumotor.com/high-speed-brush-dc-motor/high-speed-brush-electric-ebike-dc-motor-my1016-with-25h-sprocket
  2. https://www.kellycontrollers.eu/my1016-350w-36v
  3. https://www.motiondynamics.com.au/united-my1016-350w-24v-dc-motor-with-11-tooth-chain-sprocket.html
  4. https://www.ti.com/lit/ds/symlink/drv8828.pdf
  5. https://www.infineon.com/dgdl/Infineon-TLE6209R-DS-v03_02-en.pdf?fileId=db3a304412b407950112b43826986a5b
  6. http://www.handsontec.com/dataspecs/L298N%20Motor%20Driver.pdf
  7. https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf