การควบคุมมอเตอร์ไฟตรง
มอเตอร์ไฟตรง
มอเตอร์เป็นอุปกรณ์ไฟฟ้าที่มีการใช้งานอย่างแพร่หลาย โดยทำหน้าที่เป็นส่วนประกอบหลักในการทำให้เกิดการเคลื่อนที่ของชิ้นส่วนต่าง
ๆ ดังนั้นการศึกษาโครงสร้าง การทำงานและการควบคุมมอเตอร์ จึงเป็นส่วนหนึ่งที่มีความสำคัญ
มอเตอร์จะทำหน้าที่แปลงพลังงานไฟฟ้าเป็นพลังงานกล โดยเราอาจแบ่งมอเตอร์ตามระบบไฟที่ใช้ได้
2 ประเภท คือ
1. มอเตอร์ไฟฟ้ากระแสตรง (DC Motor)
2. มอเตอร์ไฟฟ้ากระแสสลับ (AC Motor)
โดยมอเตอร์ทั้งสองประเภทจะมีส่วนประกอบที่แตกต่างกันออกไปบ้างแต่ส่วนประกอบหลักคือจะมีส่วนที่อยู่กับที่เราเรียกว่า
สเตเตอร์ (Stator)
และส่วนที่เคลื่อนที่ซึ่งเราเรียกว่า โรเตอร์ (Rotor) มอเตอร์ไฟฟ้ากระแสตรงมีด้วยกันหลายแบบ
สำหรับมอเตอร์ไฟฟ้ากระแสตรงอย่างง่ายคือมอเตอร์ที่ใช้แม่เหล็กถาวร
หลักการทำงาน
มอเตอร์จะอาศัยแรงดูดและแรงผลักที่เกิดจากสนามแม่เหล็กเมื่อมีกระแสไหลผ่านลวดตัวนำจะทำให้เกิดสนามแม่เหล็กรอบตัวนำนั้น
ถ้าเรานำตัวนำดังกล่าวไปวางไว้ในสนามแม่เหล็กจากแม่เหล็กถาวรก็จะเกิดการต้านและเสริมกับเส้นแรงแม่เหล็กจากแม่เหล็กถาวร
ทำให้เกิดแรงดูดและแรงผลักขึ้นที่ขดลวด รูปที่ 1(ก) แสดงลักษณะโครงสร้างของมอเตอร์ไฟตรงที่ใช้แม่เหล็กถาวรในส่วนของสเตเตอร์และมีการป้อนกระแสผ่านคอมมิวเตเตอร์ไปยังโรเตอร์
เพื่อให้แกนเหล็กที่โรเตอร์เป็นแม่เหล็กไฟฟ้า ดังแสดงในรูปที่ 1(ข) โดยกระแสไฟฟ้า I
จะทำให้เกิดแรง F ขึ้น
จากรูปที่ 1 จะเห็นได้ว่าเมื่อจ่ายกระแสผ่านขั้วต่อที่เรียกว่าแปรงถ่าน
(brushes)
ไปยังวงแหวนพิเศษที่เรียกว่า คอมมิวเตเตอร์ (commutator) ซึ่งต่อเข้ากับวงรอบตัวนำกระแสที่ไหลผ่านตัวนำจะทำให้เกิดเส้นแรงแม่เหล็กรอบตัวนำโดยด้านหนึ่งจะเกิดเป็นแรงผลักขึ้น
ทำให้วงรอบตัวนำมีการหมุน โดยแรงที่เกิดจะแปรตาม กระแสที่ไหลผ่าน I
ความยาวของตัวนำ lและความเข้มของสนามแม่เหล็กถาวร
B
รูปที่
1
(ก) โครงสร้างและ (ข) การทำงานของมอเตอร์ไฟตรง
รูปที่ 2
แสดงภาพถ่ายลักษณะภายในของมอเตอร์ไฟตรงขนาดเล็กทั่วไป โดยรูปที่ 2(ก) แสดงส่วนของสเตเตอร์ซึ่งประกอบด้วยแม่เหล็กถาวรและส่วนของแปรงถ่านซึ่งเป็นส่วนที่อยู่นิ่งของขั้วที่ส่งกระแสไฟฟ้าเข้าไปยังขดลวดอาร์เมเจอร์
และ รูปที่ 2(ข) แสดงส่วนของโรเตอร์ โดยมอเตอร์ไฟตรงที่ใช้แม่เหล็กถาวรในทางปฏิบัติจะมีการเพิ่มความยาวของลวดตัวนำซึ่งเป็นส่วนของขดลวดบนโรเตอร์โดยการพันขดลวดรอบแกนโลหะ
ซึ่งเรามักเรียกขดลวดนี้ว่า ขดลวดอาร์เมเจอร์ (armature) เพื่อเป็นการเพิ่มแรงบิดให้กับมอเตอร์
คอมมิวเตเตอร์เป็นส่วนที่หมุนของขั้วที่รับกระแสไฟฟ้าเข้าไปยังขดลวดอาร์เมเจอร์ที่อยู่บนโรเตอร์ ดังแสดงในรูปที่ 2(ข)
รูปที่
2
ภาพถ่ายภายในมอเตอร์ไฟตรง (ก) โครงสร้างและ (ข) การทำงานของมอเตอร์ไฟตรง
วิธีการควบคุมมอเตอร์ทั่วไป
อาจแบ่งตามชนิดของปริมาณที่ต้องการควบคุม คือ
1.
การควบคุมทิศทางการหมุนของมอเตอร์ (direction control)
2.
การควบคุมความเร็วของมอเตอร์ (speed control)
3.
การควบคุมแรงบิดของมอเตอร์ (torque control)
สำหรับการใช้งานเบื้องต้นที่จะกล่าวถึงในเอกสารนี้
จะแนะนำเพียงการควบคุม
ทิศทางการหมุนและการควบคุมความเร็วของมอเตอร์ในลักษณะอย่างง่ายเท่านั้น
ในการใช้งานมอเตอร์ขั้นสูง จะต้องมีการใช้ระบบควบคุมและมีการป้อนกลับร่วมด้วย ซึ่งศาสตร์ด้านการควบคุมมอเตอร์เป็นสิ่งที่ศึกษากันในสาขาวิศวกรรมไฟฟ้าและวิศวกรรมเครื่องกล
ชุดเฟืองขับมอเตอร์
การขับเคลื่อนให้ระบบทางกลเคลื่อนไหวได้นั้นมักมีต้นกำลังทางกลจากมอเตอร์
แต่โดยลำพังมอเตอร์เพียงอย่างเดียวอาจไม่สามารถทำงานระบบทำงานได้อย่างเหมาะสม
เนื่องจากความเร็วในการหมุนของมอเตอร์ทั่วไปมีค่าค่อนข้างสูง เราจึงจำเป็นต้องมีการปรับความเร็วรอบด้วยชุดเฟืองขับ
(gearbox)
อัตราทดเฟือง คือสัดส่วนของจำนวนฟันเฟือง
2 ตัว โดยเราจะเรียกเฟืองตัวแรกของระบบว่าเฟืองส่ง เฟืองที่ต่อเพิ่มเข้ามาและนำส่งแรงบิดต่อไปเรียกว่าเฟืองรับ
ถ้าเฟืองรับมีขนาดใหญ่กว่าเฟืองส่งจะทำให้แรงบิดเพิ่มขึ้นและความเร็วลดลง
จากรูปตัวอย่างในรูปที่ 3 จะได้ว่า ถ้าเฟืองส่งหมุนไป 4 รอบ ฟันเฟืองจะทำให้เฟืองรับหมุนเพียงรอบเดียวเท่านั้น
จากลักษณะนี้บอกได้ว่าเฟืองเกียร์มีอัตราทด 4:1 ซึ่งมาจากการนำค่าจำนวนฟันเฟืองของเฟืองรับตั้งแล้วหารด้วยค่าจำนวนฟันเฟืองของเฟืองส่ง
รูปที่
3
ตัวอย่างการทดรอบด้วยเฟือง โดยมีอัตราทด 4:1
ในกรณีที่ต้องการให้อัตราทดเฟืองมีค่าสูงมาก ๆ เช่น 80:1
หากเป็นระบบเฟืองเพียง 1 ชั้น ถ้าเฟืองส่งมีขนาด 8
ฟันจะต้องสร้างเฟืองรับมีขนาดถึง 640 ฟัน ซึ่งในทางปฏิบัติเราไม่สามารถทำเช่นนั้นได้
เพราะต้องใช้เฟืองที่มีขนาดใหญ่ เราจึงต้องมีการสร้างระบบทดเฟืองเป็นชั้น ๆ
ต่อกันไปจนได้อัตราทดที่ต้องการ การคำนวณหาอัตราทดทำได้ดังแสดงในตัวอย่างในรูปที่ 4
รูปที่
4
ตัวอย่างการทดเฟืองหลายชั้น
รูปที่ 5 แสดงภาพภายในกล่องเฟืองขับที่มักจะติดตั้งอยู่กับมอเตอร์ไฟตรงขนาดเล็ก
โดยกล่องเฟืองขับนี้มีอัตราทดเฟืองรวมมีค่าเท่ากับ 48 (จากระบบเฟืองที่ซ้อนกันอยู่ภายใน)
รูปที่
5
ภาพส่วนประกอบภายในชุดเฟืองขับ
การควบคุมมอเตอร์ไฟตรง
การควบคุมทิศทางการหมุน
การควบคุมทิศทางการหมุนของมอเตอร์ไฟตรง ทำได้โดยการควบคุมทิศการไหลของกระแสไฟตรงที่ผ่านมอเตอร์
นั่นคือ มอเตอร์จะหมุนกับทิศทางหากมีการกลับทิศทางการฉีดกระแส
โดยรูปแบบการต่อสวิตช์สำหรับควบคุมการหมุนของมอเตอร์นี้ แสดงดังรูปที่ 6(ก)
และมีชื่อเรียกว่าวงจรเฮดบริดจ์ (H-bridge circuit) เนื่องจากวงจรมีลักษณะเป็นรูปตัว H โดยในการเปลี่ยนทิศทางการหมุนของมอเตอร์
(รูปที่ 6(ข) และ 6(ค)) สวิตช์ทั้งสี่ตัวจะต้องถูกสลับพร้อม ๆ กัน
เพื่อมิให้มอเตอร์หยุดหมุนและไม่ให้เกิดการลัดวงจร ในทางปฏิบัติเรามักจะใช้ไอซีสำเร็จรูปในการควบคุมการหมุนของมอเตอร์เพื่อหลีกเลี่ยงปัญหาการลัดวงจร
รูปที่
6
ภาพลักษณะวงจรเฮดบริดจ์ขณะ (ก) มอเตอร์ไม่หมุน (ข) มอเตอร์หมุนตามเข็มนาฬิกา (clockwise, CW) และ (ค) มอเตอร์หมุนทวนเข็มนาฬิกา (counter clockwise, CCW)
การควบคุมความเร็วมอเตอร์
ในการควบคุมความเร็วของมอเตอร์ไฟตรงสามารถทำได้การใช้สัญญาณ
PWM
(Pulse Width Modulation, การมอดูเลตความกว้างพัลส์) โดยกำหนดความกว้างของสัญญาณจะทำให้มอเตอร์ซึ่งเป็นอุปกรณ์ทางกลที่มีการตอบสนองช้าเมื่อเทียบกับสัญญาณไฟฟ้า
รู้สึก ถึงค่าเฉลี่ยของสัญญาณ
และทำให้ความเร็วในการหมุนของมอเตอร์ซึ่งแปรผันโดยตรงกับระดับแรงดันมีค่าเปลี่ยนแปลงไป
รูปที่ 7 แสดงตัวอย่างสัญญาณ PWM และค่าเฉลี่ย
ซึ่งมีค่าเท่ากับผลคูณของค่าแรงดันและค่ารอบการทำงาน (duty cycle) ของสัญญาณ
รูปที่
7
ลักษณะสัญญาณ PWM ที่รอบการทำงานต่าง ๆ เส้นประแสดงระดับค่าเฉลี่ยของสัญญาณนี้
ในการเขียนโปรแกรมด้วย Arduino IDE คำสั่ง
analogWrite() เป็นคำสั่งที่ใช้ในการสร้างสัญญาณ
PWM จากบอร์ดไมโครคอนโทรลเลอร์ โดยคำสั่งนี้มีรูปแบบคือ
analogWrite(pin, value)
โดยค่า
pin
คือชื่อขาดิจิทัล (D0-D8) ที่ต้องการส่งสัญญาณ
PWM ออกไป และ ค่า value นี้
จะเป็นค่าเลขฐานสิบ ระหว่าง 0 ถึง 1023 (= 210-1)
ซึ่งค่าสูงสุด 1023 นี้จะเฉพาะเจาะจงกับบอร์ด NodeMCU เนื่องจาก
ESP8266 เป็นชิปประมวลผลแบบ 10 บิต โดยในโค้ดต่าง ๆ
ในไลบรารีของบอร์ดนี้ จะกำหนดให้ค่า 1023 คือตัวแปรชื่อ PWMRANGE และค่ารอบการทำงานของสัญญาณที่ส่งออกมาจะขึ้นกับค่า value นี้ โดยสัญญาณจะมีค่าคาบคงที่เท่ากับ 1 มิลลิวินาที (ความถี่ 1 kHz) สำหรับชิป ESP8266 นี้
บอร์ดขับมอเตอร์
ในการขับมอเตอร์ด้วยคำสั่งจากไมโครคอนโทรลเลอร์นั้นเรามักจะต้องใช้บอร์ดขับมอเตอร์แยกจากบอร์ดไมโครคอนโทรลเลอร์
และใช้ไฟเลี้ยงมอเตอร์แยกจากไฟเลี้ยงบอร์ดไมโครคอนโทรลเลอร์ เนื่องจากไมโครคอนโทรลเลอร์ทั่วไป
ไม่ได้ออกแบบมาให้สามารถจ่ายกระแสสูง ๆ สำหรับการทำงานของมอเตอร์ โดยในที่นี้เราจะกล่าวถึงบอร์ดขับมอเตอร์ที่ใช้ไอซีเบอร์
L298N (จ่ายกระแสได้สูงสุด 2 A/มอเตอร์)
ซึ่งบอร์ดนี้สามารถขับมอเตอร์ได้ 2 ตัวพร้อมกันและมีลักษณะดังรูปที่ 8
รูปที่
8
บอร์ดขับมอเตอร์
L298N
ในการควบคุมการหมุนและความเร็วของมอเตอร์นั้น
ทำโดยการป้อนสัญญาณควบคุมจาก บอร์ดไมโครคอนโทรลเลอร์ไปยังบอร์ดขับมอเตอร์ โดยมีลักษณะของสัญญาณควบคุมดังแสดงในตารางที่
1 โดยหากเราจะควบคุมทิศทางการหมุนของมอเตอร์ A ก็ทำได้ผ่านสัญญาณที่ขา IN1
และ IN2 และการควบคุมความเร็วของมอเตอร์ด้วยสัญญาณ
PWM ที่ป้อนให้กับขา ENA ซึ่งหากไม่ต้องการควบคุมความเร็ว
ก็ทำได้โดยการใช้จัมเปอร์บนบอร์ดแทนการป้อนสัญญาณ และสำหรับมอเตอร์ B เราก็สามารถทำได้ในทำนองเดียวกัน
ตารางที่
1
ตารางแสดงวิธีการส่งสัญญาณควบคุมทิศทางและความเร็วมอเตอร์ A และ B
|
ทิศการหมุน |
IN1 |
IN2 |
IN3 |
IN4 |
ควบคุมความเร็วด้วยสัญญาณ PWM |
|
ENA |
ENB |
||||||
มอเตอร์ A |
ตามเข็ม |
HIGH |
LOW |
- |
- |
HIGH |
- |
ทวนเข็ม |
LOW |
HIGH |
- |
- |
HIGH |
- |
|
ไม่หมุน |
LOW |
LOW |
- |
- |
HIGH |
- |
|
ไม่หมุน |
HIGH |
HIGH |
- |
- |
HIGH |
- |
|
มอเตอร์ B |
ตามเข็ม |
- |
- |
HIGH |
LOW |
- |
HIGH |
ทวนเข็ม |
- |
- |
LOW |
HIGH |
- |
HIGH |
|
ไม่หมุน |
- |
- |
LOW |
LOW |
- |
HIGH |
|
ไม่หมุน |
- |
- |
HIGH |
HIGH |
- |
HIGH |
การทดลองควบคุมมอเตอร์ไฟตรง
วัตถุประสงค์
1.
สามารถต่อบอร์ด Node
MCU v.3 กับบอร์ดขับมอเตอร์และมอเตอร์ได้
2.
สามารถเขียนโปรแกรมให้
NodeMCU
ควบคุมทิศทางการหมุนของมอเตอร์ไฟตรงได้
3.
สามารถเขียนโปรแกรมให้
NodeMCU
ควบคุมความเร็วในการหมุนของมอเตอร์ไฟตรงได้
อุปกรณ์ที่ใช้ในการทดลอง
1. เครี่องคอมพิวเตอร์ที่มีระบบปฏิบัติการ
Windows
(ตั้งแต่ Windows 7 ขึ้นไป)
พร้อมติดตั้งโปรแกรม Arduino IDE 1.8.8 IoT 1
เครื่อง
2. NodeMCU v.3 1
บอร์ด
3. NodeMCU Base
Ver 1.0 1
บอร์ด
4. บอร์ดขับมอเตอร์ที่ใช้ไอซีเบอร์
L298N 1 บอร์ด
5. มอเตอร์ไฟตรง 1
ตัว
6. อะแด็ปเตอร์ 9 V 1
ตัว
7. สาย USB 1
เส้น
8. สายต่อวงจร (สายจัมพ์
เมีย-เมีย) 3
เส้น
9. สายต่อวงจร (สายจัมพ์
ผู้-ผู้) 2
เส้น
10. สายต่อวงจร (สายจัมพ์ ผู้-เมีย) 2
เส้น
วิธีการทดลอง
ตอนที่
1 การควบคุมทิศทางการหมุนของมอเตอร์
1.
ต่อวงจรดังรูปที่ 9
2.
เขียนโปรแกรมดังที่แสดงในโค้ดหน้าถัดไป จากนั้นจึงอัปโหลดลง NodeMCU v.3 แล้วสังเกตทิศทางการหมุนของมอเตอร์ โดยหากมอเตอร์ไม่หมุนอย่างต่อเนื่อง
เนื่องจากไฟเลี้ยงจาก USB ไม่เพียงพอ ก็ขอให้ใช้อะแด็ปเตอร์ร่วมในการจ่ายไฟไปยังบอร์ดขับมอเตอร์
รูปที่
9 การเชื่อมต่อ
NodeMCU
v.3 กับบอร์ดขับมอเตอร์และมอเตอร์ไฟตรง
โดยในกรอบสี่เหลี่ยมสีเขียวคือการต่อสายในกรณีที่ไฟเลี้ยงจากพอร์ต USB นั้นไม่เพียงพอ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Control DC Motor via L298N by
NodeMCU ESP8266 int IN1 = D1; int IN2 = D2; void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); } void loop()
{ digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); } |
3.
แก้ไขโปรแกรมบรรทัดที่ 12
และ 13 โดยสั่งให้ขา IN1 เป็นลอจิก LOW และ IN2 เป็นลอจิก
HIGH จากนั้นจึงอัปโหลดโปรแกรมใหม่ แล้วสังเกตการหมุนของมอเตอร์
12 13 |
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); |
ตอนที่
2 การควบคุมความเร็วมอเตอร์
1.
ต่อวงจรดังรูปที่ 10
โดยเอาจัมเปอร์ที่ขา ENA ออกก่อน
2.
เขียนโปรแกรมดังที่แสดงในโค้ดหน้าถัดไป จากนั้นจึงอัปโหลดลง NodeMCU v.3 แล้วสังเกตความเร็วในการหมุนของมอเตอร์
จากการทดลองในข้อ 2 นี้ จะสังเกตได้ว่า
มอเตอร์จะส่งเสียงแหลมออกมาในขณะที่ยังไม่หมุน
เนื่องจากแรงดันและกระแสที่จ่ายให้กับมอเตอร์ยังไม่เพียงพอที่จะเอาชนะแรงเสียดทานสถิตย์ในโครงสร้างทางกล
และเมื่อมอเตอร์เริ่มหมุนแล้ว ก็จะหมุนเร็วขึ้นเรื่อย ๆ
แล้วหยุดและเริ่มจึงหมุนใหม่ ตามวงรอบการทำงานในฟังก์ชัน loop()
รูปที่
10
การเชื่อมต่อ NodeMCU
v.3 กับบอร์ดขับมอเตอร์
และมอเตอร์ไฟตรงเพื่อควบคุมความเร็ว
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Control DC Motor via L298N by
NodeMCU ESP8266 int IN1 = D1; int IN2 = D2; int ENA = D3; void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); } void loop() { for (int speed=0;
speed<1024; speed++) { digitalWrite(IN1,
HIGH); digitalWrite(IN2,
LOW); analogWrite(ENA,speed); delay(10); } } |
แบบฝึกหัดท้ายการทดลอง
จงเขียนโค้ดที่ควบคุมให้มอเตอร์ค่อย ๆ
เริ่มหมุนตามเข็มนาฬิกา จากหยุดนิ่งไปเร็วที่สุด แล้วค่อย ๆ หยุดลง
(จากเร็วที่สุดไปหยุดนิ่ง) แล้วจึงหมุนทวนเข็มนาฬิกาจากหยุดนิ่งไปเร็วที่สุด
แล้วค่อย ๆ หยุดลง (จากเร็วที่สุดไปหยุดนิ่ง) โดยมีลักษณะการเปลี่ยนแปลงของค่าความเร็วแบบเชิงเส้นดังแสดงในรูปที่
11
รูปที่
11
ลักษณะการเปลี่ยนแปลงของค่าความเร็วมอเตอร์ที่กำหนดในแบบฝึกหัด