มอเตอร์ดีซีประกอบด้วยขั้วต่อใช้งาน 2 ขั้ว หากจ่ายไฟบวกเข้าที่ขั้วหนึ่ง และจ่ายไฟลบเข้าขั้วที่เหลือ จะทำให้มอเตอร์หมุนไปทิศทางหนึ่ง แต่เมื่อสลับขั้วการจ่ายไฟ จะทำให้มอเตอร์หมุนในทิศทางตรงกันข้าม
การกลับขั้วจ่ายไฟให้มอเตอร์นี้เอง ที่เป็นหัวใจสำคัญของการควบคุมทิศทางการหมุนของมอเตอร์ดีซี
มอเตอร์ดีซีมีอยู่หลากหลายรุ่น หลากหลายแบบ แต่ละรุ่นแต่ละแบบจะมีคุณสมบัติที่แตกต่างกันไป แต่คุณสมบัติของมอเตอร์ที่ผู้ออกแบบวงจรควบคุมต้องทราบ มีดังนี้
มอเตอร์ดีซีที่จำหน่ายอยู่ในท้องตลาดใช้แรงดันไฟฟ้าที่แตกต่างกัน ผู้ซื้อจำเป็นต้องทราบว่าตนเองต้องการใช้มอเตอร์ดีซีที่แรงดันไฟฟ้าเท่าไร ซึ่งการเลือกมอเตอร์ดีซีว่าต้องใช้แรงดันไฟฟ้าเท่าไร ให้พิจารณาจากแหล่งจ่ายไฟ เช่น หากใช้แหล่งจ่ายไฟเป็นแบตเตอรี่ 12V ก็ควรจะใช้มอเตอร์ดีซี 12V หรือใช้ไฟจากถ่าน AA 2 ก้อน ต่ออนุกรมกัน ได้แรงดันไฟฟ้า 3V ก็ควรใช้มอเตอร์ดีซี 3V ด้วย
ทั้งนี้มอเตอร์ดีซีที่มีจำหน่ายในท้องตลาดมีแรงดัน 3V 6V และ 12V ให้เลือกเท่านั้น หากแหล่งจ่ายไฟไม่ได้จ่ายแรงดันตามที่มอเตอร์ดีซีมีจำหน่าย สามารถใช้มอเตอร์ดีซีที่มีแรงดันต่ำกว่าแหล่งจ่าย หรือสูงกว่าแหล่งจ่ายได้ โดยควรคำนึงถึงข้อควรระวังดังนี้
หากนำมอเตอร์แรงดันต่ำไปใช้กับแหล่งจ่ายไฟแรงดันสูง เช่น ใช้มอเตอร์ 3V กับแหล่งจ่ายไฟ 3.7V (แบตเตอรี่ลิเธียมเซลล์เดียว) จะทำให้มอเตอร์หมุนเร็วขึ้น แต่มีความเสี่ยงที่มอเตอร์จะพังเสียหายได้ (มอเตอร์ไหม้) เนื่องจากจ่ายแรงดันสูงกว่าสเปคของมอเตอร์ ส่งผลให้มอเตอร์เกิดความร้อนสูง
หากนำมอเตอร์แรงดันสูงไปใช้กับแหล่งจ่ายไฟแรงดันต่ำ เช่น ใช้มอเตอร์ 6V กับแหล่งจ่ายไฟ 3V จะทำให้มอเตอร์หมุนช้ากว่าที่ระบุในสเปค หรือมอเตอร์อาจไม่หมุนเลย รวมทั้งส่งผลให้มอเตอร์มีแรงบิดต่ำกว่าที่สเปคระบุไว้
เป็นไปได้ควรใช้แรงดันไฟฟ้าจากแหล่งจ่ายให้เท่ากับแรงดันของมอเตอร์ดีซี
กระแสไฟฟ้าที่มอเตอร์ดีซีใช้ จะระบุไว้ในสเปคของมอเตอร์ ซึ่งกระแสไฟฟ้าของมอเตอร์จะถูกนำมาใช้คำนวณเพื่อเลือกแหล่งจ่ายไฟ โดยมอเตอร์ใช้กระแสไฟฟ้าเท่าไร จะต้องเลือกแหล่งจ่ายไฟที่จ่ายกระแสได้มากกว่ามอเตอร์ เช่น มอเตอร์ใช้กระแสประมาณ 300mA ควรเลือกแหล่งจ่ายที่จ่ายกระแสไฟฟ้าได้สูงกว่า
กรณีใช้แหล่งจ่ายไฟที่เป็นแบตเตอรี่ กระแสไฟฟ้าที่มอเตอร์ใช้จะส่งผลต่อระยะเวลาของการจ่ายไฟของแบตเตอรี่ หากมอเตอร์ใช้กระแสไฟฟ้ามาก จะทำให้แบตเตอรี่หมดเร็วมากขึ้น กลับกันหากใช้มอเตอร์ที่ใช้กระแสไฟฟ้าน้อย ใช้กับแบตเตอรี่ลูกเดิม ก็จะทำให้แบตเตอรี่จ่ายไฟได้นานขึ้น ส่งผลให้ใช้งานได้ยาวนานมากยิ่งขึ้น
นอกจากกระแสไฟฟ้าของมอเตอร์จะถูกใช้เลือกแหล่งจ่ายแล้ว ยังถูกใช้ในการเลือก หรืออกแบบชุดขับมอเตอร์ด้วย โดยการเลือกชุดขับมอเตอร์ จะต้องเลือกชุดขับที่ทนกระแสได้สูงกว่ากระแสไฟฟ้าที่มอเตอร์ใช้ เช่น มอเตอร์ใช้กระแสไฟฟ้าประมาณ 300mA จึงเลือกชุดขับมอเตอร์ที่ทนกระแสได้ 600mA ต่อเนื่อง เป็นต้น
การควบคุมมอเตอร์ทางเดียว คือ การควบคุมมอเตอร์ให้หมุน หรือไม่หมุน เท่านั้น การควบคุมแบบทางเดียวนี้เป็นการควบคุมที่ง่ายที่สุด ทางครั้งไม่จำเป็นต้องใช้วงจรอิเล็กทรอนิกส์เลย เช่น หากต้องการเปิดปั้มน้ำ แค่เสียบปลั๊กปั้มน้ำ ก็ทำให้ปั้มน้ำทำงานได้แล้ว
การควบคุมมอเตอร์ทางเดียวโดยใช้วงจรอิเล็กทรอนิกส์ ทำได้โดยใช้การควบคุมการไหลของกระแสไฟฟ้า โดยควบคุมให้กระแสไฟฟ้าไหลผ่านมอเตอร์ (มอเตอร์หมุน) หรือควบคุมให้กระแสไฟฟ้าไม่ไหลผ่านมอเตอร์ (มอเตอร์ไม่หมุน) โดยอุปกรณ์ที่มักใช้ควบคุมการไหลของกระแสไฟฟ้าแบ่งเป็น 2 ประเภท คือ ใช้รีเลย์ และใช้อุปกรณ์สารกึ่งตัวนำ
ทำได้โดยต่อไฟจากแหล่งจ่ายไฟเข้าที่ขา COM ของรีเลย์ แล้วต่อขา NO หรือ NC เข้ากับมอเตอร์ เมื่อรีเลย์ตัด หรือมีการจ่ายไฟให้รีเลย์ ก็จะทำให้หน้าคอนเทคของรีเลย์เปลี่ยนทิศทาง ทำให้ควบคุมการไหลของกระแสไฟฟ้าที่เข้ามอเตอร์ได้
จากรูปที่ 4 เมื่อกดที่สวิตซ์ SW1 ทำให้รีเลย์ทำงาน แล้วส่งผลให้หน้าคอนเทคของรีเลย์เปลี่ยนจาก NC มาเป็น NO ส่งผลให้กระแสไฟฟ้าจากแบตเตอรี่ 12V ไหลจากขั้วบวก ผ่านหน้าคอนเทครีเลย์ ไปยังมอเตอร์ไหลออกจากมอเตอร์เข้าที่ขั้วลบของแบตเตอรี่ ส่งผลให้มอเตอร์หมุน และเมื่อปล่อยสวิตซ์ SW1 ทำให้รีเลย์ไม่ทำงาน หน้าคอนเทคของรีเลย์จึงกลับมาที่ NC ทำให้กระแสไฟฟ้าไหลผ่านรีเลย์ไม่ได้ ไม่มีกระแสไฟฟ้าไหลผ่านมอเตอร์ ส่งผลให้มอเตอร์ค่อย ๆ ลดความเร็วลงจนหยุดหมุนในที่สุด
การใช้งานจริง รีเลย์จะถูกควบคุมด้วยวงจรส่วนควบคุม โดยอาจจะเป็นไมโครคอนโทรเลอร์ บอร์ด Arduino PIC STM8 STM32 หรืออาจจะเป็นวงจรอิเล็กทรอนิกส์ และมักใช้โมดูลรีเลย์สำเร็จรูป รูปวงจรต่อใช้งานจริงจึงเป็นดังรูปที่ 5
วงจรส่วนควบคุมใช้บอร์ด Arduino Uno R3 ต่อรีเลย์เข้ากับช่อง D2 การสั่งงานให้มอเตอร์หมุน หรือหยุดหมุน ทำได้โดยควบคุมลอจิกที่ช่อง D2 (ให้เป็นลอจิก 0 หรือ 1)
การเลือกใช้รีเลย์ต้องดูกระแสที่รีเลย์ทนไหวร่วมกับกระแสที่มอเตอร์ใช้ โดยจะต้องเลือกรีเลย์ที่ทนกระแสได้มากกว่าที่มอเตอร์ใช้ เช่น มอเตอร์ใช้กระแสประมาณ 5A ควรใช้รีเลย์ 10A หากใช้รีเลย์ต่ำกว่า 5A หรือ 5A พอดี มีโอกาสที่ในอนาคตหน้าคอนเทคของรีเลย์จะละลายจนรีเลย์ไม่สามารถใช้งานอีกต่อไป
อุปกรณ์สารกึ่งตัวนำที่นิยมนำมาใช้ควบคุมมอเตอร์ มีด้วยกัน 2 ชนิด คือ ทรานซิสเตอร์ และมอเฟส โดยมีวงจรต่อใช้งานที่คล้ายกันมาก วงจรควบคุมมอเตอร์ทางเดียวด้วยทรานซิสเตอร์ และมอเฟสแสดงดังรูป
วงจรขับมอเตอร์ทางเดียวด้วยทรานซิสเตอร์ ได้ใช้ทรานซิสเตอร์เป็นสวิตซ์อิเล็กทรอนิกส์ โดยสัญญาณ INPUT จะมาจากวงจรส่วนควบคุม (เช่น บอร์ด Arduino) เมื่อวงจรส่วนควบคุมจ่ายลอจิก 1 มา ทำให้ทรานซิสเตอร์ทำงาน แล้วยอมให้กระแสไฟฟ้าไหลจากขา C ไปหาขา E ได้ ทำให้มีกระแสไหลผ่านมอเตอร์ ส่งผลให้มอเตอร์หมุน และเมื่อวงจรส่วนควบคุมจ่ายลอจิก 0 มาที่ INPUT ทำให้ทรานซิสเตอร์หยุดการทำงาน ส่งผลให้กระแสไฟฟ้าไหลจากขา C มาขา E ไม่ได้ กระแสไฟฟ้าหยุดไหลผ่านมอเตอร์ ทำให้มอเตอร์ค่อย ๆ หมุนช้าลงจนหยุดหมุนในที่สุด
คุณสมบัติที่สำคัญของทรานซิสเตอร์ คือ ใช้กระแสไฟฟ้าในการควบคุม หมายความว่า ยิ่งอุปกรณ์ที่ต้องการควบคุม (ในบทความนี้คือมอเตอร์) ใช้กระแสมากเท่าไร กระแสไฟฟ้าที่ขา INPUT ยิ่งต้องเพิ่มมากยิ่งขึ้น เพื่อให้กระแสไหลผ่านทรานซิสเตอร์ได้เต็มที่ และให้มอเตอร์หมุนได้เต็มที่ ดังนั้นการใช้งานจริงมักจะมีวงจรขับทรานซิสเตอร์เพิ่มขึ้นมาอีกชั้นหนึ่ง เนื่องจากไมโครคอนโทรลเลอร์จ่ายกระแสไฟฟ้าได้ไม่มาก (บอร์ด Arduino หรือไมโครคอนโทรลเลอร์ตะกูล AVR ให้กระแสออกขา GPIO ได้สูงสุดแค่ 20mA) การนำไมโครคอนโทรลเลอร์ไปต่อเข้าที่ขา INPUT โดยตรง จึงอาจทำให้ไมโครคอนโทรลเลอร์พังเสียหายได้
ทรานซิสเตอร์แต่ละเบอร์มีอัตราการทนกระแสไฟฟ้าไหลผ่านต่างกัน ซึ่งสามารถดูได้จาก Datasheet การเลือกบอร์ดทรานซิสเตอร์ ให้เลือกเป็นชนิด NPN (ในวงจรใช้ทรานซิสเตอร์ NPN) ที่มีอัตราทนกำลังไฟฟ้าขา C (IC) มากกว่ากระแสที่มอเตอร์ใช้ เช่น มอเตอร์ใช้กระแสประมาณ 300mA เลือกใช้ทรานซิสเตอร์เบอร์ BD139 ที่ทนกระแสขา C ได้ 1.5A กรณีมอเตอร์ใช้กระแสสูงกว่า 1A แนะนำให้ติดฮีทซิ้งระบายความร้อนให้ทรานซิสเตอร์ด้วย
วงจรขับมอเตอร์ทางเดียวด้วยมอสเฟส มีลักษณะวงจรคล้ายกับแบบทรานซิสเตอร์ แตกต่างที่มีตัวต้านทานต่อจากขา G ลงกราว์ด (ขั้วลบ) เพื่อไม่ให้มีกระแสไฟรั่วไหล หลักการคือเมื่อมีแรงดันไฟฟ้ามากพอมาจ่ายเข้าที่ขา G มอสเฟสจะยอมให้มีกระแสไหลผ่านจากขา D ไปยังขา S ทำให้มีกระแสไฟฟ้าไหลผ่านมอเตอร์ ทำให้มอเตอร์หมุน แต่หากแรงดันไฟฟ้าเป็น 0 หรือแรงดันไฟฟ้าไม่มากพอ จะทำให้มอสเฟสไม่ทำงาน ทำให้กระแสไฟฟ้าไหลจากขา D ไปยังขา S ไม่ได้ มอเตอร์ไม่มีกระแสไหลผ่าน ส่งผลให้มอเตอร์ค่อย ๆ หมุนช้าลง จนหยุดหมุนในที่สุด
คุณสมบัติที่สำคัญของมอสเฟส คือ ใช้แรงดันไฟฟ้าในการทำงาน โดยมอสเฟสเบอร์เก่า ๆ มักใช้แรงดันไฟฟ้า 12V ในการทำงาน หากแรงดันไฟฟ้าไม่ถึงช่วง 12V จะทำให้มอสเฟสไม่ทำงาน ซึ่งจะเป็นปัญหากับวงจรส่วนควบคุม เนื่องจากวงจรส่วนควบคุมที่ใช้ไมโครคอนโทรลเลอร์ใช้แรงดันไฟฟ้า 5V เท่านั้น การนำขาจากไมโครคอนโทรลเลอร์มาต่อเข้ากับมอสเฟสโดยตรง จะทำให้มอสเฟสไม่ทำงานเนื่องจากแรงดันไม่มากพอ วิธีแก้ไขคือเลือกมอสเฟสที่ใช้แรงดันไฟฟ้า 5V หรือเพิ่มวงจรไดร์มอสเฟสขึ้นมาอีกชั้นหนึ่ง โดยอาจจะใช้ทรานซิสเตอร์ หรือออปโต้คัปเปลอร์มาช่วย
นอกจากแรงดันแล้ว สิ่งที่ต้องพิจารณาร่วมด้วยคือกระแสสูงสุดที่มอสเฟสสามารถทนได้ โดยจะต้องเลือกมอสเฟสที่ทนกระแสได้สูงกว่ากระแสที่มอเตอร์ใช้ ตัวอย่างการดูว่ามอสเฟสทนกระแสได้สูงสุดเท่าไร ให้ดูใน Datasheet ตาราง ABSOLUTE MAXIMUM RATINGS ในส่วนของ ID
วงจรขับมอเตอร์ทางเดียวด้วยมอสเฟสไดร์ด้วยทรานซิสเตอร์ ใช้แก้ปัญหาวงจรส่วนควบคุมไม่สามารถควบคุมมอสเฟสได้ จึงใช้ทรานซิสเตอร์เข้ามาช่วยขับมอสเฟสแทน เนื่องจากมอสเฟสใช้กระแสไฟฟ้าน้อยมาก ดังนั้นการใช้ทรานซิสเตอร์ตัวเล็ก ๆ มาช่วยขับจึงเพียงพอแล้ว หลักการคือ เมื่อวงจรส่วนควบคุมปล่อยลอจิก 0 มาที่จุด INPUT ทรานซิสเตอร์ไม่ทำงาน ส่งผลให้แรงดันไฟฟ้าจากแบตเตอรี่ 12V ไหลผ่านตัวต้านทานเข้าที่ขา G ของมอสเฟส ส่งผลให้มอสเฟสทำงาน กระแสไฟฟ้าไหลผ่านมอเตอร์เข้าขา D ของมอสเฟส และออกขา S ของมอสเฟส กระแสไฟฟ้าไหลได้ ทำให้มอเตอร์หมุน และเมื่อวงส่วนควบคุมส่งลอจิก 1 มา ทำให้ทรานซิสเตอร์ทำงาน กระแสไฟฟ้าที่เดิมไหลเข้ามอสเฟส มาไหลเข้าทรานซิสเตอร์แทน ทำให้แรงดันขา G เทียบกับขา S ของมอสเฟสใกล้เคียง 0V ทำให้มอสเฟสไม่ทำงาน กระแสไฟฟ้าจากมอเตอร์ไม่สามารถไหลผ่านมอสเฟสได้ ส่งผลให้มอเตอร์ค่อย ๆ หมุนช้าลง จนหยุดหมุนในที่สุด
กรณีใช้รีเลย์ การควบคุมความเร็วไม่สามารถควบคุมที่รีเลย์ได้ จะต้องใช้วงจรควบคุมความเร็วมอเตอร์แยกออกมา บอร์ดควบคุมความเร็วมอเตอร์สำเร็จรูป มีลักษณะดังรูป
การควบคุมมอเตอร์สองทิศทาง คือการควบคุมมอเตอร์ที่สามารถควบคุมทิศทางการหมุนได้ โดยวงจรควบคุมมอเตอร์ที่ควบคุมทิศทางได้ เรียกว่า H-Bridge
H-Bridge คือแนวคิดการควบคุมการไหลของกระแสไฟฟ้าที่ไหลเข้าขั้วของมอเตอร์ โดยแนวคิดของ H-Bridge ทำความเข้าใจได้โดยใช้สวิตซ์ควบคุมการไหลของกระแส ดังนี้
เมื่อกดที่สวิตซ์ SW1 และ SW4 และปล่อยสวิตซ์ SW2 และ SW3 จะส่งผลให้กระแสไฟฟ้าจากขั้วบวกของแบตเตอรี่ไหลผ่านสวิตซ์ SW1 เข้าที่ขั้วด้านซ้ายของมอเตอร์ และกระแสไฟฟ้าไหลออกที่ขั้วด้านขวาของมอเตอร์ ไหลผ่าน SW4 กลับเข้าที่ขั้วลบของแบตเตอรี่ ส่งผลให้มอเตอร์หมุนตามเข็มนาฬิกา
เมื่อกดที่สวิตซ์ SW2 และ SW3 และปล่อยสวิตซ์ SW1 และ SW4 จะส่งผลให้กระแสไฟฟ้าจากขั้วบวกของแบตเตอรี่ไหลผ่านสวิตซ์ SW2 เข้าที่ขั้วด้านขวาของมอเตอร์ และกระแสไฟฟ้าไหลออกที่ขั้วด้านซ้ายของมอเตอร์ ไหลผ่าน SW3 กลับเข้าที่ขั้วลบของแบตเตอรี่ ส่งผลให้มอเตอร์หมุนทวนเข็มนาฬิกา
หากต้องการให้มอเตอร์หยุดหมุนทำได้โดยปลอยสวิตซ์ทุกตัว ทำให้มอเตอร์หมุนด้วยแรงเฉี่อยไปเรื่อย ๆ จนหยุดหมุนในที่สุด หากต้องการให้มอเตอร์หยุดหมุนทันที ทำได้โดยกดที่สวิตซ์ SW3 และ SW4 และปล่อยสวิตซ์ SW1 และ SW2 จะทำให้มอเตอร์หยุดหมุนอย่างรวดเร็ว (เรียกการจับขั้วของมอเตอร์ทั้ง 2 ขั้วช็อตกันขณะมอเตอร์หมุนด้วยแรงเฉี่อยว่า การเบรก : Break)
จากหลักการของ H-Bridge ทำให้สามารถใช้อุปกรณ์อุปกรณ์อิเล็กทรอนิกส์ทำหน้าที่ตัด-ต่อวงจรแทนสวิตซ์ได้ ทั้งการใช้รีเลย์ และการใช้อุปกรณ์สารกึ่งตัวนำ
ทำได้โดยจัดวงจรรีเลย์ให้เป็นรูปแบบของ H-Bridge
หลักการทำงานของวงจรคือ เมื่อ INPUT A ปล่อยลอจิก 1 ทำให้กระแสไฟฟ้าไหลเข้าไปจ่ายที่รีเลย์ RL1 และ RL4 กระแสไฟฟ้าจากขั้วบวกของแบตเตอรี่ไหลผ่านหน้าคอนเทคของรีเลย์ RL1 เข้าไปที่ขั้วด้านซ้ายของมอเตอร์ ไหลออกที่ขั้วด้านขวาของมอเตอร์ ผ่านหน้าคอนเทคของรีเลย์ RL4 เข้าที่ขั้วลบของแบตเตอรี่ ส่งผลให้มอเตอร์หมุนตามเข็มนาฬิกา
หลักการทำงานของวงจรคือ เมื่อ INPUT B ปล่อยลอจิก 1 ทำให้กระแสไฟฟ้าไหลเข้าไปจ่ายที่รีเลย์ RL2 และ RL3 กระแสไฟฟ้าจากขั้วบวกของแบตเตอรี่ไหลผ่านหน้าคอนเทคของรีเลย์ RL2 เข้าไปที่ขั้วด้านขวาของมอเตอร์ ไหลออกที่ขั้วด้านซ้ายของมอเตอร์ ผ่านหน้าคอนเทคของรีเลย์ RL3 เข้าที่ขั้วลบของแบตเตอรี่ ส่งผลให้มอเตอร์หมุนทวนเข็มนาฬิกา
รีเลย์ที่ใช้ในวงจรรูปที่ 13 และ 14 เป็นแบบ SPST คือมีหน้าคอนเทคเดียว ควบคุมให้วงจรเปิด-วงจรปิด ในการควบคุมมอเตอร์มักจะนิยมใช้รีเลย์ชนิด SPDT คือมีสองหน้าคอนเทค เมื่อต่อใช้กับมอเตอร์ ทำให้ลดการใช้รีเลย์เหลือเพียง 2 ตัวเท่านั้น
ทั้งนี้เพื่อความง่ายในการใช้งาน การใช้รีเลย์สำเร็จรูปต่อเข้ากับวงจรส่วนควบคุม จะทำให้ประหยัดเวลา และลดต้นทุนการพัฒนาลงได้มาก วงจรควบคุมมอเตอร์สองทิศทางด้วยรีเลย์ใช้งานจริง
การเขียนโปรแกรมควบคุมมอเตอร์ ทำได้โดยกำหนดให้ขา 7 และ 8 เป็น OUTPUT แล้วควบคุมลอจิกที่ขา 7 และ 8 หากกำหนดให้ขา 7 มีลอจิกเป็น 0 และขา 8 มีลอจิกเป็น 1 จะทำให้มอเตอร์หมุนไปทิศทางหนึ่ง และหากกำหนดให้ขา 7 มีลอจิกเป็น 1 และขา 8 มีลอจิกเป็น 0 จะทำให้มอเตอร์หมุนไปในทิศทางตรงกันข้าม หากต้องการให้มอเตอร์หยุดหมุนทำได้โดยสั่งให้ขา 7 และขา 8 มีลอจิกเป็น 0
การควบคุมความเร็วของมอเตอร์ในวงจรขับมอเตอร์ที่ใช้รีเลย์ ไม่สามารถควบคุมโดยตรงได้ จำเป็นต้องใช้วงจรควบคุมความเร็วมอเตอร์แยกออกมา ซึ่งแสดงดังรูป
การพิจารณาเลือกรีเลย์ จำเป็นต้องดูกระแสที่มอเตอร์ใช้ แล้วเลือกรีเลย์ที่ทนกระแสได้มากกว่าที่มอเตอร์ใช้ เพื่อให้หน้าคอนเทคของรีเลย์ทนกระแสไหลผ่านได้ไหว ทำให้สามารถใช้งานได้ยาวนาน
จัดวงจรสวิตซ์ด้วยทรานซิสเตอร์ NPN เป็นรูปแบบ H-Bridge ได้ตามรูป
เมื่อป้อนลอจิก 1 เข้าที่ INPUT A และป้อนลอจิก 0 เข้าที่ INPUT B ทำให้ทรานซิสเตอร์ Q1 และ Q4 ทำงาน ทำให้กระแสไฟฟ้าไหลจากขั้วบวกของแบตเตอรี่เข้าที่ขา C ออกขา E ของทรานซิสเตอร์ Q1 ไหลผ่านมอเตอร์เข้าที่ขา C ออกที่ขา E ของทรานซิสเตอร์ Q4 ไหลครบวงจรที่แบตเตอรี่ขั้วลบ ส่งผลให้มอเตอร์หมุนตามเข็มนาฬิกา
จากนั้นเมื่อป้อนลอจิก 0 เข้าที่ INPUT A และป้อนลอจิก 1 เข้าที่ INPUT B ทำให้ทรานซิสเตอร์ Q1 และ Q4 ไม่ทำงาน และทรานซิสเตอร์ Q2 และ Q2 ทำงานแทน ทำให้กระแสไฟฟ้าไหลจากขั้วบวกของแบตเตอรี่เข้าที่ขา C ออกขา E ของทรานซิสเตอร์ Q2 ไหลผ่านมอเตอร์เข้าที่ขา C ออกที่ขา E ของทรานซิสเตอร์ Q3 ไหลครบวงจรที่แบตเตอรี่ขั้วลบ ส่งผลให้มอเตอร์หมุนตามเข็มนาฬิกา
หากต้องการให้มอเตอร์หยุดหมุน ทำได้โดยป้อนลอจิก 0 เข้าที่ INPUT A และ INPUT B ส่งผลให้มอเตอร์ค่อย ๆ หมุนช้าลงจนหยุดหมุนในที่สุด
คุณสมบัติที่สำคัญของทรานซิสเตอร์ นอกจากใช้กระแสไฟฟ้าในการทำงานแล้ว แรงดันไฟฟ้าที่ออกจากขา E จะมีค่าเท่ากับแรงดันขา B ลบ 0.7V หมายความว่า หากวงจรควบคุมจ่ายแรงดันไฟฟ้า 5V เข้ามาที่ INPUT ใด ๆ ก็ตาม แรงดันเอาต์พุตของขา E จะมีค่าน้อยกว่า 5V เสมอ ดังนั้นหากใช้มอเตอร์แรงดันสูงกว่า 5V แต่ใช้แรงดันป้อนเข้า INPUT A และ INPUT B เป็น 5V จะส่งผลให้มอเตอร์ไม่หมุน เพราะมอเตอร์ได้รับแรงดันไม่มากพอ การแก้ปัญหาดังกล่าวทำได้โดยออกแบบวงจรขับทรานซิสเตอร์ขึ้นมาอีกชั้นหนึ่ง ซึ่งมีความยุ่งยากมาก จึงไม่นิยมใช้วงจรควบคุมมอเตอร์สองทิศทางด้วยทรานซิสเตอร์ในวงจรที่แรงดันส่วนควบคุมและแรงดันมอเตอร์ไม่เท่ากัน
ออกแบบวงจรสวิตซ์ด้วยมอสเฟส N-Channel และ P-Channel เป็นรูปแบบ H-Bridge
ใช้มอสเฟส N-Channel และ P-Channel มาต่อเป็นรูปแบบ H-Bridge มีหลักการทำงานคือ เมื่อสับสวิตซ์ SW2 ให้ต่อเข้าที่ขั้วบวกของแบตเตอรี่ ทำให้ Q2 ได้รับไบอัสตรง ทำให้ Q2 ทำงาน ในขณะเดียวกัน Q1 ได้รับไบอัสกลับ ทำให้ Q1 ไม่ทำงาน ด้านของ Q3 และ Q4 สวิตซ์ SW1 สับไปที่ขั้วลบของแบตเตอรี่ ทำให้ Q3 ได้รับไบอัสตรง แต่ Q4 ได้รับไบอัสกลับ ทำให้กระแสไฟฟ้าไหลจากขั้วบวกของแบตเตอรี่ผ่าน Q3 ผ่านมอเตอร์ ผ่าน Q2 ครบวงจรที่ขั้วลบของแบตเตอรี่ ส่งผลให้มอเตอร์หมุนทวนเข็มนาฬิกา
เมื่อสับสวิตซ์ SW2 ไปที่ขั้วลบของแบตเตอรี่ และสับสวิตซ์ SW1 ไปที่ขั้วบวกของแบตเตอรี่ ทำให้ Q1 และ Q4 ได้รับไบอัสตรง และ Q2 และ Q3 ได้รับไบอัสกลับ ทำให้กระแสไฟฟ้าไหลจากขั้วบวกของแบตเตอรี่ผ่าน Q1 ผ่านมอเตอร์ ผ่าน Q4 ครบวงจรที่ขั้วลบของแบตเตอรี่ ส่งผลให้มอเตอร์หมุนตามเข็มนาฬิกา
เมื่อสับสวิตซ์ SW2 และ SW1 ไปที่ขั้วลบของแบตเตอรี่ ทำให้ Q1 และ Q3 ได้รับไบอัสตรง ส่วน Q2 และ Q4 ได้รับไบอัสกลับ ทำให้ Q1 และ Q3 นำกระแส แต่ไม่เกิดความต่างศักดิ์ขึ้นที่ขั้วทั้งสองของมอเตอร์ ทำให้ไม่มีกระแสไฟฟ้าไหลผ่านมอเตอร์ ส่งผลให้มอเตอร์ค่อย ๆ หมุนช้าลง จนหยุดหมุนในที่สุด
จากปัญหามอสเฟสเบอร์เก่า ๆ ต้องใช้แรงดันประมาณ 12V จ่ายเข้าขา G เพื่อให้มอสเฟสทำงาน แต่วงจรส่วนควบคุมด้วยไมโครคอนโทรลเลอร์จ่ายแรงดันออกมาเพียง 5V เท่านั้น หากนำขาของไมโครคอนโทรลเลอร์ไปต่อกับมอสเฟสโดยตรงจะทำให้มอสเฟสไม่ทำงาน จึงต้องมีวงจรช่วยขับมอสเฟสเพิ่มขึ้นมา เพื่อให้ใช้กับวงจรควบคุมด้วยไมโครคอนโทรลเลอร์ได้ วงจรขับมอเตอร์สองทางด้วยมอสเฟสใช้งานได้จริง
จากรูป สามารถนำ INPUT A และ INPUT B ไปต่อเข้ากับวงจรควบคุม หรือบอร์ดไมโครคอนโทรลเลอร์ (บอร์ด Arduino PIC STM8 STM32 ESP32 ESP8266) ได้เลย การเขียนโปรแกรมสั่งงานเพียงสั่งให้ A หรือ B เป็นลอจิก 0 หรือ 1
ไอซีคือเป็นอุปกรณ์สารกึ่งตัวนำที่ได้รับความนิยมนำมาใช้ควบคุมมอเตอร์มากที่สุด เนื่องจากมีขนาดเล็ก ไม่ต้องวุ่นวานเรื่องการออกแบบวงจร เพียงเลือกไอซีที่ตรงสเปคที่จะใช้งาน ก็ต่อสายจากวงจรควบคุมเข้ามาที่ไอซีแล้วสั่งให้มอเตอร์หมุนได้เลย
ปัจจุบันไอซีมีหลากหลายเบอร์ ขึ้นอยู่กับแรงดันและกระแสไฟฟ้าที่มอเตอร์ใช้ และจำนวนมอเตอร์ที่รองรับต่อไอซีหนึ่งตัว ไอซีขับมอเตอร์ส่วนใหญ่จะประกอบด้วยขา INPUT สำหรับป้อนสัญญาณเข้าไปขับมอเตอร์ 2 ขา และอาจจะมีขา EN หรือ PWM เพิ่มขึ้นมา เพื่อใช้ควบคุมความเร็วของมอเตอร์ การสั่งให้มอเตอร์หมุน หรือหยุดหมุน จำเป็นต้องอ่าน Datasheet ของไอซีขับมอเตอร์เบอร์นั้น ๆ เพิ่มเติม ทั้งนี้ไอซีที่นิยมใช้นำมาขับมอเตอร์ มีดังนี้
L293D เป็นไอซีตัวถัง DIP-16 รองรับการขับมอเตอร์ 2 ตัว ทนกระแสได้สูงสุด 600mA รองรับมอเตอร์ที่ใช้แรงดันไฟฟ้า 4.5V ถึง 36V ใช้แรงดันควบคุมได้ 4.5V ถึง 36V วงจรขับมอเตอร์ด้วยไอซี L293D
ไอซี L293D นิยมใช้งานกับมอเตอร์ขนาดเล็ก เช่น มอเตอร์ที่ใช้ในรถบังคับ เนื่องจากมีขนาดเล็ก ราคาถูก ไม่จำเป็นต้องมีอุปกรณ์ต่อร่วม ตัวอย่างการใช้ไอซี L293D ขับมอเตอร์ขนาดเล็ก ควบคุมด้วยบอร์ด Arduino Uno R3
การเขียนโปรแกรมควบคุมมอเตอร์ให้หมุนตามเข็มนาฬิกา หรือหมุนทวนเข็มนาฬิกา ทำได้โดยสั่งให้ D11 และ D10 มีลอจิกที่แตกต่างกัน เช่น การสั่ง D11 เป็นลอจิก 1 และสั่ง D10 เป็นลอจิก 0 หรือการสั่ง D11 เป็นลอจิก 0 และสั่ง D10 เป็นลอจิก 1 หากกำหนดให้ทั้ง D11 และ D10 เป็นลอจิก 0 ทั้งคู่ หรือเป็น 1 ทั้งคู่ จะทำให้มอเตอร์หยุดหมุน หากต้องการควบคุมความเร็วของมอเตอร์ด้วย ทำได้โดยป้อนสัญญาณ PWM เข้าไปแทน ตัวอย่างโปรแกรมควบคุมมอเตอร์ที่เขียนด้วยแพลตฟอร์ม Arduino
#define MOTOR1_A_PIN 11
#define MOTOR1_B_PIN 10
#define MOTOR2_A_PIN 9
#define MOTOR2_B_PIN 6
void setup() {
// ตั้งค่าให้ขาที่ต่อ L293D เป็นเอาต์พุต
pinMode(MOTOR1_A_PIN, OUTPUT);
pinMode(MOTOR1_B_PIN, OUTPUT);
pinMode(MOTOR2_A_PIN, OUTPUT);
pinMode(MOTOR2_B_PIN, OUTPUT);
}
void loop() {
// กำหนดให้มอเตอร์ 1 หมุนตามเข็มด้วยความเร็วเต็มที่
analogWrite(MOTOR1_A_PIN, 255);
analogWrite(MOTOR1_B_PIN, 0);
delay(2000);
// กำหนดให้มอเตอร์ 1 หมุนตามเข็มด้วยความเร็วครึ่งเดียว
analogWrite(MOTOR1_A_PIN, 127);
analogWrite(MOTOR1_B_PIN, 0);
delay(2000);
// กำหนดให้มอเตอร์ 1 หมุนทวนเข็มด้วยความเร็วเต็มที่
analogWrite(MOTOR1_A_PIN, 0);
analogWrite(MOTOR1_B_PIN, 255);
delay(2000);
// กำหนดให้มอเตอร์ 1 หมุนตามเข็มด้วยความเร็วครึ่งเดียว
analogWrite(MOTOR1_A_PIN, 0);
analogWrite(MOTOR1_B_PIN, 127);
delay(2000);
// กำหนดให้มอเตอร์ 1 หยุดหมุน
analogWrite(MOTOR1_A_PIN, 0);
analogWrite(MOTOR1_B_PIN, 0);
delay(2000);
// กำหนดให้มอเตอร์ 2 หมุนตามเข็มด้วยความเร็วเต็มที่
analogWrite(MOTOR2_A_PIN, 255);
analogWrite(MOTOR2_B_PIN, 0);
delay(2000);
// กำหนดให้มอเตอร์ 2 หมุนตามเข็มด้วยความเร็วครึ่งเดียว
analogWrite(MOTOR2_A_PIN, 127);
analogWrite(MOTOR2_B_PIN, 0);
delay(2000);
// กำหนดให้มอเตอร์ 2 หมุนทวนเข็มด้วยความเร็วเต็มที่
analogWrite(MOTOR2_A_PIN, 0);
analogWrite(MOTOR2_B_PIN, 255);
delay(2000);
// กำหนดให้มอเตอร์ 2 หมุนตามเข็มด้วยความเร็วครึ่งเดียว
analogWrite(MOTOR2_A_PIN, 0);
analogWrite(MOTOR2_B_PIN, 127);
delay(2000);
// กำหนดให้มอเตอร์ 2 หยุดหมุน
analogWrite(MOTOR2_A_PIN, 0);
analogWrite(MOTOR2_B_PIN, 0);
delay(2000);
}
L298N ใช้ขับมอเตอร์ได้ 2 ตัว ทนกระแสไฟฟ้าได้สูงสุด 4A รองรับแรงดันไฟฟ้าเลี้ยงมอเตอร์ 4.5V ถึง 46V ใช้แรงดันไฟฟ้าควบคุม 4.5V ถึง 7V การใช้งานนิยมใช้งานโมดูลสำเร็จรูป เพียงต่อสายมอเตอร์ ต่อไฟเลี้ยงมอเตอร์ ต่อสายควบคุมจากวงจรควบคุม (บอร์ดไมโครคอนโทรลเลอร์ Arduino PIC STM8 STM32 ESP8266 ESP32) ก็ใช้งานได้เลย วงจรต่อใช้งานโมดูล L298N กับบอร์ด Arduino
หลักการเขียนโปรแกรมควบคุมมอเตอร์เหมือนกับ L293D ทุกประการ รวมทั้งใช้โค้ดตัวอย่างเดียวกันเพื่อทดสอบได้เลย
นอกจาก L293D และ L298N แล้ว ยังมีไอซีเบอร์อื่น ๆ อีกที่ใช้ขับมอเตอร์ได้ แต่ได้รับความนิยมน้อยกว่า 2 เบอร์นี้ บอร์ดขับมอเตอร์ด้วยไอซีมักเลือกจากกระแสไฟฟ้าที่มอเตอร์ใช้เป็นหลัก โดยจะต้องเลือกบอร์ดขับมอเตอร์ที่ทนกระแสได้มากกว่าที่มอเตอร์ใช้ ส่วนการใช้งานจะเหมือนกับ L293D และ L298N คือมีช่องต่อมอเตอร์ 2 ขั้ว มีช่องป้อนสัญญาณเข้า 2 ช่อง การควบคุมทิศทางการหมุนทำได้โดยเลือกป้อนลอจิกที่แตกต่างกันเข้าช่องป้อนสัญญาณ และควบคุมความเร็วของมอเตอร์ด้วย PWM การป้อนแรงดันไฟฟ้าเข้าจะมี 2 ส่วน คือแรงดันไฟฟ้าจ่ายไฟเลี้ยงให้ไอซี (ซึ่งไฟเลี้ยงส่วนนี้มาจากส่วนควบคุม หรือบอร์ดไมโครคอนโทรลเลอร์ Arduino PIC STM8 STM32 ESP8266 ESP32) และส่วนจ่ายแรงดันไฟเลี้ยงให้มอเตอร์ การจ่ายแรงดันไฟเลี้ยงมอเตอร์ ควรจ่ายให้เท่ากับแรงดันที่มอเตอร์ต้องการใช้งาน
วงจรควบคุมโดยเฉพาะวงจรที่ใช้ไมโครคอนโทรลเลอร์ ค่อนข้างมีปัญหาได้ง่ายเมื่อเกิดสัญญาณรบกวนขึ้น แม้จะเพียงเล็กน้อยก็ตาม ปัญหาสัญญาณรบกวนจากมอเตอร์เกิดจากขณะที่วงจรขับมอเตอร์ไม่ปล่อยกระแสไฟฟ้าเข้ามอเตอร์ แต่มอเตอร์ยังหมุนต่อไปด้วยแรงเฉื่อย ทำให้มอเตอร์เปลี่ยนตัวเองเป็นไดนาโมแทน ปล่อยพลังงานไฟฟ้าออกมาแบบขั้วตรงข้าม แล้วสัญญาณที่ปล่อยออกมาไปรบกวนการทำงานของวงจรส่วนควบคุม
การแก้ไขทำได้โดยต่อตัวเก็บประจุค่าประมาณ 10nF ถึง 100nF คร่อมที่ขั้วทั้งสองของมอเตอร์ เมื่อมอเตอร์ปล่อยพลังงานไฟฟ้าออกมา ตัวเก็บประจุจะช่วยกักเก็บพลังงานไฟฟ้านั้นไว้แทน แล้วพลังงานไฟฟ้าส่วนเกินจะไม่ไหลไปรบกวนส่วนควบคุม
การแก้ไขอีกวิธีหนึ่ง คือการต่อไดโอดเพื่อให้กระแสไฟฟ้าที่ไหลกลับในขั้วตรงข้าม ไหลกลับเข้ามอเตอร์เองเพื่อไม่ให้มีกระแสไฟฟ้าไหลออกไปวงจรส่วนควบคุม การใช้ไดโอดจะขึ้นอยู่กับวงจรที่ใช้ กรณีขับมอเตอร์ทางเดียว ให้ต่อไดโอดคร่อมมอเตอร์โดยหันขา K เข้าขั้วบวกของแหล่งจ่ายไฟมอเตอร์ และหันขา A เข้าที่ขา C ของทรานซิสเตอร์ หรือมอสเฟส
ในวงจร H-Bridge การแก้ปัญหาด้วยไดโอด ต้องเพิ่มไดโอด 4 ตัว ต่อจากขั้วของมอเตอร์ไปยังขั้วบวกของแหล่งจ่ายไฟ และต่อจากขั้วลบของแหล่งจ่ายไฟไปยังขั้วของมอเตอร์
การควบคุมมอเตอร์มี 2 แบบ คือ
การควบคุมแค่หมุน กับไม่หมุน ใช้รีเลย์ควบคุมจะง่ายที่สุด
การควบคุมทิศทาง ใช้โมดูลขับมอเตอร์สำเร็จรูปจะง่ายที่สุด
การเลือกโมดูลขับมอเตอร์ หรือรีเลย์ ต้องดูกระแสที่มอเตอร์ใช้เป็นหลัก โดยจะต้องเลือกอุปกรณ์ขับที่ทนกระแสได้มากกว่าที่กระแสที่มอเตอร์ใช้