- โหมดการทำงานใน Stepper Motor
- การสร้าง MATLAB Graphical User Interface สำหรับควบคุม Stepper Motor
- MATLAB Code สำหรับควบคุม Stepper Motor ด้วย Arduino
- วัสดุที่จำเป็น
- แผนภูมิวงจรรวม
- การควบคุม Stepper Motor ด้วย MATLAB
สเต็ปเปอร์มอเตอร์เป็นมอเตอร์กระแสตรงไร้แปรงถ่านที่หมุนตามขั้นตอนที่ไม่ต่อเนื่องและเป็นตัวเลือกที่ดีที่สุดสำหรับแอพพลิเคชั่นควบคุมการเคลื่อนไหวที่มีความแม่นยำจำนวนมาก นอกจากนี้สเต็ปเปอร์มอเตอร์ยังเหมาะสำหรับการกำหนดตำแหน่งการควบคุมความเร็วและการใช้งานที่ต้องการแรงบิดสูงที่ความเร็วต่ำ
ในบทเรียนก่อนหน้านี้ของ MATLAB เราได้อธิบายวิธีใช้ MATLAB เพื่อควบคุมมอเตอร์กระแสตรงเซอร์โวมอเตอร์และเครื่องใช้ภายในบ้าน วันนี้เราจะได้เรียนรู้วิธีการควบคุมมอเตอร์โดยใช้ MATALB และ Arduino หากคุณยังใหม่กับ MATLAB ขอแนะนำให้เริ่มต้นด้วยโปรแกรมไฟ LED กะพริบง่ายๆด้วย MATLAB
โหมดการทำงานใน Stepper Motor
ก่อนที่คุณจะเริ่มเขียนโค้ดสำหรับสเต็ปเปอร์มอเตอร์คุณควรเข้าใจแนวคิดการทำงานหรือการหมุนของสเต็ปเปอร์มอเตอร์ เนื่องจากสเตเตอร์ของโหมดสเต็ปเปอร์ถูกสร้างขึ้นจากขดลวดที่แตกต่างกันขดลวดแต่ละคู่จึงสามารถตื่นเต้นได้หลายวิธีทำให้โหมดต่างๆสามารถขับเคลื่อนได้ในหลายโหมด ต่อไปนี้เป็นการจำแนกประเภทกว้าง ๆ
โหมดเต็มขั้นตอน
ในโหมดกระตุ้นแบบเต็มขั้นตอนเราสามารถหมุนได้ 360 °โดยมีจำนวนรอบขั้นต่ำ (ขั้นตอน) แต่สิ่งนี้นำไปสู่ความเฉื่อยน้อยลงและการหมุนก็จะไม่ราบรื่น มีอีกสองจำแนกประเภทในแบบเต็มขั้นตอนที่มีการกระตุ้นพวกเขาเป็น หนึ่งในเฟสก้าวคลื่นและสองโหมดขั้นตอนบน
1. One phase-on Stepping หรือ Wave Stepping: ในโหมดนี้จะมีการเปิดเครื่องเทอร์มินัลเดียว (เฟส) ของมอเตอร์ในเวลาใดก็ได้ ซึ่งมีจำนวนขั้นตอนน้อยกว่าและด้วยเหตุนี้จึงสามารถหมุนได้ 360 °เต็มรูปแบบ เนื่องจากจำนวนขั้นตอนน้อยกว่ากระแสที่ใช้โดยวิธีนี้จึงต่ำมากเช่นกัน ตารางต่อไปนี้แสดงลำดับการหมุนของคลื่นสำหรับสเต็ปเปอร์มอเตอร์ 4 เฟส
ขั้นตอน | เฟส 1 (สีน้ำเงิน) | เฟส 2 (สีชมพู) | ระยะที่ 3 (สีเหลือง) | ระยะที่ 4 (สีส้ม) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2 เฟส - ออนสเต็ป: ตามที่ระบุชื่อในวิธีนี้สองเฟสจะเป็นหนึ่ง มีจำนวนก้าวเท่ากันกับ Wave Stepping แต่เนื่องจากขดลวดสองตัวได้รับพลังงานพร้อมกันจึงสามารถให้แรงบิดและความเร็วได้ดีกว่าเมื่อเทียบกับวิธีก่อนหน้านี้ แม้ว่าข้อเสียด้านหนึ่งคือวิธีนี้ยังใช้พลังงานมากกว่า
ขั้นตอน |
เฟส 1 (สีน้ำเงิน) |
เฟส 2 (สีชมพู) |
ระยะที่ 3 (สีเหลือง) |
ระยะที่ 4 (สีส้ม) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
โหมดครึ่งขั้นตอน
โหมด Half Step เป็นการรวมกันของโหมดเฟสเดียวและสองเฟสบน การผสมผสานนี้จะช่วยให้เราสามารถเอาชนะข้อเสียดังกล่าวข้างต้นของทั้งสองโหมดได้
อย่างที่คุณอาจเดาได้เนื่องจากเรากำลังรวมทั้งสองวิธีเข้าด้วยกันเราจะต้องดำเนินการ 8 ขั้นตอน ในวิธีนี้เพื่อให้ได้การหมุนเวียนที่สมบูรณ์ ลำดับการสลับสำหรับสเต็ปเปอร์มอเตอร์ 4 เฟสที่แสดงด้านล่าง
ขั้นตอน |
เฟส 1 (สีน้ำเงิน) |
เฟส 2 (สีชมพู) |
ระยะที่ 3 (สีเหลือง) |
ระยะที่ 4 (สีส้ม) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
ดังนั้นจึงเป็นทางเลือกของคุณในการตั้งโปรแกรมสเต็ปมอเตอร์ของคุณในโหมดใดก็ได้ แต่ฉันชอบโหมดสองเฟสบนสเต็ปปิ้งเต็มขั้น เนื่องจากวิธีนี้ให้ความเร็วที่เร็วกว่าวิธีหนึ่งเฟสและเมื่อเปรียบเทียบกับโหมดครึ่งหนึ่งส่วนการเข้ารหัสจะน้อยกว่าเนื่องจากจำนวนขั้นตอนน้อยกว่าในวิธีสองเฟส
เรียนรู้เพิ่มเติมเกี่ยวกับสเต็ปเปอร์มอเตอร์และโหมดต่างๆได้ที่นี่
การสร้าง MATLAB Graphical User Interface สำหรับควบคุม Stepper Motor
จากนั้นเราต้องสร้าง GUI (Graphical User Interface) เพื่อควบคุม Stepper motor ในการเปิดใช้งาน GUI ให้พิมพ์คำสั่งด้านล่างใน หน้าต่างคำสั่ง
คู่มือ
หน้าต่างป๊อปอัปจะเปิดขึ้นจากนั้นเลือก GUI เปล่า ใหม่ดังที่แสดงในภาพด้านล่าง
ตอนนี้เลือกปุ่มสลับสองปุ่มสำหรับหมุนมอเตอร์สเต็ปเปอร์ตามเข็มนาฬิกาและทวนเข็มนาฬิกาดังที่แสดงด้านล่าง
หากต้องการปรับขนาดหรือเปลี่ยนรูปร่างของปุ่มเพียงคลิกที่ปุ่มแล้วคุณจะสามารถลากมุมของปุ่มได้ การดับเบิลคลิกที่ปุ่มสลับคุณสามารถเปลี่ยนสีสตริงและแท็กของปุ่มนั้น ๆ ได้ เราได้ปรับแต่งปุ่มสองปุ่มตามที่แสดงในภาพด้านล่าง
คุณสามารถปรับแต่งปุ่มตามที่คุณเลือก ตอนนี้เมื่อคุณบันทึกรหัสจะถูกสร้างขึ้นใน หน้าต่างแก้ไข ของ MATLAB ในการเขียนโค้ด Arduino ของคุณสำหรับการทำงานใด ๆ ที่เกี่ยวข้องกับโปรเจ็กต์ของคุณคุณจะต้องแก้ไขโค้ดที่สร้างขึ้นนี้เสมอ ด้านล่างเราได้แก้ไขโค้ด MATLAB คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับหน้าต่างคำสั่งหน้าต่างตัวแก้ไขและอื่น ๆ ในการเริ่มต้นใช้งานบทช่วยสอน MATLAB
MATLAB Code สำหรับควบคุม Stepper Motor ด้วย Arduino
กรอกรหัส MATLABสำหรับการควบคุมมอเตอร์ Stepper ให้ในตอนท้ายของโครงการนี้ นอกจากนี้เรายังรวมไฟล์ GUI (.fig) และไฟล์โค้ด (.m) ไว้ที่นี่เพื่อดาวน์โหลด (คลิกขวาที่ลิงค์จากนั้นเลือก 'บันทึกลิงค์เป็น… ')) ซึ่งคุณสามารถปรับแต่งปุ่มได้ตามความต้องการของคุณ. ด้านล่างนี้คือการปรับแต่งบางอย่างที่เราทำสำหรับการหมุน Stepper Motor ตามเข็มนาฬิกาและทวนเข็มนาฬิกาโดยใช้ปุ่มสลับสองปุ่ม
คัดลอกและวางโค้ดด้านล่างในบรรทัดที่ 74 เพื่อให้แน่ใจว่า Arduino กำลังพูดคุยกับ MATLAB ทุกครั้งที่คุณเรียกใช้ m-file
ลบทั้งหมด; ทั่วโลกก; a = arduino ();
เมื่อคุณเลื่อนลงคุณจะเห็นว่ามีสองฟังก์ชันที่สร้างขึ้นสำหรับทั้งสองปุ่มใน GUI ตอนนี้เขียนโค้ดในฟังก์ชั่นทั้งสองตามงานที่คุณต้องการดำเนินการเมื่อคลิก
ในฟังก์ชันของปุ่ม ตามเข็มนาฬิกา ให้คัดลอกและวางรหัสด้านล่างก่อนสิ้นสุดฟังก์ชันเพื่อหมุนมอเตอร์ในทิศทางตามเข็มนาฬิกา สำหรับการหมุนมอเตอร์สเต็ปเปอร์อย่างต่อเนื่องในทิศทางตามเข็มนาฬิกาเรากำลังใช้ ในขณะที่วน ซ้ำเพื่อทำซ้ำขั้นตอนโหมดเต็มสเต็ปสองเฟสสำหรับทิศทางตามเข็มนาฬิกา
ในขณะที่รับ (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); หยุดชั่วคราว (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); หยุดชั่วคราว (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); หยุดชั่วคราว (0.0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); หยุดชั่วคราว (0.0002); จบ
ขณะนี้อยู่ในฟังก์ชันของปุ่ม ทวนเข็มนาฬิกา ให้วางรหัสด้านล่างที่ฟังก์ชันเพื่อหมุนมอเตอร์ในทิศทางทวนเข็มนาฬิกา สำหรับการหมุนสเต็ปเปอร์มอเตอร์อย่างต่อเนื่องในทิศทางทวนเข็มนาฬิกาเรากำลังใช้ ในขณะที่วน ซ้ำเพื่อทำซ้ำสองขั้นตอนโหมดเต็มสเต็ปบนเฟสสำหรับทิศทางทวนเข็มนาฬิกา
ในขณะที่รับ (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); หยุดชั่วคราว (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); หยุดชั่วคราว (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); หยุดชั่วคราว (0.0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); หยุดชั่วคราว (0.0002); จบ
วัสดุที่จำเป็น
- MATLAB ติดตั้งแล็ปท็อป (ค่ากำหนด: R2016a ขึ้นไป)
- Arduino UNO
- สเต็ปเปอร์มอเตอร์ (28BYJ-48, 5VDC)
- ULN2003 - ไดรเวอร์มอเตอร์ Stepper
แผนภูมิวงจรรวม
การควบคุม Stepper Motor ด้วย MATLAB
หลังจากตั้งค่าฮาร์ดแวร์ตามแผนภาพวงจรแล้วเพียงคลิกที่ปุ่มเรียกใช้เพื่อเรียกใช้โค้ดที่แก้ไขในไฟล์. m
MATLAB อาจใช้เวลาไม่กี่วินาทีในการตอบสนองอย่าคลิกที่ปุ่ม GUI ใด ๆ จนกว่า MATLAB จะแสดงข้อความไม่ว่างที่ด้านล่างของมุมซ้ายดังที่แสดงด้านล่าง
เมื่อทุกอย่างพร้อมคลิกที่ปุ่มตามเข็มนาฬิกาหรือทวนเข็มนาฬิกาเพื่อหมุนมอเตอร์ ในขณะที่เรากำลังใช้ปุ่มสลับสเต็ปเปอร์มอเตอร์จะเคลื่อนที่ไปตามทิศทางตามเข็มนาฬิกาอย่างต่อเนื่องจนกว่าเราจะกดปุ่มอีกครั้ง ในทำนองเดียวกันโดยการกดปุ่มสลับทวนเข็มนาฬิกามอเตอร์จะเริ่มหมุนในทิศทางทวนเข็มนาฬิกาจนกว่าเราจะกดปุ่มอีกครั้ง