Arduino Control 4 Phase Wire Stepper Motor 28BYJ-48

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



สำหรับรูปที่ 1 และรูปที่ 2 แสดงลักษณะและขนาดของตัวสเต็ปปิ้งมอเตอร์ที่ใช้ในการทดลองโครงงาน ซึ่งเป็นมอเตอร์ขนาดเล็กและใช้แรงดันไฟเลี้ยงที่ 5V โดยลักษณะการต่อวงจรร่วมกับบอร์ด Arduino UNO และตัวต้านทานปรับค่าสำหรับทดลองมอเตอร์ดังในรูปที่ 3
/* Arduino Control 4 Phase Swire Stepper Motor 28BYJ-48 Code Program by : http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5- Wire_%26_ULN2003_Driver_Board_for_Arduino MCU : Arduino UNO AdjSpeed POT : ADC CH0 +Vcc : 5V */ int Pin0 = 11; // to IN4 int Pin1 = 10; // to IN3 int Pin2 = 9; // to IN2 int Pin3 = 8; // to IN1 int _step = 0; int adjspeed = 0; boolean dir = true; // gre void setup() { pinMode(Pin0, OUTPUT); pinMode(Pin1, OUTPUT); pinMode(Pin2, OUTPUT); pinMode(Pin3, OUTPUT); } void loop() { switch(_step){ case 0: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH); break; case 1: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, HIGH); break; case 2: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 3: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 4: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; case 5: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; case 6: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; case 7: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH); break; default: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; } if(dir){ _step++; }else{ _step--; } if(_step>7){ _step=0; } if(_step<0){ _step=7; } adjspeed = analogRead(A0); // ADC pin A0 adjspeed = (adjspeed/10); if (adjspeed<1) {adjspeed = 1;} delay(adjspeed); }
ในส่วนโปรแกรมการทดลองมอเตอร์ข้างบน โดยส่วนใหญ่จะคงไว้ตามโปรแกรมเดิมที่อ้างอิงมา แต่จะมาเพิ่มเติมในส่วนของคำสั่ง adjspeed = analogRead(A0); และคำสั่งข้างเพิ่มเติม ทั้งนี้เพื่อให้เราสามารถปรับความเร็วการหมุนของตัวมอเตอร์ได้เพิ่มขึ้น ซึ่งเราสามารถปรับเปลี่ยนค่าตัวแปรในคำสั่ง delay(adjspeed); เพื่อใช้ในระบบควบคุมได้ภายหลัง

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

รูปที่ 5 เป็นการทดลองวัดสัญญาณที่เกิดขึ้นบนบอร์ดขับมอเตอร์ โดยในการทดลองจะใช้ไฟเลี้ยงให้กับตัวบอร์ดที่ 5V ทั้งนี้จะสัเกตเห็นว่าสัญญาณที่เกิดขึ้นจะมีการเลี่อนเฟสเล็กน้อย ซึ่งเป็นรูปแบบของการขับสเต็ปปิ้งมอเตอร์แบบนี้

สำหรับการทดลองควบคุมการหมุนสเต็ปปิ้งมอเตอร์โดยใช้บอร์ด Arduino UNO นั้น จะมีเนื้อหาให้เราค้นคว้าในอินเตอร์เน็ตมากมายครับ แต่ทั้งนี้แอดมินเองยังไม่เคยทดลองใช้มอเตอร์รุ่นนี้ (28BYJ-48) จึงซื้อมาทดลองเพิ่มเติมเพื่อสังเกตการทำงานและคิดว่าจะนำมาทดลองและแชร์การทดลองให้กับผู้อ่านที่สนใจการควบคุมมอเตอร์แบบนนี้กัน ซึ่งการควบคุมที่นำเสนอนี้จะเป็นรูปแบบหนึ่งของการขับตัวมอเตอร์เท่านั้น ส่วนหนึ่งหวังให้เนื้อหาเป็นข้อมูลเบื้องต้น สำหรับนำไปใช้ในระบบควบคุมต่างๆ ที่ต้องการต่อไปครับ.
Reference
- http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino
- https://www.makerguides.com/28byj-48-stepper-motor-arduino-tutorial/
- https://simple-circuit.com/arduino-unipolar-stepper-motor-control/
- https://www.aranacorp.com/en/control-a-stepper-motor-with-arduino/
- http://users.ece.utexas.edu/~valvano/Datasheets/Stepper_ST.pdf
- https://www.orientalmotor.com/products/pdfs/opmanuals/HP-7421-7E.pdf
- https://www.orientalmotor.co.th/file/products/steppingmotors.pdf
- http://www.t-es-t.hu/download/microchip/an907a.pdf