- ส่วนประกอบที่จำเป็น
- คำอธิบายพินของ 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 ภายนอก
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิตได้รับด้านล่าง