วันเสาร์ที่ 29 เมษายน พ.ศ. 2560

การออกแบบวงจรขับมอเตอร์กระแสตรงด้วยมอสเฟต (H-bridge)

********** 
หมายเหตุ  บทความนี้ยังไม่สมบูรณ์ ยังต้องการคำแนะนำติชม จากผู้อ่านทั้งด้านความรู้ ความถูกต้องของเนื้อหา รวมถึงความเข้าใจง่ายของเนื้อหา จึงต้องขอความกรุณามา ณ โอกาสนี้ 
**********

อ้างอิงจาก http://www.modularcircuits.com/
                   สวัสดีครับ วันนี้จะพูดเรื่องการออกแบบวงจรขับมอเตอร์กระแสตรงครับ วงจรทั้งหมดนี้เป็นเวอร์ชั่นแรกที่ผมออกแบบ และประกอบทดลองขึ้น ตอนนี้เป็นรุ่นที่ปลอดภัย และใช้งานได้แล้วที่ระดับแรงดันไม่เกิน 15V แต่ไปผมจะพยายามออกแบบให้วงจรมีขนาดเล็กลง มีอุปกรณ์ที่น้อยลง และมีการป้องกันที่ดีขึ้น

ก่อนอื่นเราต้องเข้าใจการทำงานของมอเตอร์กระแสตรงก่อน


ภาพมอเตอร์กระแสตรง (ภาพจาก learn.adafruit.com/)
       ซึ่งเราก็จะเห็นได้บ่อยๆ เช่นตามเกียร์บ๊อกพลาสติก ภายในมอเตอร์ประกอบด้วยขดลวด และแม่เหล็กถาวร  ซึ่งเราสามารถแสดงแบบจำลองสมมูลย์ (equivalence model)   ได้ดังนี้

ภาพจาก http://ctms.engin.umich.edu

            โดยที่ R คือความต้านทานของขวดลวด L คือค่าความเหนี่ยวนำของขดลวด และ e คือแรงเคลื่อนที่เกิดจากการหมุนของมอเตอร์ ซึ่งจะแปรผันกับความเร็วของมอเตอร์

การควบคุมมอเตอร์กระแสตรงเบื้องต้น

             การควบคุมมอเตอร์กระแสตรงแบ่งเป็นสองประเด็นใหญ่ๆ คือ 1.ความเร็วเชิงมุม 2. แรงบิด
ในบทความนี้เราจะพูดถึงการควบคุมความเร็วเชิงมุมเป็นหลัก ซึ่งแปรผันกับแรงดันไฟตรงที่จ่ายให้มอเตอร์ และเมื่อสลับขั้วแหล่งจ่ายทิศทางของการหมุนจะสลับด้านเช่นกัน  และแรงบิดของมอเตอร์จะแปรผันกับกระแสที่ไหลผ่านขดลวด ตามทฤษฏีแม่เหล็กไฟฟ้า


พฤติกรรมของมอเตอร์กระแสตรง

              เมื่อเราเริ่มจ่ายไฟให้มอเตอร์ ในขณะที่มอเตอร์ยังไม่เริ่มหมุน ทำให้ e หรือ bemf (back electromotive force) มีค่าเป็น 0V  ทำให้กระแสไหลผ่านมอเตอร์ค่อนข้างสูง  เนื่องจากเมื่อเริ่มหมุนมอเตอร์ จะต้องใช้แรงบิดในการเปลี่ยนแปลงความเร็วเชิงมุมของมอเตอร์ ทำให้มอเตอร์กินกระแสมาก
กระแสที่ไหลผ่านมอเตอร์ ที่ทำให้มอเตอร์เกิดแรงบิด ทำให้ความเร็วเชิงมุมของมอเตอร์เพิ่มขึ้นเรื่อยๆ แต่เมื่อความเร็วของมอเตอร์เพิ่มขึ้น แรงดัน bemf ของมอเตอร์ก็จะเพิ่มขึ้น ต้านการไหลของกระแส ทำให้กระแสไหลได้น้อยลง ทำให้แรงบิดของมอเตอร์น้อยลง และหักล้างกับแรงเสียดทานในที่สุด เมื่อแรงบิดถูกหักล้างจนหมด ทำให้ความเร่งเชิงมุมของมอเตอร์เป็น  0 และความเร็วของมอเตอร์ไม่เพิ่มขึ้นอีก ตรงจุดนี้ก็คือความเร็วสูงสุดของมอเตอร์ ซึ่งแปรผันกับแรงดันของแหล่งจ่ายนั่นเอง
             เมื่อมอเตอร์ได้รับภาระทางกลมากขึ้น  ทำให้ความเร็วรอบของมอเตอร์ลดลงและแรงดัน bemf จะต่ำลงด้วย   ทำให้กระแสจะไหลผ่านมากขึ้น มอเตอร์จึงสร้างแรงบิดได้มากขึ้น ดังนั้นจะเห็นว่าแรงบิดของมอเตอร์จะสวนทางกับความเร็ว ดังนั้น ภาวะที่มอเตอร์มีแรงบิดสูงสุด ก็คือภาวะที่แกนมอเตอร์ถูกยึดให้หยุดนิ่ง ซึ่งเราเรียกว่า stall torque นั่นเอง


วงจรขับมอเตอร์คืออะไร??

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


โครงสร้างแบบ H-bridge 


     
ผังวงจร สร้างจาก fritzing
                โครงสร้างแบบ H-bridge ออกแบบขึ้นมาเพื่อสลับขั้วแรงดันที่จ่ายให้กับมอเตอร์  ทำให้สามารถสลับทิศทางการหมุนของมอเตอร์ได้
                โครงสร้าง  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 จะมีรูปร่างดังรูป

ในทางปฏิบัติแล้ว เนื่องจากโครงสร้างขา gate และ source นั้นจะเป็นเหมือนตัวเก็บประจุ ดังนั้นเมื่อจ่ายกระแส(วงจร gate driver จ่ายกระแสได้จำกัด) จะเกิดการเปลี่ยนแปลงของระดับแรงดัน gate ดังรูป
จะเห็นว่าเกิดช่วง 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  pin
                          void 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 นำกระแส

กระแสไฟลเข้าขดลวดตามปกติ เกิด Vemf ต้านการไหล และค่อยๆลดลงเหมือนตัวอย่างก่อนหน้า

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. แรงดันแหล่งจ่ายเกิดการกระเพื่อม อาจไปรบกวนระบบอื่นๆที่ต่ออยู่กับแหล่งจ่ายไฟ


การรับมือกับปัญหา 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
โดย DIR  ( Direction) เป็นสัญญาณดิจิตอล เอาไว้กำหนดทิศทางการหมุนของมอเตอร์ และ PWM เอาไว้ควบคุมความเร็วของมอเตอร์ (แต่ไม่สามารถเบรกด้วยไฟฟ้าได้)
ผลสรุป การขับแบบ 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)

การป้องกันวงจรขับมอเตอร์ทำได้หลายวิธี เช่นควบคุมกระแสที่จ่ายให้มอเตอร์ วงจรตัดการจ่ายไฟเมื่อมอสเฟตร้อน แต่ที่ยกมาก่อนในที่นี้คือ วงจรป้องกันการต่อแหล่งจ่ายกลับขั้ว ดังรูป

โดยจุดที่เป็นแบตเตอรี่ คือจุดที่เป็นแหล่งจ่ายของวงจร และจุดที่เป็น  12V และ Gnd คือไฟเลี้ยงของมอเตอร์
ที่ยกวงจรนี้มาก่อนเพราะว่า การต่อกลับขั้วเพียงครั้งเดียวอาจทำให้มอสเฟตทุกตัวใน H-bridge เสียหายได้ เพราะการต่อแหล่งจ่ายกระขั้วทำให้กระแสไหลผ่าน catch diode เหมือนกับการ short-circuit
สรุปเนื้อหา
วงจรขับมอเตอร์สามารถออกแบบได้หลายรูปแบบ นี่เป็นเพียงรูปหนึ่งที่ทำงานได้  ผมเชื่อว่าหากเรามีความเข้าใจถึงข้อคำนึงต่างๆ จะทำให้เราสามารถออกแบบวงจรเหล่านี้ได้ด้วยตัวเอง
หวังว่าความรู้ต่อไปนี้จะเป็นประโยชน์ต่อผู้อ่าน หากบทความนี้มีข้อบกพร่อง สามารถคอมเม้นได้เลยนะครับ ทั้งนี้หากมีข้อสงสัยในเนื้อหาสามารถคอมเม้น หรือติดต่อทางเฟซบุ้คได้เลยครับ
ขอบคุณครับ ^____^"

5 ความคิดเห็น:

  1. ผมชอบมากครับ
    แต่ผมอยากได้รูป วงจรทั้งหมดอ่าครับ แต่ผมจะไม่เขียนโค้ดอะครับ ต่อวงจรอย่างเดียวได้ไหมครับ

    ตอบลบ
    คำตอบ
    1. ถ้าต่อวงจรก็ต้องมีตัวควบคุมนะครับ จะควบคุมจากอะไร

      ลบ
  2. ทรานซิสเตอร์วงจร Gate driver ใช้เบอร์อะไรหรอคะ

    ตอบลบ
  3. ขอทราบเบอร์อุปกรณ์หน่อยได้ป่าวคับจะลองทำดู

    ตอบลบ