- ส่วนประกอบที่จำเป็น
 - คำอธิบายพินของ Stepper Motor
 - แผนภาพวงจรสำหรับการควบคุม Stepper Motor โดยใช้โมดูล ULN2003
 - แผนภาพวงจรสำหรับการควบคุม Stepper Motor โดยใช้โมดูล L293D:
 - การควบคุม Stepper Motor ด้วย AVR ATmega16
 
Stepper Motors เป็นมอเตอร์แบบไม่มีแปรงถ่าน DC ซึ่งสามารถหมุนได้ตั้งแต่ 0 0ถึง 360 0 ทีละขั้นตอน Stepper Motor ใช้สัญญาณอิเล็กทรอนิกส์เพื่อหมุนมอเตอร์ตามขั้นตอนและแต่ละสัญญาณจะหมุนเพลาโดยเพิ่มขึ้นคงที่ (ขั้นตอนเดียว) แองเจิลการหมุนถูกควบคุมโดยใช้ลำดับสัญญาณบางอย่าง ไม่เหมือนกับเซอร์โวมอเตอร์มอเตอร์สเต็ปสามารถขับเคลื่อนได้โดยใช้หมุด GPIO ของไมโครคอนโทรลเลอร์แทนที่จะเป็นพิน PWM และสามารถหมุนใน (+360 0) และ (-360 0). ลำดับของสัญญาณจะกำหนดทิศทางตามเข็มนาฬิกาและทวนเข็มนาฬิกาของมอเตอร์สเต็ปเปอร์ ในการควบคุมความเร็วของมอเตอร์เราเพียงแค่ต้องเปลี่ยนอัตราของสัญญาณควบคุมที่ใช้ สเต็ปเปอร์มอเตอร์หมุนตามขั้นตอน มีหลายขั้นตอนในการใช้งาน Stepper Motor เช่นแบบเต็มขั้นตอนครึ่งก้าวและไมโครสเต็ป หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับพื้นฐานทฤษฎีและหลักการทำงานของมอเตอร์สเต็ปเปอร์โปรดไปที่ลิงค์
ก่อนหน้านี้เราได้เชื่อมต่อ Stepper Motor กับไมโครคอนโทรลเลอร์หลายตัว:
- การเชื่อมต่อ Stepper Motor กับ ARM7-LPC2148
 - การเชื่อมต่อ Stepper Motor กับ Arduino Uno
 - การเชื่อมต่อ Stepper Motor กับ MSP430G2
 - การเชื่อมต่อ Stepper Motor กับ STM32F103C8
 - การเชื่อมต่อ Stepper Motor กับไมโครคอนโทรลเลอร์ PIC
 - การเชื่อมต่อ Stepper Motor กับไมโครคอนโทรลเลอร์ 8051
 - การเชื่อมต่อ Stepper Motor กับ Raspberry Pi
 
ในบทช่วยสอนนี้เราจะเชื่อมต่อStepper Motor 28BYJ-48 กับไมโครคอนโทรลเลอร์ Atmega16 AVRโดยใช้ Atmel Studio 7.0 มอเตอร์สเต็ปได้รับการจัดอันดับให้ทำงานใน 5V เราจะเชื่อมต่อมอเตอร์ที่มีทั้งคนขับรถมอเตอร์เช่นULN2003 และ L293 ทั้งสองจะขับเคลื่อนด้วยแหล่งจ่าย 5V เพื่อให้การเชื่อมต่อง่ายขึ้นเราใช้โมดูล prebuild ของไดรเวอร์มอเตอร์ทั้งสองตัว คุณยังสามารถใช้ IC แบบสแตนด์อโลนของ ULN2003 และ L293D จำนวนสายไฟและจัมเปอร์อาจมีมากขึ้นดังนั้นโปรดใช้ความระมัดระวังขณะเชื่อมต่อการเชื่อมต่อทั้งหมด
ส่วนประกอบที่จำเป็น
- สเต็ปเปอร์มอเตอร์ (28BYJ-48)
 - ULN2003 โมดูล / ไดรเวอร์มอเตอร์ L293D
 - Atmega16 ไมโครคอนโทรลเลอร์ IC
 - 16Mhz คริสตัลออสซิลเลเตอร์
 - ตัวเก็บประจุ 100nF สองตัว
 - ตัวเก็บประจุ 22pF สองตัว
 - ปุ่มกด
 - สายจัมเปอร์
 - เขียงหั่นขนม
 - USBASP v2.0
 - LED (สีใดก็ได้)
 
คำอธิบายพินของ Stepper Motor

แผนภาพวงจรสำหรับการควบคุม Stepper Motor โดยใช้โมดูล ULN2003
เชื่อมต่อส่วนประกอบทั้งหมดตามที่แสดงในแผนภาพด้านล่างเมื่อใช้ULN2003. ในทำนองเดียวกันเราจะเชื่อมต่อโดยใช้ L293D ในขั้นตอนต่อไป เราใช้ PORTA ของ Atmega16 เพื่อเชื่อมต่อสเต็ปเปอร์มอเตอร์สำหรับทั้งไดรเวอร์มอเตอร์ ไม่จำเป็นต้องเชื่อมต่อขา 5V ของมอเตอร์สเต็ปเปอร์ ต้องใช้พินขดลวดเท่านั้นในการเคลื่อนสเต็ปมอเตอร์ ลำดับพินมีความสำคัญมากในการขับเคลื่อนสเต็ปเปอร์มอเตอร์เนื่องจากการเพิ่มพลังของขดลวดควรเป็นไปตามขั้นตอน ใช้อินพุทสี่ตัวของ ULN2003 และสี่เอาท์พุทของ ULN2003 ในโครงการนี้ อินพุตจะเชื่อมต่อกับพิน PORTA และเอาต์พุตจะเชื่อมต่อกับหมุด Stepper Motor Signal นอกจากนี้ให้เชื่อมต่อปุ่มกดหนึ่งปุ่มในพินรีเซ็ตเพื่อรีเซ็ต Atmega16 เมื่อจำเป็น เชื่อมต่อ Atmega16 กับวงจรออสซิลเลเตอร์คริสตัลที่เหมาะสม ระบบทั้งหมดจะใช้พลังงานจากแหล่งจ่าย 5V

ด้านล่างนี้เป็นรูปภาพจริงของโมดูลไดรเวอร์มอเตอร์ ULN2003:

ด้านล่างนี้เราได้ให้การเชื่อมต่อพิน Atmega16 กับ ULN2003 และ L293D เพื่อหมุนสเต็ปมอเตอร์ การเชื่อมต่อสเต็ปเปอร์มอเตอร์กับโมดูล L293D มีคำอธิบายในส่วนต่อไปโปรดจำไว้ว่าต้องใช้โมดูลเดียวเท่านั้นสำหรับการควบคุมมอเตอร์แบบสเต็ปเปอร์
การเชื่อมต่อพินสำหรับ INPUT มีดังนี้:
| 
 Atmega16  | 
 ULN2003  | 
 L293D  | 
| 
 A0  | 
 IN1 (PIN1)  | 
 IN1 (PIN2)  | 
| 
 A1  | 
 IN2 (PIN2)  | 
 IN2 (PIN7)  | 
| 
 A2  | 
 IN3 (PIN3)  | 
 IN3 (PIN10)  | 
| 
 A3  | 
 IN4 (PIN4)  | 
 IN4 (PIN15)  | 
การเชื่อมต่อพินสำหรับ OUTPUT มีดังนี้:
| 
 สเต็ปเปอร์มอเตอร์  | 
 ULN2003  | 
 L293D  | 
| 
 ส้ม  | 
 OUT1 (PIN16)  | 
 OUT1 (PIN3)  | 
| 
 สีเหลือง  | 
 OUT2 (PIN15)  | 
 OUT2 (PIN6)  | 
| 
 สีชมพู  | 
 OUT3 (PIN14)  | 
 OUT3 (PIN11)  | 
| 
 สีน้ำเงิน  | 
 OUT4 (PIN13)  | 
 OUT4 (PIN14)  | 

แผนภาพวงจรสำหรับการควบคุม Stepper Motor โดยใช้โมดูล L293D:



การควบคุม Stepper Motor ด้วย AVR ATmega16
ดังที่ได้บอกไปแล้วว่าไม่เหมือน Servo Motor มอเตอร์ Stepper ต้องการไดรเวอร์ภายนอกเช่นไดรเวอร์มอเตอร์ ULN2003 หรือ L293D ดังนั้นเพียงแค่เชื่อมต่อวงจรดังกล่าวข้างต้นและอัปโหลดโปรแกรม main.c ที่ได้รับในตอนท้าย
ภาพร่างแสดงให้เห็นถึงสเต็ปเปอร์มอเตอร์ที่หมุนทั้งสองด้านเช่นตามเข็มนาฬิกาและทวนเข็มนาฬิกา หากคุณต้องการหมุนสเต็ปเปอร์ไปในทิศทางเดียวเพียงแค่คอมเมนต์บรรทัดรหัสของทิศทางอื่นในร่าง
รหัส AVR ที่สมบูรณ์สำหรับการควบคุม Stepper Motorได้รับด้านล่าง รหัสเป็นเรื่องง่ายและสามารถเข้าใจได้ง่าย สองรหัสได้รับด้านล่างหนึ่งสำหรับการหมุนมอเตอร์ด้วย ULN2003 และครั้งที่สองกับโมดูล
เชื่อมต่อ USBASP v2.0 ของคุณและปฏิบัติตามคำแนะนำในการเชื่อมโยงนี้ในการเขียนโปรแกรมไมโครคอนโทรลเลอร์ตระกูล AVR ATmega16 ใช้ USBASP และ Atmel สตูดิโอ 7.0 เพียงแค่สร้างร่างและอัปโหลดโดยใช้ toolchain ภายนอก
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิตได้รับด้านล่าง
