กลับไปหน้ารวมไฟล์
getting-started-with-stepper-motor-28byj-48-1620bd.md

Getting Started With Stepper Motor 28BYJ-48

โปรเจกต์นี้เป็นการแนะนำ Stepper Motor แบบง่าย ๆ โดยมีจุดประสงค์เพื่อแนะนำ Stepper Motor และ Driver ของมันให้กับผู้เริ่มต้นที่ไม่มีพื้นฐานเลย

โปรเจกต์นี้ใช้ Stepper Motor รุ่น 28BYJ-48 และ Stepper Motor Driver รุ่น ULN-2003

โปรเจกต์นี้ใช้ Microprocessor ของ Arduino UNO เป็นหลัก

ผังวงจร

ผังวงจรสำหรับมอเตอร์

ทำตามผังวงจรที่ให้ไว้ด้านบน การเชื่อมต่อมีดังนี้:

Stepper Motor :

โดยปกติแล้ว Female Header Pins ของมอเตอร์จะถูกจัดกลุ่มและเชื่อมต่อเข้ากับพอร์ตที่เกี่ยวข้องบน ULN-2003 แต่ก็อาจมีข้อยกเว้น ให้ทำตามไดอะแกรมด้านบน (ดูแบบขยายจะช่วยได้มาก!)

Arduino และ Driver:

สามารถเชื่อมต่อ Digital Pins ใด ๆ ที่คุณเลือกเข้ากับ Driver ได้ โดยเริ่มจากซ้ายสำหรับ Coil A, B, C, D นอกจากนี้ยังมี Pins สำหรับ E, F และ G ด้วย แต่เราจะไม่ได้ใช้ Pins เหล่านี้สำหรับโปรเจกต์นี้

เชื่อมต่อพอร์ต + เข้ากับพอร์ต 5V ของ Arduino (ถ้าคุณต้องการ คุณสามารถเชื่อมต่อกับ 3.3V ได้เช่นกัน) และพอร์ต - เข้ากับพอร์ต GND ของ Arduino (มีพอร์ต GND หลายพอร์ต เลือกพอร์ตใดพอร์ตหนึ่งก็ได้)

หลักการทำงานของ Stepper Motor

Stepper Motor ทำงานโดยการจ่ายพัลส์กระแสไฟฟ้าไปยังแต่ละ Coil ของมอเตอร์ ซึ่งแต่ละพัลส์จะทำให้ Stepper Motor เคลื่อนที่ไปทีละก้าวเล็ก ๆ การใช้ลำดับนี้ซ้ำ ๆ จะสร้างการเคลื่อนที่ที่สามารถตรวจสอบได้อย่างแม่นยำอย่างเหลือเชื่อโดยไม่ต้องใช้เอาต์พุต PWM

ในที่นี้เราใช้โมเดล Eight-Phase ซึ่งจะจ่ายพลังงานให้กับแต่ละ Coil ตามลำดับ บางครั้งก็จ่ายพร้อมกันสอง Coil ไม่จำเป็นต้องใช้เอาต์พุต PWM ที่นี่ เนื่องจากพัลส์เป็น Digital 1 หรือ 0

ลำดับที่เราจ่ายไฟมีผลต่อทิศทางของมอเตอร์ หากเราจ่ายไฟตามลำดับจาก A ไป D มอเตอร์จะหมุนตามเข็มนาฬิกา ในขณะที่ถ้าเราจ่ายไฟตามลำดับจาก D ไป A มอเตอร์จะหมุนทวนเข็มนาฬิกา

โค้ด

#define A 2
#define B 3
#define C 4
#define D 5
#define NUMBER_OF_STEPS_PER_REV 512

ส่วนนี้กำหนด Pins ที่เชื่อมต่อกับแต่ละ Coil

เรากำลังใช้ 512 Steps ต่อการหมุนหนึ่งรอบสำหรับ Stepper Motor นี้

เปลี่ยนตัวเลขนี้ให้เป็นค่าที่ตรงกับ Stepper Motor ของคุณ

void setup(){
pinMode(A,OUTPUT);
pinMode(B,OUTPUT);
pinMode(C,OUTPUT);
pinMode(D,OUTPUT);
}

ส่วนนี้กำหนดให้แต่ละ Pin เป็น Output Pin

void write(int a,int b,int c,int d){
digitalWrite(A,a);
digitalWrite(B,b);
digitalWrite(C,c);
digitalWrite(D,d);
}

void onestep(){
write(1,0,0,0);
delay(5);
write(1,1,0,0);
delay(5);
write(0,1,0,0);
delay(5);
write(0,1,1,0);
delay(5);
write(0,0,1,0);
delay(5);
write(0,0,1,1);
delay(5);
write(0,0,0,1);
delay(5);
write(1,0,0,1);
delay(5);
}

ส่วนนี้ทำหน้าที่หลักทั้งหมด ฟังก์ชัน `onestep` จะจ่ายพลังงานให้กับแต่ละ Coil ตามลำดับเพื่อสร้างการเคลื่อนที่ ค่า Delay ที่อยู่ระหว่างนั้นเป็นตัวกำหนดความเร็วของ `onestep`

void loop(){
int i;
i=0;
while(i<NUMBER_OF_STEPS_PER_REV){
onestep();
i++;
}

ส่วนนี้จะหมุนมอเตอร์ครบหนึ่งรอบ (ตามเข็มนาฬิกา)

รายละเอียดทางเทคนิคเพิ่มเติม

ศูนย์ควบคุมการเคลื่อนที่ที่มีความแม่นยำสูง

คู่มือนี้มีพิมพ์เขียวทางเทคนิคสำหรับการบรรลุความแม่นยำในการหมุนระดับ Sub-Degree โดยใช้ Geared Stepper Motor รุ่น 28BYJ-48 ที่มีราคาประหยัด

  • การจัดลำดับแบบ 4-Phase Unipolar: Arduino จัดการ Input ทั้งสี่ของ ULN2003 Driver เฟิร์มแวร์ใช้การจัดลำดับแบบ "Half-Step" ซึ่งให้ 4096 Steps ต่อการหมุน 360 องศาเต็มรอบของเพลาเกียร์ภายใน
  • เคอร์เนลชดเชย Backlash: Geared Stepper มักมี "Slop" ทางกลไก Arduino มี Routine ซอฟต์แวร์ที่เพิ่ม Steps พิเศษเล็กน้อยเมื่อใดก็ตามที่มอเตอร์เปลี่ยนทิศทาง เพื่อรักษาการจัดตำแหน่งที่สมบูรณ์แบบสำหรับ CNCs หรือ Telescopes ขนาดเล็ก

ฮาร์ดแวร์

  • การจับคู่ Driver แบบบูรณาการ: รายละเอียดการเดินสายทางกายภาพระหว่าง Digital Pins ของ Arduino และ Pins IN1-IN4 ของโมดูล ULN2003 โดยมีแหล่งจ่ายไฟภายนอก 5V-12V เพื่อป้องกัน Arduino

ข้อมูล Frontmatter ดั้งเดิม

title: "Getting Started With Stepper Motor 28BYJ-48"
description: "The basics of how to control a stepper motor"
author: "debanshudas23"
category: ""
tags:
  - "cars"
  - "robots"
views: 84110
likes: 14
price: 2450
difficulty: "Easy"
components:
  - "1x Arduino UNO"
  - "1x ULN2003"
  - "1x 28BYJ-48 stepper motor"
  - "1x Solderless Breadboard Full Size"
  - "1x Jumper wires (generic)"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "b9d079bee97772080f6da2d0e8019bb06a22a7cb341b2a1b062b04ca24cc4045"
encryptedPayload: "U2FsdGVkX18vhOWvCyQYg5Sk2QxLwdpB/x43hO6ThtG6hGH9rE4d8NjYIAcnwOTJ/B2kcXa8D+RjOO40DDXR+IZX38aqBuuDPUyJ6kqJRbM="
seoDescription: "Learn the basics of controlling a Stepper Motor 28BYJ-48 with Arduino. A simple guide for beginners."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/getting-started-with-stepper-motor-28byj-48-1620bd_cover.jpg"
lang: "th"