ระบบกันเบี้ยวด้วย Stepper (แบบฉบับพี่สอนน้อง)
พี่จัดโปรเจกต์นี้มาเพราะต้องแก้ปัญหาไอ้เครื่องทำ Stencil ตัวเก่าที่บ้านมันงอแง เดินไม่ตรงทางซะที งานนี้เลยต้องออกโรงแก้บัคซะหน่อย โดยหลักการทำงานของมันคือ:
พอ [Sensor](https://s.shopee.co.th/7VBG2rX65j) ตรวจเจอว่าแผ่น Stencil มันเริ่มเบี้ยวหรือขยับออกจากแนวเล็กน้อย Stepper มอเตอร์ก็จะหมุนคันโยกเพื่อตบแผ่น Stencil ให้กลับมาเข้าที่เข้าทางตามแนวที่ถูกต้อง หล่อเท่เลยงานนี้
อ้อ ถ้าอยากสลับการทำงานให้เป็นตรงกันข้าม ก็แค่ไปเอาเครื่องหมาย ! ตรงบรรทัด if (detect != HIGH) ออกนะน้อง ง่ายๆ อย่าไปคิดเยอะ
void setup() {
Serial.begin(9600);
pinMode(3, INPUT); //IR Sensor
pinMode(8, OUTPUT); // Stepper Direction
pinMode(9, OUTPUT); // Stepper Step
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void loop() {
int detect = digitalRead (3);
if (detect != HIGH){
digitalWrite(9, HIGH);
delayMicroseconds(500);
digitalWrite(9, LOW);
delayMicroseconds(500);
}
else{
if(detect == LOW)
digitalWrite(9, LOW);
delayMicroseconds(500);
digitalWrite(9, HIGH);
delayMicroseconds(500);
}
}
*พี่ตั้งความเร็ว (Speed) ไว้ที่ 500ms นะ สู้งานนะน้อง

รายละเอียดทางเทคนิคแบบจัดเต็ม (Expanded Technical Details)
ระบบนำทางหุ่นยนต์หลบสิ่งกีดขวางแบบแม่นยำสูง
โปรเจกต์นี้เลือกใช้ Stepper มอเตอร์แทนมอเตอร์ DC กิ๊กก๊อกทั่วไปสำหรับหุ่นยนต์ Rover เพื่อให้ได้ความแม่นยำระดับต่ำกว่ามิลลิเมตร (Sub-millimeter) ในการเคลื่อนที่หลบสิ่งกีดขวาง
- คำนวณมุมเลี้ยวแบบเนียนๆ (Calculated Angular Maneuvers): ใช้ 28BYJ-48 Stepper Motor สองตัวคู่กับ Driver ULN2003 ตัว Arduino จะคำนวณจำนวน Step ที่ต้องใช้เพื่อให้เลี้ยวได้ 90 หรือ 180 องศาแบบเป๊ะๆ หุ่นยนต์แกจะได้ไม่เดินเบี้ยวเดินเซไปชนขาตู้
- ระบบสแกนด้วย Ultrasonic แบบ Differential: เมื่อเจอสิ่งกีดขวาง Arduino จะสั่งรัน "Scanning Routine" โดยให้ Stepper ค่อยๆ ขยับทีละ Step เพื่อหาช่องว่างที่กว้างที่สุดก่อนจะตัดสินใจพุ่งตัวออกไป
ความแม่นยำ (Accuracy)
- ระบบแก้ระยะฟรี (Zero-Backlash Navigation): ใน Firmware พี่ใส่ Algorithm "Backlash Compensation" ไว้ให้ด้วย เพื่อชดเชยระยะฟรีของเฟืองเกียร์ใน Stepper ราคาถูกๆ ทำให้การเคลื่อนที่ออกมาดูโปรระดับ Professional เลยล่ะวัยรุ่น!