ویژگی های درایور استپر موتور DRV8825
اگر قصد ساخت یک پرینتر سه بعدی را دارید، قطعا به یک کنترلکننده موتورهای استپر نیاز پیدا میکنید. یکی از پرکاربردترین درایورها برای کنترل استپر موتورها، DRV8825 میباشد. این ماژول جهت کنترل استپر موتورهای دو قطبی استفاده میشود. تنها با استفاده از دو پین این ماژول میتوان جهت چرخش و گامهای چرخش استپر موتور را کنترل نمود. با ارسال هر سیگنال از طرف پین گام چرخش، موتور به اندازه یک گام جابهجا میشود.
ویژگی های این ماژول عبارت اند از:
- گام کامل این درایور، 200 گام (هر گام 1.8 درجه) به ازای هر چرخش میباشد.
- جریان مجاز پیوسته عبوری به ازای هر فاز بدون خنکسازی : 1.5 آمپر
- ماکزیمم جریان به ازای ولتاژ 24 ولت برای هر فاز : 5 آمپر
- ولتاژ موتور : 2 تا 45 ولت
- حداقل بازه پالس پین STEP بایستی 9us باشد.
- ویژگیهای حفاظت DRV8825:
– حفاظت جریان زیاد
– حفاظت حرارتی
– حفاظت ولتاژ پایین موتور
– دارای پین نشاندهنده وضعیت خطا
نکته
تعداد گامهای آن از گام کامل تا گام 1/32 میباشد.
از جمله کاربردهای این درایور موارد زیر میباشد:
- دوربین های امنیتی
- چاپگرها
- اسکنرها
- ماشین آلات بازی
- اتوماسیون کارخانه
- رباتیک
- ماشین های اتوماسیون اداری
دیتاشیت آی سی DRV8825 را می توانید از اینجا دانلود کنید.
معرفی پایه های (Pinout) درایور استپر موتور DRV8825
این درایور دارای پایههایی به شرح زیر است:
پایه های تغذیه:
- GND-MOT: زمین تغذیه موتور
- VMOT: ولتاژ تغذیه موتور – 8 تا 35 ولت
- GND-LOGIC: زمین تغذیه درایو
نکته
برای محافظت درایور از جرقههای ولتاژ VMOT، میتوانید از خازن استفاده کنید.
پایه های سیمپیچی موتور:
- A1: پایه اول کویل 1 موتور
- A2: پایه دوم کویل 1 موتور
- B1: پایه اول کویل 2 موتور
- B2: پایه دوم کویل 2 موتور
پایه های کنترل حرکت موتور:
- DIR: سیگنال دیجیتال برای کنترل جهت حرکت موتور
- STEP: سیگنال دیجیتال برای کنترل گام های چرخش
- SLP: این سیگنال برای زمانی که از موتور ها استفادهای نمیشود، کاربرد دارد – Active-Low
- RST: سیگنال ریست – Active-Low
- EN: با فعال شدن این سیگنال، خروجیهای درایور غیرفعال میشوند.
پایه تشخیص خطا:
- FAULT: این پایه در زمان تشخیص خطا (جریان زیاد-حرارت بالا)، LOW میشود.
نکته
این پایه به پین SLEEP نیز متصل است. یعنی در زمان خطا کل ماژول غیرفعال میشود. در ضمن با استفاده از پایه RESET و یا اتصال مجدد تغذیه موتور، میتوانید دوباره آن را راهاندازی کرد.
پایه های انتخاب دقت گام:
- M0: پایه اول دقت گام
- M1: پایه دوم دقت گام
- M2: پایه سوم دقت گام
پین اوت (Pinout) درایور DRR8825 در تصویر زیر آمده است.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
تذکر
دقت کنید برای راهاندازی این موتور توسط درایور DRV8825 به منبع تغذیه (آداپتور، باتری و ….) بالاتر از 8 ولت نیاز دارید. منبع تغذیه در لیست فوق ذکر نشده است. خودتان یکی از انواع آن را تهیه کنید.
راه اندازی درایور استپر موتور DRV8825 با آردوینو
گام اول: سیم بندی
عکس زیر نشان دهنده نحوه اتصال درایور به دیگر قطعات میباشد.
نکته
پایه SLP و RST به VCC متصل شدهاند.
گام دوم: محدودسازی جریان
برای به دست آوردن محدوده مجاز جریان، مراحل زیر را به ترتیب طی میکنیم:
1-به دیتاشیت استپ موتور مراجعه کرده و جریان مجاز هر فاز آن را مشاهده کنید.
2-درایور را در حالت گام کامل قرار دهید. (سه پایه تنظیم گام بدون اتصال باشند)
3-STEP و DIR را به VCC میکرو متصل کنید.
4-Vref را طبق شکل از طریق پتانسیومتر محاسبه کنید.
5- محدوده مجاز جریان را طبق فرمول زیر به دست آورید.
Current Limit = Vref * 2
گام سوم: کد
کد زیر را روی برد آردوینوی خود آپلود کنید.
/*
DRV8825-Stepper-Motor-Driver Module
modified on 1 Dec 2020
by Amir Mohammad Shojaee @ Electropeak
Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=oUPtRH0NDo" data-secret="oUPtRH0NDo" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
based on lastminuteengineers.com
*/
const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;
void setup()
{
// Declare pins as Outputs
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop()
{
// Set motor direction clockwise
digitalWrite(dirPin, HIGH);
// Spin motor slowly
for(int x = 0; x < stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin, LOW);
delayMicroseconds(2000);
}
delay(1000); // Wait a second
// Set motor direction counterclockwise
digitalWrite(dirPin, LOW);
// Spin motor quickly
for(int x = 0; x < stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin, LOW);
delayMicroseconds(1000);
}
delay(1000); // Wait a second
}
ابتدا پایه 3 و 2 را STEP و DIR تعریف میکنیم. در ادامه با یک برنامه ساده توسط حلقه for، موتور یک دور در جهت ساعتگرد و یک دور نیز در جهت پادساعتگرد میچرخد. ولی حرکت موتور یک دور، سریع و یک دور، کند انجام میشود. سرعت چرخش را میتوانید توسط زمان دستور delay تنظیم کنید.