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), การแสดงผลทิศทางการหมุนของมอเตอร์เพื่อให้สังเกตการทำงานได้ง่าย
รูปที่ 1 อุปกรณ์ที่ใช้ในการประกอบโครงงานต้นแบบโดยในรูปจะเป็นอุปกรณ์ส่วนที่สำคัญหลักๆ โดยในโครงงานนี้ใช้อุปกรณ์ที่สามารถหาซื้อได้ทั่วไป
รูปที่ 2 ประกอบส่วนของเพาเวอร์มอสเฟตและตัวต้านทานตรวจจับกระแสเกินให้กับวงจรในเบื้องต้นและวางเลย์เอาต์อุปกรณ์บนแผ่นวงจรพิมพ์ในเบื้องต้นก่อน
รูปที่ 3 ลักษณะของบอร์ดต้นแบบที่ประกอบขึ้นและสามารถนำไปทดลองการทำงานเบื้องต้น สำหรับตรวจสอบความถูกต้องของการประกอบอุปกรณ์ต่างๆ
รูปที่ 4 แสดงการต่อสายไฟให้กับบอร์ดต้นแบบที่ตำแหน่งต่างๆ เช่น แหล่งจ่ายไฟเลี้ยงวงจร การต่อมอเตอร์ ตำแหน่งของการรับสัญญาณควบคุมจากบอร์ด Arduino UNO เป็นต้น
รูปที่ 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) สำหรับเป็นแนวทางนำไปประยุกต์ใช้งานต่างๆ
รูปที่ 6 แหล่งจ่ายไฟเลี้ยงสำหรับใช้ในการทดลองจะใช้ที่แรงดัน 20V/5A เพื่อเป็นการทดลองการทำงานเบื้องต้น โดยทั้งนี้เราสามารถใช้ไฟเลี้ยงที่ขนาด 24V/20A เพื่อนำไปใช้งานจริงได้
รูปที่ 7 กรอบสีแอลอีดีแดงแสดงทิศทางการหมุนของมอเตอร์ เพื่อเป็นที่สังเกตการทำงานได้ง่าย
รูปที่ 8 แสดงสัญญาณพัลซ์วิดมอดูเลตชั่น (PWM Signal) ที่เกิดขึ้นเมื่อควบคุมทิศทางมอเตอร์ให้หมุน
รูปที่ 9 แสดงตำแหน่งของแอลอีดีสีเขียวที่ติดสว่าง เพื่อบอกทิศทางการหมุนของมอเตอร์และสังเกตการทำงานได้ง่ายเช่นเดียวกับรูปที่ 7
รูปที่ 10 แสดงสัญญาณพัลซ์วิดมอดูเลตชั่นช่องวัดสัญญาณที่ 2 โดยในช่วงเวลานี้มอเตอร์จะหมุนกลับด้านและกำหนดค่าดิวตี้ไซเกิลไว้ที่ประมาณ 50% เช่นกัน แต่ความถี่ของสัญญาณพัลซ์วิดมอดูเลตจะมาค่าประมาณ 500Hz (สัญญาณที่ CH2 สวิงเล็กน้อยครับ)
รูปที่ 11 การวัดสัญญาณที่เกิดขึ้นของตัววงจรในขณะทำงาน เพื่อสังเกตการทำงานต่างๆ เช่นลักษณะของสัญญาณขับเพาเวอร์มอสเฟตตัวบน (High Side Drive) ที่ตำแหน่ง Q3 และ Q4 สัญญาณพัลซ์วิดมอดูเลชั่นที่ตำแหน่ง Q1 และ Q2 ไฟเลี้ยงของขับตัวมอเตอร์ในทิศทางทวนเข็มและตามเข็มนาฬิกาเป็นต้น
รูปที่ 12 แสดงวงจรที่ใช้ในการทดลองและออกแบบโดยจะประกอบด้วยกัน 4 ส่วนหลักคือ ส่วนแรกบอร์ดควบคุมการทำงาน Arduino UNO ที่จะใช้สัญญาณควบคุม 4 เส้น (D3,D4,D5 และ D6) ส่วนที่สองบอร์ดขับมอเตอร์ที่ตำแหน่งเพาเวอร์มอสเฟต 4 ตัว (Q1,Q2,Q3 และ Q4) ส่วนที่สามวงจรขับเพาเวอร์มอสเฟตัวบน (Q6 และ Q7) สำหรับสร้างแรงดันไบอัสให้กับ (Q3 และ Q4) ในส่วนี้รวมถึงแอลอีดีแสดงทิศทางการหมุนมอเตอร์ (LED1 และ LED2) และส่วนที่สี่วงจรป้องกันกระแสเกินให้กับการขับมอเตอร์ (Q5) เพื่อป้องกันอันตรายจากกระแสเกินให้วงกับเพาเวอร์มอสเฟต ในช่วงเริ่มต้นการทำงานหรือการซ๊อตเซอร์กิตช่วงขณะ (<500mS) กรณีต่อวงจรผิดพลาดครับ
รูปที่ 13 แสดงลักษณะของการทดลองโครงงานและวัดสัญญาณในการทดลอง ซึ่งโครงงานนี้จะเป็นวงจรเล็กๆ เพื่อขับมอเตอร์กระแสตรงทั่วไป และสามารถต่อใช้งานร่วมกับบอร์ดควบคุมไมโครคอนโทรลเลอร์ต่างๆ ที่มีสัญญาณควบคุมระดับ TTL (5Vp-p) โดยเฉพาะ Arduino UNO ซึ่งสามารถค้นหาโค้ดตัวอย่างในการทดลองแบบต่างๆ ได้ง่ายขึ้น.
Information
- https://www.yalumotor.com/high-speed-brush-dc-motor/high-speed-brush-electric-ebike-dc-motor-my1016-with-25h-sprocket
- https://www.kellycontrollers.eu/my1016-350w-36v
- https://www.motiondynamics.com.au/united-my1016-350w-24v-dc-motor-with-11-tooth-chain-sprocket.html
- https://www.ti.com/lit/ds/symlink/drv8828.pdf
- https://www.infineon.com/dgdl/Infineon-TLE6209R-DS-v03_02-en.pdf?fileId=db3a304412b407950112b43826986a5b
- http://www.handsontec.com/dataspecs/L298N%20Motor%20Driver.pdf
- https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf