دلیل استفاده از دریایور موتور این است که در خیلی جاها به دلیل ضعیف بودن یا سازگار نبودن خروجی با مشخصات موتور ها نمیشود مستقیما از میکرو کنترولر ها یا مدارهای پردازش برای راه انداختن موتور استفاده کرد.
این ماژول کوچک از یک تراشه DRV8833 استفاده می کند.
این تراشه قادر است دو موتور دی سی را با ولتاژ 3 تا 10 ولت و جریان 1.5 آمپر و یا یک موتور استپر دو فاز چهار سیمه را راه اندازی کند.
این تراشه از حالت خواب و حالت قطع خروجی در برابر افت ولتاژ و اضافه بار و حرارت زیاد نیز پشتیبانی می کند
پینهای ورودی شامل پین VCC برای تغذیه موتور
پین GND زمین مشترک
دو جفت پین که هر جفت برای فرمان دادن به یک موتور می باشد IN1-IN2 و IN3-IN4
دو جفت پین خروجی که هر کدام به یک موتور یا یک فاز استپر موتور وصل می شوند OUT1-OUT2 و OUT3-OUT4
پین ورودی EEP یا SLEEP : اگر این پین را به مثبت وصل کنید درایور فعال می باشد و اگر منفی شود درایور به حالت خاموش و مصرف کم انرژی در می آید.
جامپر J که در کنار پین EEP قرار دارد برای از کار انداختن حالت SLEEP می باشد.
اگر از پین EEP استفاده نمیکنید میتوانید این جامپر را به هم وصل کنید تا نیازی به اتصال پین EEP به مثبت نداشته باشید
در غیر این صورت این جامپر باید باز باشد تا بتوانید با EEP ماژول را کنترول کنید.
پین خروجی ULT یا FAULT : خروجی این پین مثبت است و اگر ماژول در برابر اضافه جریان یا دما قرار بگیرد این پین منفی می شود.
از این پین میتوانید برای هشدار یا سایر تدابیر امنیتی استفاده کنید.
روش فرمان دادن به پینهای ورودی درایور IN1-IN2 به شرح زیر می باشد
حالت توقف: هر دو پین مثبت یا هردو صفر باشند
حالت حرکت: یکی از دو پین مثبت و دیگری صفر باشد و برای حرکت معکوس کافیست جای این دو پین عوض شود
با کمک این فرمول ساده به راحتی میتوانیم یک برنامه کوچک جهت راه اندازی این ماژول بنویسیم
مانند شکل زیر اتصالات ماژول و موتور ها و میکرو کنترولر را انجام دهید
توجه کنید که در این مدار از پین EEP صرف نظر کرده ایم بنا بر این جهت فعال شدن ماژول جامپر J را حتما به هم متصل کنید و یا پین EEP را به مثبت متصل کنید.
در غیر این صورت سیستم کار نخواهد کرد.
سپس برنامه نمونه را بارگزاری کنید و نتیجه را ببینید
این ماژول به هیچ کتابخانه دیگری نیاز ندارد و به راحتی قابل استفاده است
بعد از اجرای برنامه موتور ها 5 ثانیه در یک جهت چرخیده و 3 ثانیه متوقف شده و سپس بر خلاف جهت اول شروع به گردش خواهند کرد
const int motorA1 = 9;
const int motorA2 = 10;
const int motorB1 = 11;
const int motorB2 = 12;
void setup() {
// put your setup code here, to run once:
pinMode( motorA1 , OUTPUT);
pinMode( motorA2 , OUTPUT);
pinMode( motorB1 , OUTPUT);
pinMode( motorB2 , OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite( motorA1 , HIGH);
digitalWrite( motorA2 , LOW);
digitalWrite( motorB1 , HIGH);
digitalWrite( motorB2 , LOW);
delay(5000);
// stop
digitalWrite( motorA1 , LOW);
digitalWrite( motorA2 , LOW);
digitalWrite( motorB1 , LOW);
digitalWrite( motorB2 , LOW);
delay(3000);
digitalWrite( motorA1 , LOW);
digitalWrite( motorA2 , HIGH);
digitalWrite( motorB1 , LOW);
digitalWrite( motorB2 , HIGH);
delay(5000);
// stop
digitalWrite( motorA1 , LOW);
digitalWrite( motorA2 , LOW);
digitalWrite( motorB1 , LOW);
digitalWrite( motorB2 , LOW);
delay(3000);
}