NEMA17 چیست و A4988 چطور کار میکند؟
NEMA17 استاندارد اندازه فلنج موتور (۱۷×۱۷ برابر ۱/۱۰ اینچ = ۴۲.۳mm) است — متداولترین موتور پلهای در پرینترهای سهبعدی، CNC و رباتها. معمولاً ۲۰۰ قدم در هر دور (۱.۸° هر قدم)، ۲ فاز (bipolar).
A4988 یک درایور موتور پلهای با رابط Step/Dir است: هر پالس روی پایه STEP = یک قدم موتور. پایه DIR جهت را تعیین میکند. با پینهای MS1/MS2/MS3 میتوان microstepping را تنظیم کرد (1/2، 1/4، 1/8، 1/16).
خطر: اگر بدون موتور ولتاژ بدهی A4988 خراب میشود! همیشه موتور متصل باشد.
اتصال A4988 به Arduino
| A4988 | Arduino | نکته |
|---|---|---|
| VMOT | 12V باتری | خازن ۱۰۰μF موازی VMOT/GND |
| GND (VMOT) | باتری منفی | — |
| VDD | 5V Arduino | منطق |
| STEP | D3 | هر پالس = یک قدم |
| DIR | D4 | HIGH/LOW = جهت |
| MS1/MS2/MS3 | HIGH/HIGH/HIGH | 1/16 microstepping |
| ENABLE | GND (فعال) | LOW = فعال |
تنظیم جریان A4988
با مولتیمتر ولتاژ روی پتانسیومتر را بخوان: Vref = I_max × 8 × R_sense
برای NEMA17 1.5A و R_sense=0.1Ω: Vref = 1.5 × 8 × 0.1 = 1.2V. پتانسیومتر را تنظیم کن.
کد با AccelStepper
#include <AccelStepper.h>
// AccelStepper شتاب و سرعت نرم دارد — بهتر از delay خام
AccelStepper motor(AccelStepper::DRIVER, 3, 4); // STEP=D3, DIR=D4
void setup(){
motor.setMaxSpeed(3200); // قدم/ثانیه (1/16 step = 200×16=3200 per rev)
motor.setAcceleration(800); // شتاب
}
void loop(){
// حرکت ۱ دور کامل جلو
motor.moveTo(3200);
while(motor.distanceToGo() != 0) motor.run();
delay(500);
// ۱ دور برعکس
motor.moveTo(0);
while(motor.distanceToGo() != 0) motor.run();
delay(500);
}