หมายเหตุ บทความนี้ยังไม่สมบูรณ์ ยังต้องการคำแนะนำติชม จากผู้อ่านทั้งด้านความรู้ ความถูกต้องของเนื้อหา รวมถึงความเข้าใจง่ายของเนื้อหา จึงต้องขอความกรุณามา ณ โอกาสนี้
**********
อ้างอิงจาก http://www.modularcircuits.com/
สวัสดีครับ วันนี้จะพูดเรื่องการออกแบบวงจรขับมอเตอร์กระแสตรงครับ วงจรทั้งหมดนี้เป็นเวอร์ชั่นแรกที่ผมออกแบบ และประกอบทดลองขึ้น ตอนนี้เป็นรุ่นที่ปลอดภัย และใช้งานได้แล้วที่ระดับแรงดันไม่เกิน 15V แต่ไปผมจะพยายามออกแบบให้วงจรมีขนาดเล็กลง มีอุปกรณ์ที่น้อยลง และมีการป้องกันที่ดีขึ้น
ก่อนอื่นเราต้องเข้าใจการทำงานของมอเตอร์กระแสตรงก่อน
![]() |
ภาพมอเตอร์กระแสตรง (ภาพจาก learn.adafruit.com/) |
![]() |
ภาพจาก http://ctms.engin.umich.edu |
โดยที่ R คือความต้านทานของขวดลวด L คือค่าความเหนี่ยวนำของขดลวด และ e คือแรงเคลื่อนที่เกิดจากการหมุนของมอเตอร์ ซึ่งจะแปรผันกับความเร็วของมอเตอร์
การควบคุมมอเตอร์กระแสตรงเบื้องต้น
การควบคุมมอเตอร์กระแสตรงแบ่งเป็นสองประเด็นใหญ่ๆ คือ 1.ความเร็วเชิงมุม 2. แรงบิด
ในบทความนี้เราจะพูดถึงการควบคุมความเร็วเชิงมุมเป็นหลัก ซึ่งแปรผันกับแรงดันไฟตรงที่จ่ายให้มอเตอร์ และเมื่อสลับขั้วแหล่งจ่ายทิศทางของการหมุนจะสลับด้านเช่นกัน และแรงบิดของมอเตอร์จะแปรผันกับกระแสที่ไหลผ่านขดลวด ตามทฤษฏีแม่เหล็กไฟฟ้า
กระแสที่ไหลผ่านมอเตอร์ ที่ทำให้มอเตอร์เกิดแรงบิด ทำให้ความเร็วเชิงมุมของมอเตอร์เพิ่มขึ้นเรื่อยๆ แต่เมื่อความเร็วของมอเตอร์เพิ่มขึ้น แรงดัน bemf ของมอเตอร์ก็จะเพิ่มขึ้น ต้านการไหลของกระแส ทำให้กระแสไหลได้น้อยลง ทำให้แรงบิดของมอเตอร์น้อยลง และหักล้างกับแรงเสียดทานในที่สุด เมื่อแรงบิดถูกหักล้างจนหมด ทำให้ความเร่งเชิงมุมของมอเตอร์เป็น 0 และความเร็วของมอเตอร์ไม่เพิ่มขึ้นอีก ตรงจุดนี้ก็คือความเร็วสูงสุดของมอเตอร์ ซึ่งแปรผันกับแรงดันของแหล่งจ่ายนั่นเอง
เมื่อมอเตอร์ได้รับภาระทางกลมากขึ้น ทำให้ความเร็วรอบของมอเตอร์ลดลงและแรงดัน bemf จะต่ำลงด้วย ทำให้กระแสจะไหลผ่านมากขึ้น มอเตอร์จึงสร้างแรงบิดได้มากขึ้น ดังนั้นจะเห็นว่าแรงบิดของมอเตอร์จะสวนทางกับความเร็ว ดังนั้น ภาวะที่มอเตอร์มีแรงบิดสูงสุด ก็คือภาวะที่แกนมอเตอร์ถูกยึดให้หยุดนิ่ง ซึ่งเราเรียกว่า stall torque นั่นเอง
ส่วนสัญญาณ คือส่วนที่มีส่วนสำคัญในการประมวลผล ซึ่งโดยมากจะอยู่ในรูปของไมโคร-คอนโทรลเลอร์ อย่างไรก็ตามไฟฟ้าที่อยู่ในระบบสัญญาณ จะมีกระแส และแรงดันที่ต่ำ ซึ่งไม่สามารถนำไปขับโหลดที่มีกำลังมาก อย่างมอเตอร์ได้ จึงต้องมีวงจรขับมอเตอร์ ที่จะช่วยขยายกระแส และแรงดัน เพื่อนำไปขับมอเตอร์ต่อไป
โครงสร้างแบบ H-bridge ออกแบบขึ้นมาเพื่อสลับขั้วแรงดันที่จ่ายให้กับมอเตอร์ ทำให้สามารถสลับทิศทางการหมุนของมอเตอร์ได้
โครงสร้าง H-bridge ประกอบด้วยสองส่วน คือส่วนตัดต่อกระแส หรือ switching element ซึ่งในที่นี้เราใช้มอสเฟต และ load ซึ่งก็คือมอเตอร์
2. HS_B และ LS_A นำกระแส
ทั้งสองรูปแบบ จะจ่ายกระแสให้มอเตอร์ในสองทิศทาง แต่ข้อควรระวังคือต้องไม่ให้ HS(High Side) และ LS (Low Side) ในฝั่งเดียวกัน ทำงานพร้อมกัน เพราะจะทำให้เกิดการลัดวงจร ทำให้ มอสเฟตพังได้
ชนิดของมอสเฟต
มอสเฟต แบ่งเป็น 2 ตระกูล คือ Depletion Type และ Enhancement ซึ่งเราจะใช้แบบ Enhancement แต่ละตระกุลยังแบ่งเป็นอีกสองแบบคือ N-chanel และ P-chanel
มอสเฟตประกอบด้วย 3 ขา คือ gate , drain และ source โดยขา source จะทำไปต่อกับแหล่งจ่าย โดยที่ ขา source ของ N-chanel จะจ่ายไฟลบ ส่วน ขา source ของ P-chanel จะจ่ายไฟบวก
ขาเดรน ของมอสเฟต จะตัด หรือต่อไฟจากขา source ซึ่งควบคุมด้วยความต่างศักย์ ระหว่างขา gate เทียบกับ ขา source เรียกว่า Vgs ถ้า Vgs เป็น 0V มอสเฟตจะไม่นำกระแส สำหรับการนำกระแสแบบ N-chanel Vgs จะต้องมากกว่า แรงดัน threshold คือประมาณ 2 V ถึง 4 V และแบบ P-chanel Vgs จะต้องต่ำกว่า แรงดัน threshold คือประมาณ -2 V ถึง -4 V
อย่างไรก็ตาม กระแสที่ไหลผ่านมอสเฟตจะแปรผันกับ Vgs ด้วย นั้นคือถ้าความต่างศักย์มาก กระแสที่ไหลผ่านมอสเฟตก็จะมาก ถ้ากระแสไหลผ่านได้น้อย ในกรณีที่มอสเฟตทำงานไม่เต็มที่ จะทำให้มอสเฟตร้อนและเสียหายได้ ดังนั้นจึงออกแบบให้แรงดันขา gate ของมอสเฟตอยู่ในช่วง 0V ถึง Vm เพื่อให้มอสเฟตนำกระแสได้ดีที่สุด
เมื่อเรากลับมามองโครงสร้างมอสเฟตอีกครั้ง
เราจะเห็นว่า เราใช้มอสเฟต P-chanel ประกอบด้าน High side และ N-chanel ประกอบด้าน Low-side โดยขา Source ของ P-chanel จ่ายแรงดัน 12V หรือแรงดันที่เอาไว้เลี้ยงมอเตอร์
( Vm 7V ถึง 15V) ส่วนขา Source ของ N-chanel จะจ่ายแรงดัน 0V หรือ Ground
จุดหนึ่งที่เป็นข้อสังเกตของวงจรนี้ คือ Output จะกลับเฟสกับ Input ดังนั้น LS จะนำกระแสเมื่อ input เป็นลอจิก LOW (0V) และจำไม่นำกระแสเมื่อ input เป็นลอจิก High (5V) และกลับกันสำหรับ HS โดย LS จะไม่นำกระแสเมื่อ input เป็นลอจิก LOW (0V) และจำนำกระแสเมื่อ input เป็นลอจิก High (5V)
สัญญาณที่ควบคุม gate driver จะมีรูปร่างดังรูป
ในทางปฏิบัติแล้ว เนื่องจากโครงสร้างขา gate และ source นั้นจะเป็นเหมือนตัวเก็บประจุ ดังนั้นเมื่อจ่ายกระแส(วงจร gate driver จ่ายกระแสได้จำกัด) จะเกิดการเปลี่ยนแปลงของระดับแรงดัน gate ดังรูป
จะเห็นว่าเกิดช่วง Overlap คือช่วงที่ HS และ LS ทำงานพร้อมกัน จะทำให้เกิดการลัดวงจรขึ้น
เราเรียกเหตุการณ์นี้เราเรียกว่า shoot through ซึ่งเป็นอันตรายต่อมอสเฟต เราจึงต้องป้องกันไม่ให้เหตุการณ์นี้เกิดขึ้น
ซึ่งจากสัญญาณที่เราต้องการ เราสามารถใช้วงจรไฟฟ้ามาช่วยทำให้เกิดการเหลื่อมเฟสได้
เราจะได้ระบบที่รับสัญญาณ Digital ที่สามารถควบคุมขั้วของ Half Bridge (ครึ่งหนี่งของ H-bridge) ได้เมื่อเรานำ Half bridge สองตัวมารวมกัน ก็จะสามารถควบคุมมอเตอร์อย่างง่ายได้
โดยมอเตอร์จะตอบสนองต่อ input ตามตารางต่อไปนี้
ในบทความนี้เราจะพูดถึงการควบคุมความเร็วเชิงมุมเป็นหลัก ซึ่งแปรผันกับแรงดันไฟตรงที่จ่ายให้มอเตอร์ และเมื่อสลับขั้วแหล่งจ่ายทิศทางของการหมุนจะสลับด้านเช่นกัน และแรงบิดของมอเตอร์จะแปรผันกับกระแสที่ไหลผ่านขดลวด ตามทฤษฏีแม่เหล็กไฟฟ้า
พฤติกรรมของมอเตอร์กระแสตรง
เมื่อเราเริ่มจ่ายไฟให้มอเตอร์ ในขณะที่มอเตอร์ยังไม่เริ่มหมุน ทำให้ e หรือ bemf (back electromotive force) มีค่าเป็น 0V ทำให้กระแสไหลผ่านมอเตอร์ค่อนข้างสูง เนื่องจากเมื่อเริ่มหมุนมอเตอร์ จะต้องใช้แรงบิดในการเปลี่ยนแปลงความเร็วเชิงมุมของมอเตอร์ ทำให้มอเตอร์กินกระแสมากกระแสที่ไหลผ่านมอเตอร์ ที่ทำให้มอเตอร์เกิดแรงบิด ทำให้ความเร็วเชิงมุมของมอเตอร์เพิ่มขึ้นเรื่อยๆ แต่เมื่อความเร็วของมอเตอร์เพิ่มขึ้น แรงดัน bemf ของมอเตอร์ก็จะเพิ่มขึ้น ต้านการไหลของกระแส ทำให้กระแสไหลได้น้อยลง ทำให้แรงบิดของมอเตอร์น้อยลง และหักล้างกับแรงเสียดทานในที่สุด เมื่อแรงบิดถูกหักล้างจนหมด ทำให้ความเร่งเชิงมุมของมอเตอร์เป็น 0 และความเร็วของมอเตอร์ไม่เพิ่มขึ้นอีก ตรงจุดนี้ก็คือความเร็วสูงสุดของมอเตอร์ ซึ่งแปรผันกับแรงดันของแหล่งจ่ายนั่นเอง
เมื่อมอเตอร์ได้รับภาระทางกลมากขึ้น ทำให้ความเร็วรอบของมอเตอร์ลดลงและแรงดัน bemf จะต่ำลงด้วย ทำให้กระแสจะไหลผ่านมากขึ้น มอเตอร์จึงสร้างแรงบิดได้มากขึ้น ดังนั้นจะเห็นว่าแรงบิดของมอเตอร์จะสวนทางกับความเร็ว ดังนั้น ภาวะที่มอเตอร์มีแรงบิดสูงสุด ก็คือภาวะที่แกนมอเตอร์ถูกยึดให้หยุดนิ่ง ซึ่งเราเรียกว่า stall torque นั่นเอง
วงจรขับมอเตอร์คืออะไร??
ในการออกแบบระบบไฟฟ้าระบบหนึ่ง จะประกอบด้วยสองส่วนนั่นคือส่วนสัญญาณ และส่วนกำลังส่วนสัญญาณ คือส่วนที่มีส่วนสำคัญในการประมวลผล ซึ่งโดยมากจะอยู่ในรูปของไมโคร-คอนโทรลเลอร์ อย่างไรก็ตามไฟฟ้าที่อยู่ในระบบสัญญาณ จะมีกระแส และแรงดันที่ต่ำ ซึ่งไม่สามารถนำไปขับโหลดที่มีกำลังมาก อย่างมอเตอร์ได้ จึงต้องมีวงจรขับมอเตอร์ ที่จะช่วยขยายกระแส และแรงดัน เพื่อนำไปขับมอเตอร์ต่อไป
โครงสร้างแบบ H-bridge
![]() |
ผังวงจร สร้างจาก fritzing |
โครงสร้าง H-bridge ประกอบด้วยสองส่วน คือส่วนตัดต่อกระแส หรือ switching element ซึ่งในที่นี้เราใช้มอสเฟต และ load ซึ่งก็คือมอเตอร์
การทำงานของ H-bridge (Static operation)
1. HS_A และ LS_B นำกระแส2. HS_B และ LS_A นำกระแส
ทั้งสองรูปแบบ จะจ่ายกระแสให้มอเตอร์ในสองทิศทาง แต่ข้อควรระวังคือต้องไม่ให้ HS(High Side) และ LS (Low Side) ในฝั่งเดียวกัน ทำงานพร้อมกัน เพราะจะทำให้เกิดการลัดวงจร ทำให้ มอสเฟตพังได้
Mosfet
มอสเฟต (metal–oxide–semiconductor field-effect transistor) คืออุปกรณ์ที่ตัดต่อกระแส ในที่นี้เราสามารถนำมาใช้เป็น switching element ได้ (อาจจะใช้ BJT แทนได้เช่นกัน) ข้อดีของมอสเฟตคือ จ่ายกระแสได้สูง อัตราสูญเสียต่ำ เมื่อเทียบกับ bjt (bijuntion transistor)ชนิดของมอสเฟต
มอสเฟต แบ่งเป็น 2 ตระกูล คือ Depletion Type และ Enhancement ซึ่งเราจะใช้แบบ Enhancement แต่ละตระกุลยังแบ่งเป็นอีกสองแบบคือ N-chanel และ P-chanel
มอสเฟตประกอบด้วย 3 ขา คือ gate , drain และ source โดยขา source จะทำไปต่อกับแหล่งจ่าย โดยที่ ขา source ของ N-chanel จะจ่ายไฟลบ ส่วน ขา source ของ P-chanel จะจ่ายไฟบวก
ขาเดรน ของมอสเฟต จะตัด หรือต่อไฟจากขา source ซึ่งควบคุมด้วยความต่างศักย์ ระหว่างขา gate เทียบกับ ขา source เรียกว่า Vgs ถ้า Vgs เป็น 0V มอสเฟตจะไม่นำกระแส สำหรับการนำกระแสแบบ N-chanel Vgs จะต้องมากกว่า แรงดัน threshold คือประมาณ 2 V ถึง 4 V และแบบ P-chanel Vgs จะต้องต่ำกว่า แรงดัน threshold คือประมาณ -2 V ถึง -4 V
อย่างไรก็ตาม กระแสที่ไหลผ่านมอสเฟตจะแปรผันกับ Vgs ด้วย นั้นคือถ้าความต่างศักย์มาก กระแสที่ไหลผ่านมอสเฟตก็จะมาก ถ้ากระแสไหลผ่านได้น้อย ในกรณีที่มอสเฟตทำงานไม่เต็มที่ จะทำให้มอสเฟตร้อนและเสียหายได้ ดังนั้นจึงออกแบบให้แรงดันขา gate ของมอสเฟตอยู่ในช่วง 0V ถึง Vm เพื่อให้มอสเฟตนำกระแสได้ดีที่สุด
การทำงานของ Mosfet ในวงจร H - bridge
เมื่อเรากลับมามองโครงสร้างมอสเฟตอีกครั้งเราจะเห็นว่า เราใช้มอสเฟต P-chanel ประกอบด้าน High side และ N-chanel ประกอบด้าน Low-side โดยขา Source ของ P-chanel จ่ายแรงดัน 12V หรือแรงดันที่เอาไว้เลี้ยงมอเตอร์
( Vm 7V ถึง 15V) ส่วนขา Source ของ N-chanel จะจ่ายแรงดัน 0V หรือ Ground
การขับ Mosfet ด้วยระดับแรงดัน 5V
สำหรับแรงดันสัญญาณ 0 - 5V จากไมโครคอนโทรลเลอร์ หรือลอจิกเกต ในการจะแปลงไปขับมอสเฟต จำเป็นจะต้องเพิ่มระดับแรงดันให้สูงถึง Vmotor ต้องมีความสามารถในการจ่ายกระแส ผมใช้วงจรง่ายๆและราคาถูก โดยประกอบจาก BJT ดังรูป![]() |
วงจร Gate driver |
จุดหนึ่งที่เป็นข้อสังเกตของวงจรนี้ คือ Output จะกลับเฟสกับ Input ดังนั้น LS จะนำกระแสเมื่อ input เป็นลอจิก LOW (0V) และจำไม่นำกระแสเมื่อ input เป็นลอจิก High (5V) และกลับกันสำหรับ HS โดย LS จะไม่นำกระแสเมื่อ input เป็นลอจิก LOW (0V) และจำนำกระแสเมื่อ input เป็นลอจิก High (5V)
การทำงานของ H-bridge (Switching state)
เมื่อเราต้องการให้เอาพุตของมอสเฟต เปลี่ยนเป็นขั้วตรงข้าม เช่นจาก 12V เป็น Groundสัญญาณที่ควบคุม gate driver จะมีรูปร่างดังรูป
จะเห็นว่าเกิดช่วง Overlap คือช่วงที่ HS และ LS ทำงานพร้อมกัน จะทำให้เกิดการลัดวงจรขึ้น
เราเรียกเหตุการณ์นี้เราเรียกว่า shoot through ซึ่งเป็นอันตรายต่อมอสเฟต เราจึงต้องป้องกันไม่ให้เหตุการณ์นี้เกิดขึ้น
การทำงานของวงจร Shoot through Protection
เพื่อไม่ให้เกิดการโอเวอร์แลปขึ้น ดังนั้นต้องปรับสัญญาณควบคุมไม่ให้เกิดการเหลื่อมกันเกิดขึ้น![]() |
Shoot through Protection |
เมื่อนำทุกอย่างมารวมกัน.....
เราจะได้ระบบที่รับสัญญาณ Digital ที่สามารถควบคุมขั้วของ Half Bridge (ครึ่งหนี่งของ H-bridge) ได้เมื่อเรานำ Half bridge สองตัวมารวมกัน ก็จะสามารถควบคุมมอเตอร์อย่างง่ายได้
โดยมอเตอร์จะตอบสนองต่อ input ตามตารางต่อไปนี้
![]() |
*** Forward และ Reverse เป็นทิศทางที่เราสมมติขึ้นเพื่อให้ง่ายต่อการอธิบาย เช่น ถ้า A = High และ B = Low มอเตอร์จะหมุนไปด้านหน้า เป็นต้น |
รวมกับ PWM
PWM (Pulse width modulation) เป็นวิธีการ modulation แบบหนึ่ง ซึ่งการมอดดูเลชั่น ก็คือการรวมข้อมูล เข้ากับอีกสัญญาณหนึ่ง ซึ่งข้อมูลที่นำมารวมนี้ ก็คือ Duty cycle โดยคิดเป็น %
Duty cycle คือระยะเวลาที่สัญญาณมีสถานะเป็น High เทียบกับคาบเวลาทั้งหมด
เนื่องจากสัญญาณ PWM เป็นสัญญาณดิจิตอล จึงสามารถนำมาใช้ควมคุม H-bridge ได้ โดยสามารถที่จะลดทั้งความเร็ว และแรงบิดของมอเตอร์ลงได้ โดยมีวิธีคิดง่ายๆคือ
Average power = Max power * t_on / t
โดย Max power คือกำลังมอเตอร์ เมื่อจ่ายกระแสอย่างต่อเนื่อง
t_on คือระยะเวลาที่มอเตอร์ทำงาน ก็คือมีกระแสไหล ทำให้หมุนด้านใดด้านหนึ่ง
t คือระยะเวลาทั้งหมดของ PWM
โดยมีรูปแบบการควบคุมมอเตอร์ดังนี้
การควบคุมมอเตอร์ แบบ Sign-magnitude
เมื่อต้องการควบคุมให้มอเตอร์หมุนไปด้านหน้า โดยควบคุมความเร็ว ( หรือแรงบิด) ด้วยสัญญาณ PWM คือยิ่ง Duty cycle มาก มอเตอร์จะยิ่งหมุนเร็วมาก ซึ่งสามารถทำได้สองวิธี
1. คือจ่าย PWM ให้ขา A และจ่ายสัญญาณ LOW ให้ขา B ช่วงที่ PWM เป็น High มอเตอร์จะทำงาน (เพราะขา A เป็น High และขา B เป็น Low ทำให้มอเตอร์หมุนไปด้านหน้า) ส่วนช่วงที่ PWM เป็น Low มอเตอร์จะหยุด ทำให้กำลังเฉลี่ยของมอเตอร์ จะเป็นไปตาม ค่า dutycycle ของ PWM
2.จ่ายสัญญาณ High เข้าที่ขา A และจ่ายสัญญาณที่มี duty cycle = 100% - PWM เข้าที่ขา B (เช่นถ้าต้องการกำลังเฉลี่ย 25% จะต้องจ่ายสัญญาณที่มี duty cycle 75% หรืออีกนัยยะหนึ่ง ก็คือสัญญาณที่ตรงข้ามกับ PWM)
จากภาพ จะเห็นว่า เมื่อสัญญาณตรงข้ามกัน duty cycle ของสัญญาณที่สอง จะเท่ากับ
100% - duty cycle ของสัญญาณแรก
เมื่อสัญญาณ PWM เป็น High ขา B ก็จะได้รับสัญญาณ High ซึ่งเหมือนกับขา A มอเตอร์จึงไม่ทำงาน แต่จะทำงานในข่วงที่สัญญาณ PWM เป็น Low เมื่อเราจ่ายสัญญาณที่ตรงข้ามกับ PWM ทำให้กำลังเฉลี่ยของมอเตอร์เท่ากับ PWM และหมุนไปด้านหน้า (เนื่องจากช่วงที่มอเตอร์ทำงาน คือช่วงที่ A = High และ B = Low)
ในทำนองเดียวกัน สามารถคิดในรูปแบบที่มอเตอร์หมุนย้อนกลับได้ดังนี้
ควบคุมด้วย Arduino
แบบที่ 1 ใช้ PWM ทั้ง 2 pinvoid motor_driver(int power){ power = constrain(power,-255,255);
if(power>=0){
analogWrite(pin_B,0);
analogWrite(pin_A,power);
}
else {
analogWrite(pin_A,0);
analogWrite(pin_B,power*-1);
}
}
แบบที่ 2 ใช้ 1 PWM pin และ 1 digital Pin (อย่าลืมตั้ง pinMode)
void motor_driver(int power){ power = constrain(power,-255,255); if(power>=0){
analogWrite(pin_A,power);
digitalWrite(pin_B,LOW);
}
else {
analogWrite(pin_A,255+power);
digitalWrite(pin_B,HIGH);
}
}
Catch diodes
คือไดโอดที่ต่ออยู่กับ switching element ซึ่งก็คือมอสเฟต ในวงจรของเรา แต่เดิม catch diode ถูกใช้งานในการป้องกัน switching element เมื่อนำไปขับ inductive load ซึ่งจะอธิบายต่อไปนี้
switching element vs. inductance load
นี่คือวงจรทั่วไป โดยใช้ BJT ที่ทำหน้าที่ตัดต่อกระแสที่ไหลผ่าน inductive load เช่น รีเลย์ ,โซลินอย
1. เมื่อ switching element นำกระแส
กระแสเริ่มไหลผ่านขดลวด และถูกต้านด้วย emf ของขดลวด เมื่อ emf ลดลง กระแสก็ไหลเต็มที่
โดยกระแสที่ไหลผ่านขวดลวดจะสัมพันธ์กับสมการตัวเหนี่ยวนำ นั่นคือ
ดังนั้นกระแสจึงเพิ่มขึ้นเรื่อยๆ ด้วยความชันค่าหนึ่ง อย่างไรก็ตาม ตัวขดลวดเองก็มีความความต้านทานอยู่ ซึ่งจะจำกัดกระแสที่ไหลได้สูงสุดไว้
2. เมื่อ switching element หยุดนำกระแส
เมื่อแรงดันย้อนกลับ เท่าความชันของกระแส เมื่อเราหยุดนำกระแสที่เวลา t เราจะเห็นว่ามีความชันติดลบสูงมาก ซึ่งจะทำให้เกิดแรงดันย้อนกลับมหาศาลเพื่อให้กระแสไหลต่อไปได้
ซึ่งแรงดันทั้งหมดจะไปตกคร่อมตัว switching element จนเกินค่าที่ตัวมีนจะรับได้ ทำให้เกิด breakdown ทำให้อุปกรณ์เกิดความเสียหาย
การใส่ catch diode เข้าไปในระบบ
1. เมื่อ switching element นำกระแส
2. เมื่อ switching element หยุดนำกระแส
แรงดัน bemf ของขดลวด ทำให้เกิดกระแสไหลผ่านไดโอด และไม่เกิดแรงดันตกคร่อมมหาศาลเหมือนกรณีก่อนหน้า
ข้อสังเกต
ไดโอดจะต่อในทิศทางตรงข้ามกับทิศทางที่กระแสไหลปกติ เพื่อให้กระแสไหลผ่านขดลวดแทนที่จะผ่านไดโอด อย่าไรก็ตาม วงจรขับมอเตอร์จำเป็นจะต้องเปลี่ยนทิศทางของกระแส ดังนั้นจึงไม่สามารถใส่ไดโอดคร่อมกับโหลดเหมือนกับในตัวอย่างได้ แต่เราสามารถใส่ไดโอดคร่อมกับ switching elementเมื่อมอเตอร์เกิดแรงดัน emf ซึ่งมีค่าสูงมากกว่าแหล่งจ่าย กระแสนั้นจะไหลเข้าไปที่แหล่งจ่าย เรียกว่า regenerative current ทำให้แทบไม่เกิดความต่างศักย์คร่อมที่ switching element ทำให้มอสเฟตของเราไม่ได้รับความเสียหายจากการ breakdown อย่างไรก็ตาม regenerative current ก็ส่งผลเสียต่อระบบของเรา ตามที่จะอธิบายต่อไปนี้
ปัญหา Regenerative current
เมื่อเราแทนมอเตอร์ด้วย แบบจำลองสมมูลย์ และลองขับมอเตอร์ด้วยวิธี Sign-magnitude จะเกิดการไหลของกระแสขึ้นดังนี้
1. เริ่มจ่ายกระแสให้มอเตอร์
เกิดแรงดันตกคร่อมขดลวดต้านการไหลของกระแส และแรงดันค่อยๆลดลง กระแสไหลผ่านได้มากขึ้น ทำให้โรเตอร์ของมอเตอร์เริ่มหมุน
2.มอเตอร์เริ่มหมุนเร็วขึ้น และเกิดแรงดัน BEMF ต้านการไหลของกระแส
3.เกิดการเปลี่ยนขั้วของ Half_bridge
เกิดแรงดันที่ inductor และกระแสยังคงไหลต่อไป(ตามสมบัติของ inductor ) เมื่อเวลาผ่านไป แรงดันตกคร่อม inductor ค่อยลดลง
4.กระแสเริ่มไหลไปอีกด้านหนึ่ง
เนื่องจากแรงดัน BEMF ในขณะที่ inductor เกิดแรงดันต้านการไหลของกระแสเช่นกัน
ซึ่งในภาวะนี้ กระแสที่ไหลย้อนกลับ ทำให้เกิดแรงบิดในทิศตรงข้ามกับการหมุน คล้ายกับการนำขั้วมอเตอร์มาสัมผัสกัน
5. เกิดการสวิทช์กลับไปด้าน HS
กระแสที่ไหลอยู่ในคอนดัคเตอร์ยังคงไหลต่อไปตามทิศทางเดิม ผ่านไดโอดและย้อนเข้าแหล่งจ่าย เรียกว่า regenerative current
ผลเสียของ regenerative current
1. อาจไปรบกวนระบบ เร็กกูเลเตอร์ โดยเฉพาะสวิทชิ่งเร็กกูเลเตอร์
2. กระแสอาจจะไหลเข้าแบตเตอรี่ ทำให้เกิดการชาร์ต ดิสชาร์ตชองแบต อาจทำให้แบตเตอรี่บางชนิดเสื่อมเร็วขึ้น
3. แรงดันแหล่งจ่ายเกิดการกระเพื่อม อาจไปรบกวนระบบอื่นๆที่ต่ออยู่กับแหล่งจ่ายไฟ
เนื่องจากกระแสดังกล่าวไหลย้อนเข้าแหล่งจ่าย เราสามารถแก้ปัญหานี้อย่างง่ายๆ โดยการเพิ่มตัวเก็บประจุขนาดใหญ่ขนานกับแหล่งจ่าย เพื่อให้กระแสไหลเข้าตัวเก็บประจุ อย่างไรก็ตาม ก็ยังไม่สามารถหลีกเลี่ยงแรงดันกระเพื่อมอยู่ดี เพียงแต่ยิ่งค่าความจุมากขึ้น แรงดันกระเพื่อมจะยิ่งต่ำลง แต่ก็ไม่ได้หายไปจนเป็น 0 (ทั้งนี้ กระแสที่ไหลย้อนยังแปรผันไปตามลักษณะเฉพาะของมอเตอร์)
คือข้อ 4
เนื่องจากการไหลของกระแสนี้ ทำให้เกิดการไหลของ Regenerative current ในข้อต่อไป ซึ่งแท้จริงแล้วมอสเฟตทางซ้ายไม่จำเป็นต้องนำกระแสเลย เพราะแรงดันที่เกิดขึ้นในขณะนั้น คือแรงดัน bemf ที่เกิดจากการหมุนของมอเตอร์ ซึ่งมีค่าไม่เกินแหล่งจ่ายอยู่แล้ว ต่างกับแรงดันที่เกิดจากตัวเหนี่ยวนำ ซึ่งมีค่ามหาศาล ดังนั้นเราจึงต้องตัด state นี้ออกจากระบบ
จากการขับแบบ sign-magnitude drive จะเห็นว่า สัญญาณที่มีการเปลี่ยนแปลงขึ้นลงก็คือขาที่ต่ออยู่กับ PWM ดังนั้นจึงสรุปได้ว่า เมื่อ H-bridge ทำงานในสถานะ off half bridge ข้างที่ต่ออยู่กับ สัญญาณ PWMต้องไม่นำกระแส เราเรียกวิธีการขับ H-bridge แบบนี้ว่า "Asynchronous Sign-magnitude Drive" อย่างไรก็ตาม ในการออกแบบก่อนหน้า เรามีสัญญาณควบคุมเพียงเส้นเดียว นั่นคือเส้นที่เลือกว่า output จะเป็น HIGH (Vm) หรือ LOW (Gnd) ในการที่จะให้ half-bridge ไม่นำกระแสนั้น ทั้ง HS และ LS ต้องไม่นำกระแส ซึ่งทำไม่ได้ในวงจรก่อนหน้า ดังนั้นเราจะออกแบบวงจรควบคุม half-bridge ใหม่ โดยเพิ่มสัญญาณ enable เข้าไปในระบบ โดยถ้า enable เป็น High สัญญาณเอาท์พุต จะถูกควบคุมด้วยสัญญาณตามแบบเดิม แต่ถ้า enable เป็น Low half-bridge นั้นจะไม่นำกระแสเลย ทั้ง HS และ LS โดยเพิ่มวงจรเข้าไป จากสัญญาณ HS และ LS ที่ออกมาจากส่วนของ shoot-through protection มาเข้าวงลอจิกเกตดังรูป
จากนั้นจึงนำ output ไปเข้า gate driver ก่อนจะนำไปขับมอสเฟตตามเดิม จะได้วงจร half-bridge ดังรูป
ในการนำไปขับมอเตอร์กระแสตรง จะประกอบด้วยส่วนต่างๆดังรูป
โดย DIR ( Direction) เป็นสัญญาณดิจิตอล เอาไว้กำหนดทิศทางการหมุนของมอเตอร์ และ PWM เอาไว้ควบคุมความเร็วของมอเตอร์ (แต่ไม่สามารถเบรกด้วยไฟฟ้าได้)
วงจรป้องกัน (safety features)
การป้องกันวงจรขับมอเตอร์ทำได้หลายวิธี เช่นควบคุมกระแสที่จ่ายให้มอเตอร์ วงจรตัดการจ่ายไฟเมื่อมอสเฟตร้อน แต่ที่ยกมาก่อนในที่นี้คือ วงจรป้องกันการต่อแหล่งจ่ายกลับขั้ว ดังรูป
โดยจุดที่เป็นแบตเตอรี่ คือจุดที่เป็นแหล่งจ่ายของวงจร และจุดที่เป็น 12V และ Gnd คือไฟเลี้ยงของมอเตอร์
ที่ยกวงจรนี้มาก่อนเพราะว่า การต่อกลับขั้วเพียงครั้งเดียวอาจทำให้มอสเฟตทุกตัวใน H-bridge เสียหายได้ เพราะการต่อแหล่งจ่ายกระขั้วทำให้กระแสไหลผ่าน catch diode เหมือนกับการ short-circuit
สรุปเนื้อหา
วงจรขับมอเตอร์สามารถออกแบบได้หลายรูปแบบ นี่เป็นเพียงรูปหนึ่งที่ทำงานได้ ผมเชื่อว่าหากเรามีความเข้าใจถึงข้อคำนึงต่างๆ จะทำให้เราสามารถออกแบบวงจรเหล่านี้ได้ด้วยตัวเอง
หวังว่าความรู้ต่อไปนี้จะเป็นประโยชน์ต่อผู้อ่าน หากบทความนี้มีข้อบกพร่อง สามารถคอมเม้นได้เลยนะครับ ทั้งนี้หากมีข้อสงสัยในเนื้อหาสามารถคอมเม้น หรือติดต่อทางเฟซบุ้คได้เลยครับ
ขอบคุณครับ ^____^"
1. เริ่มจ่ายกระแสให้มอเตอร์
2.มอเตอร์เริ่มหมุนเร็วขึ้น และเกิดแรงดัน BEMF ต้านการไหลของกระแส
3.เกิดการเปลี่ยนขั้วของ Half_bridge
เกิดแรงดันที่ inductor และกระแสยังคงไหลต่อไป(ตามสมบัติของ inductor ) เมื่อเวลาผ่านไป แรงดันตกคร่อม inductor ค่อยลดลง
4.กระแสเริ่มไหลไปอีกด้านหนึ่ง
เนื่องจากแรงดัน BEMF ในขณะที่ inductor เกิดแรงดันต้านการไหลของกระแสเช่นกัน
ซึ่งในภาวะนี้ กระแสที่ไหลย้อนกลับ ทำให้เกิดแรงบิดในทิศตรงข้ามกับการหมุน คล้ายกับการนำขั้วมอเตอร์มาสัมผัสกัน
5. เกิดการสวิทช์กลับไปด้าน HS
ผลเสียของ regenerative current
1. อาจไปรบกวนระบบ เร็กกูเลเตอร์ โดยเฉพาะสวิทชิ่งเร็กกูเลเตอร์
2. กระแสอาจจะไหลเข้าแบตเตอรี่ ทำให้เกิดการชาร์ต ดิสชาร์ตชองแบต อาจทำให้แบตเตอรี่บางชนิดเสื่อมเร็วขึ้น
3. แรงดันแหล่งจ่ายเกิดการกระเพื่อม อาจไปรบกวนระบบอื่นๆที่ต่ออยู่กับแหล่งจ่ายไฟ
การรับมือกับปัญหา regenerative current เบื้องต้น
เนื่องจากกระแสดังกล่าวไหลย้อนเข้าแหล่งจ่าย เราสามารถแก้ปัญหานี้อย่างง่ายๆ โดยการเพิ่มตัวเก็บประจุขนาดใหญ่ขนานกับแหล่งจ่าย เพื่อให้กระแสไหลเข้าตัวเก็บประจุ อย่างไรก็ตาม ก็ยังไม่สามารถหลีกเลี่ยงแรงดันกระเพื่อมอยู่ดี เพียงแต่ยิ่งค่าความจุมากขึ้น แรงดันกระเพื่อมจะยิ่งต่ำลง แต่ก็ไม่ได้หายไปจนเป็น 0 (ทั้งนี้ กระแสที่ไหลย้อนยังแปรผันไปตามลักษณะเฉพาะของมอเตอร์)
แก้ปัญหาด้วยการเปลี่ยนวิธีการขับ H-bridge
ถ้าเราสังเกตจากหัวข้อก่อนหน้า (ปัญหา Regenerative current) จะเห็นว่าส่วนที่ทำให้เกิดปัญหาคือข้อ 4
เนื่องจากการไหลของกระแสนี้ ทำให้เกิดการไหลของ Regenerative current ในข้อต่อไป ซึ่งแท้จริงแล้วมอสเฟตทางซ้ายไม่จำเป็นต้องนำกระแสเลย เพราะแรงดันที่เกิดขึ้นในขณะนั้น คือแรงดัน bemf ที่เกิดจากการหมุนของมอเตอร์ ซึ่งมีค่าไม่เกินแหล่งจ่ายอยู่แล้ว ต่างกับแรงดันที่เกิดจากตัวเหนี่ยวนำ ซึ่งมีค่ามหาศาล ดังนั้นเราจึงต้องตัด state นี้ออกจากระบบ
จากการขับแบบ sign-magnitude drive จะเห็นว่า สัญญาณที่มีการเปลี่ยนแปลงขึ้นลงก็คือขาที่ต่ออยู่กับ PWM ดังนั้นจึงสรุปได้ว่า เมื่อ H-bridge ทำงานในสถานะ off half bridge ข้างที่ต่ออยู่กับ สัญญาณ PWMต้องไม่นำกระแส เราเรียกวิธีการขับ H-bridge แบบนี้ว่า "Asynchronous Sign-magnitude Drive" อย่างไรก็ตาม ในการออกแบบก่อนหน้า เรามีสัญญาณควบคุมเพียงเส้นเดียว นั่นคือเส้นที่เลือกว่า output จะเป็น HIGH (Vm) หรือ LOW (Gnd) ในการที่จะให้ half-bridge ไม่นำกระแสนั้น ทั้ง HS และ LS ต้องไม่นำกระแส ซึ่งทำไม่ได้ในวงจรก่อนหน้า ดังนั้นเราจะออกแบบวงจรควบคุม half-bridge ใหม่ โดยเพิ่มสัญญาณ enable เข้าไปในระบบ โดยถ้า enable เป็น High สัญญาณเอาท์พุต จะถูกควบคุมด้วยสัญญาณตามแบบเดิม แต่ถ้า enable เป็น Low half-bridge นั้นจะไม่นำกระแสเลย ทั้ง HS และ LS โดยเพิ่มวงจรเข้าไป จากสัญญาณ HS และ LS ที่ออกมาจากส่วนของ shoot-through protection มาเข้าวงลอจิกเกตดังรูป
![]() |
วงจร enable control |
จากนั้นจึงนำ output ไปเข้า gate driver ก่อนจะนำไปขับมอสเฟตตามเดิม จะได้วงจร half-bridge ดังรูป
การเขียนโปรแกรมควบคุม
จำเป็นต้องใช้ 2 PWM pin, และ 2 digital pin
โปรแกรมตัวอย่าง
void motor_driver(int power){ power = constrain(power,-255,255);
if(power>=0){
analogWrite(E_B,255);
analogWrite(E_A,power);
digitalWrite(pin_A,HIGH);
digitalWrite(pin_B,LOW);
}
else {
analogWrite(E_A,255);
analogWrite(E_B,power*-1);
digitalWrite(pin_B,HIGH);
digitalWrite(pin_A,LOW);
}
}
อย่างไรก็ตามเราสามารถใช้ลอจิกเกตเพื่อลดขาสัญญาณที่ใช้ควบคุมได้ดังนี้![]() |
Asynchronous Sign-magnitude Drive control |
ผลสรุป การขับแบบ Asynchronous Sign-magnitude Drive ลดการเกิด Regenerative current แต่ไม่สามารถเบรกมอเตอร์ด้วยกระแสไฟฟ้าได้ แต่อย่างไรก็ตาม เราสามารถเขียนคำสังเบรกพิเศษในโปรแกรมได้ เช่น
void motor_break () { analogWrite(E_A, 255);
analogWrite(E_B, 255);
digitalWrite(pin_B, LOW);
digitalWrite(pin_A, LOW);
}
หรือสามารถสร้างสัญญาณเฉพาะในการเบรกได้
โดยเมื่อ brake เป็น High ทุก input ของ H_bridge จะกลายเป็น High และ output จะกลายเป็น High ทั้งคู่
ทำให้มอเตอร์เบรก ในกรณีเดียวกับ sign-magnitude drive
วงจรป้องกัน (safety features)
การป้องกันวงจรขับมอเตอร์ทำได้หลายวิธี เช่นควบคุมกระแสที่จ่ายให้มอเตอร์ วงจรตัดการจ่ายไฟเมื่อมอสเฟตร้อน แต่ที่ยกมาก่อนในที่นี้คือ วงจรป้องกันการต่อแหล่งจ่ายกลับขั้ว ดังรูป
ที่ยกวงจรนี้มาก่อนเพราะว่า การต่อกลับขั้วเพียงครั้งเดียวอาจทำให้มอสเฟตทุกตัวใน H-bridge เสียหายได้ เพราะการต่อแหล่งจ่ายกระขั้วทำให้กระแสไหลผ่าน catch diode เหมือนกับการ short-circuit
สรุปเนื้อหา
วงจรขับมอเตอร์สามารถออกแบบได้หลายรูปแบบ นี่เป็นเพียงรูปหนึ่งที่ทำงานได้ ผมเชื่อว่าหากเรามีความเข้าใจถึงข้อคำนึงต่างๆ จะทำให้เราสามารถออกแบบวงจรเหล่านี้ได้ด้วยตัวเอง
หวังว่าความรู้ต่อไปนี้จะเป็นประโยชน์ต่อผู้อ่าน หากบทความนี้มีข้อบกพร่อง สามารถคอมเม้นได้เลยนะครับ ทั้งนี้หากมีข้อสงสัยในเนื้อหาสามารถคอมเม้น หรือติดต่อทางเฟซบุ้คได้เลยครับ
ขอบคุณครับ ^____^"
ผมชอบมากครับ
ตอบลบแต่ผมอยากได้รูป วงจรทั้งหมดอ่าครับ แต่ผมจะไม่เขียนโค้ดอะครับ ต่อวงจรอย่างเดียวได้ไหมครับ
ถ้าต่อวงจรก็ต้องมีตัวควบคุมนะครับ จะควบคุมจากอะไร
ลบAuduno
ลบทรานซิสเตอร์วงจร Gate driver ใช้เบอร์อะไรหรอคะ
ตอบลบขอทราบเบอร์อุปกรณ์หน่อยได้ป่าวคับจะลองทำดู
ตอบลบ