
کاربرد انکودر در آسانسور
16 تیر 1404
کنترل دقیق دور موتورهای دیسی با استفاده از انکودر و آردوینو (کنترل دور موتور دی سی انکودر دار با آردوینو) یک پروژه کاربردی برای بسیاری از پروژههای رباتیک و صنعتی است. در این مقاله، به بررسی اصول کنترل دور موتور دیسی انکودر دار با آردوینو میپردازیم و با جزئیات به مراحل نصب و کدنویسی آن خواهیم پرداخت.
بخش اول: انکودر چیست و چگونه کار میکند؟
انکودرها دستگاههایی هستند که برای تشخیص موقعیت و سرعت چرخش شفت موتور طراحی شدهاند. دو نوع اصلی انکودر وجود دارد: انکودرهای افزایشی و انکودرهای مطلق. در پروژههای کنترل دور موتور، معمولاً از انکودرهای افزایشی استفاده میشود، زیرا این نوع انکودر موقعیت شفت را با تولید تعداد مشخصی پالس در هر دور شفت ثبت میکند.
انکودر به آردوینو متصل شده و با ارسال سیگنالهای پالس، تعداد چرخشها یا موقعیت فعلی شفت را به میکروکنترلر منتقل میکند. این دادهها سپس برای تنظیم سرعت و جهت چرخش موتور استفاده میشوند.
بخش دوم: مزایای کنترل دور موتور دی سی انکودر دار با آردوینو
استفاده از انکودر در کنترل موتور به کاربران اجازه میدهد تا دقیقاً سرعت موتور را تنظیم کنند و از دقت و عملکرد بهتری برخوردار شوند. از دیگر مزایای کنترل موتور با آردوینو و انکودر میتوان به موارد زیر اشاره کرد:
- دقت بالا: با انکودر، میتوان سرعت و موقعیت شفت موتور را به طور دقیق کنترل کرد.
- بازخورد بلادرنگ: با استفاده از انکودر، سیستم میتواند به سرعت تغییرات را تشخیص داده و سرعت یا جهت موتور را بهروز کند.
- قابلیت پیادهسازی الگوریتمهای پیچیدهتر: با استفاده از آردوینو، امکان برنامهنویسی و اجرای الگوریتمهای کنترل پیشرفته فراهم میشود.
بخش سوم: قطعات و لوازم موردنیاز
برای اجرای این پروژه به موارد زیر نیاز داریم:
- موتور دیسی انکودر دار
- آردوینو (Arduino Uno یا هر مدل دیگر)
- درایور موتور L298N
- منبع تغذیه موتور دیسی
- سیمها و اتصالات
- کابل USB برای اتصال آردوینو به کامپیوتر

بخش چهارم: سیمکشی و اتصال قطعات
در این بخش، به نحوه اتصال اجزا میپردازیم.
- اتصال انکودر به آردوینو: انکودر دارای دو خروجی A و B است که با تغییر موقعیت شفت، پالس تولید میکنند. این دو خروجی را به پینهای دیجیتال آردوینو (برای مثال، پین 2 و 3) متصل کنید.
- اتصال موتور به درایور L298N: موتور دیسی انکودر دار را به پینهای خروجی درایور موتور L298N وصل کنید.
- اتصال تغذیه: تغذیه موتور را به درایور L298N و آردوینو وصل کنید. حتماً دقت کنید ولتاژ و جریان مناسب با موتور و درایور باشد.
بخش پنجم: کدنویسی و برنامهنویسی در آردوینو
حال که اجزا را به درستی متصل کردیم، باید کد آردوینو را بنویسیم تا بتوانیم سرعت موتور دیسی را بر اساس اطلاعات انکودر کنترل کنیم.
// پینهای انکودر
const int encoderPinA = 2;
const int encoderPinB = 3;
// متغیرهای موقعیت انکودر و سرعت موتور
volatile int encoderPos = 0;
int motorSpeed = 0;
// تنظیمات پین موتور
const int motorPin1 = 8;
const int motorPin2 = 9;
void setup() {
Serial.begin(9600);
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
// وقفههای انکودر برای شمارش پالسها
attachInterrupt(digitalPinToInterrupt(encoderPinA), encoderTick, CHANGE);
}
void loop() {
// تنظیم سرعت موتور بر اساس موقعیت انکودر
motorSpeed = calculateSpeed();
Serial.println(motorSpeed);
setMotorSpeed(motorSpeed);
}
void encoderTick() {
// شمارش پالسها
if (digitalRead(encoderPinA) == digitalRead(encoderPinB)) {
encoderPos++;
} else {
encoderPos--;
}
}
int calculateSpeed() {
// محاسبه سرعت از موقعیت انکودر
// تنظیمات و الگوریتمهای خاص بسته به نیاز شما
return encoderPos;
}
void setMotorSpeed(int speed) {
// تنظیم جهت و سرعت موتور
if (speed > 0) {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
} else {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
}
}
بخش ششم: توضیح کد
در این کد:
- تابع encoderTick: این تابع با هر تغییر در انکودر اجرا شده و پالسها را شمارش میکند.
- تابع calculateSpeed: سرعت فعلی موتور را بر اساس تغییرات موقعیت انکودر محاسبه میکند.
- تابع setMotorSpeed: جهت و سرعت موتور را بر اساس سرعت محاسبهشده تنظیم میکند.

بخش هفتم: بهینهسازی و رفع مشکلات رایج
در این پروژه، ممکن است با برخی مشکلات مواجه شوید که با رعایت این نکات میتوان آنها را حل کرد:
- لرزش و ناپایداری: ممکن است پالسهای انکودر به دلیل لرزش و نویز ناپایدار باشند. استفاده از فیلتر دیجیتال یا مکانیزم دیبانسینگ میتواند این مشکل را برطرف کند.
- تنظیم دقیق سرعت موتور: برای کنترل دقیقتر، میتوانید از الگوریتمهای پیشرفتهتر مانند کنترل PID استفاده کنید.
بخش هشتم: کاربردهای عملی کنترل دور موتور دی سی انکودر دار با آردوینو
کنترل دقیق دور موتور دیسی انکودر دار در بسیاری از پروژهها از جمله رباتیک، ماشینهای CNC، چاپگرهای سهبعدی و سیستمهای اتوماسیون صنعتی به کار میرود. در هرکدام از این موارد، امکان تنظیم سرعت و موقعیت شفت به کاربران اجازه میدهد که از دقت و قابلیت اطمینان بالاتری برخوردار شوند.
جمعبندی
در این مقاله، نحوه کنترل دور موتور دیسی انکودر دار با آردوینو را بررسی کردیم. این پروژه علاوه بر ارائه دانش پایه در کنترل موتورهای دیسی، تجربه عملی از استفاده از انکودرها و برنامهنویسی آردوینو را نیز در اختیار شما قرار میدهد. با اجرای دقیق مراحل و تنظیمات مناسب، میتوانید به راحتی دور موتور دیسی انکودر دار را کنترل کنید و در پروژههای خود به نتایج مطلوبی دست یابید.



