ر اهنمای کامل ماژول روتاری انکودر KY-040
هر آنچه لازم است درباره کار با KY-040 بدانید
مقدمه
در دنیای تجهیزات الکترونیکی و پروژههای آردوینو، ماژول روتاری انکودر KY-040 یکی از پرکاربردترین قطعات برای اندازهگیری و کنترل موقعیت بهشمار میآید. این ماژول کوچک اما قدرتمند، به شما امکان میدهد حرکات چرخشی و حتی فرمانهای فشاری را به سیگنال دیجیتال تبدیل کنید. در این راهنما، صفر تا صد کار با این ماژول را بررسی خواهیم کرد تا بتوانید با دیدی باز و رویکردی حرفهای از آن استفاده کنید یا پروژه خود را هوشمندتر بسازید.
معرفی ماژول روتاری انکودر KY-040 :
ماژول Rotary Encoder KY-040 یکی از محبوبترین ماژولهای موجود برای اندازهگیری زاویه یا چرخش است. این ماژول شامل یک انکودر نوری روتاری با دو کانال خروجی دیجیتال (A و B)، یک سوئیچ فشاری تعبیهشده و برد مدار آماده برای نصب رویبرد یا بردبورد میباشد. شما با چرخش محور، پالسهایی تولید میکنید که قابل خواندن با میکروکنترلر (مثلاً آردوینو یا رزبریپای) هستند و میتوانید جهت چرخش و تعداد پالسها را تشخیص دهید. همچنین با فشار دادن شفت، سوئیچ روی ماژول فعال میشود و یک سیگنال اضافی دیجیتال دریافت میکنید.
برخلاف پتانسیومترها، روتاری انکودر محدودیت مکانی ندارد و میتوان آن را بینهایت در هر دو جهت چرخاند، بدون اینکه از کار بیفتد یا مقدارش ریست شود.
مشخصات فنی و ظاهری KY-040 :
- ولتاژ کاری: ۵ ولت DC
- جریان مصرفی: بسیار پایین (معمولاً کمتر از ۳۰ میلیآمپر)
- تعداد پینها: ۵ عدد (GND، VCC، CLK، DT، SW)
- خروجی: دیجیتال دوکاناله (برای جهت و تعداد چرخش) + خروجی سوئیچ
- ابعاد: تقریباً ۳۶ x ۱۹ x ۲۸ میلیمتر
- همراه با برد آماده برای نصب سریع روی بردبورد و PCB
- سازگاری کامل با انواع میکروکنترلر، آردوینو، ESP8266، ESP32، رزبری پای، PLC و …
کاربردهای ماژول روتاری انکودر KY-040 :
- ساخت ولوم یا دکمه چرخان دیجیتال (Virtual Potentiometer)
- انتخابگر منو و ورودی داده در نمایشگرها و ساعتهای دیجیتال
- کنترل سرعت و موقعیت در پروژههای رباتیک و CNC
- ورودی تنظیم صدا و نور در پروژههای DIY و صنعتی
- مناسب برای سیستمهای کنترلگر چندمنظوره (مثلاً میکسر صوتی، چاپگر سهبعدی و...)
- تشخیص موقعیت و حرکت در انواع ابزارهای اندازهگیری دقیق
نقشه پایههای ماژول روتاری انکودر KY-040 :
در تصویر زیر محل و کاربرد هر پایه مشخص است:
- GND: اتصال به زمین مدار
- VCC: تغذیه ۵ ولت
- CLK (یا S1): خروجی دیجیتال A (کانال اول پالسدهی)
- DT (یا S2): خروجی دیجیتال B (کانال دوم پالسدهی)
- SW: خروجی سوئیچ فشاری (Push Button)
نحوه اتصال KY-040 به آردوینو :
اغلب کاربران با "سیم بندی روتاری انکودر" یا "اتصال KY-040 به آردوینو" مواجه میشوند. مراحل بهصورت زیر است:
| پایه KY-040 | آردوینو |
|-------------|-----------|
| GND | GND |
| VCC | 5V |
| CLK | D2 |
| DT | D3 |
| SW | D4 |
(شما میتوانید از هر پین دیجیتال موردنیاز استفاده کنید؛ اعداد بالا صرفاً برای نمونه است.)
نکته: خطوط CLK و DT سیگنالی به نام "کد خاکستری" ارسال میکنند که با کمک آن میتوانید جهت چرخش را تشخیص دهید.
نحوه عملکرد و اصل کار روتاری انکودر :
ماژول KY-040 دارای دو خروجی پالس دیجیتال است که هرکدام با چرخیدن شفت بهصورت متناوب تغییر وضعیت (HIGH/LOW) میکنند. اگر شفت را در جهت ساعتگرد بچرخانید، توالی تغییر وضعیت پایهها به صورت (A جلوتر از B) است و در جهت پادساعتگرد دقیقاً برعکس (B جلوتر از A). با خواندن این سیگنالها، میتوانید هم مقدار (برای افزایش/کاهش) و هم جهت چرخش را از ماژول استخراج کنید.
سوئیچ هم با فشار دادن محور فعال (اتصال به زمین) میشود.
آموزش برنامهنویسی آردوینو با KY-040 (کد نمونه) :
در این قسمت یک کد ساده برای شمردن چرخشها و استفاده از سوئیچ آوردهایم:
```cpp
#define CLK 2
#define DT 3
#define SW 4
int counter = 0;
int lastStateCLK;
bool switchFlag = false;
void setup() {
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(SW, INPUT_PULLUP); // چون کلید به زمین وصل است
Serial.begin(9600);
lastStateCLK = digitalRead(CLK);
}
void loop() {
int currentStateCLK = digitalRead(CLK);
if (currentStateCLK != lastStateCLK) {
if (digitalRead(DT) != currentStateCLK) {
counter++;
} else {
counter--;
}
Serial.print("Counter: ");
Serial.println(counter);
}
lastStateCLK = currentStateCLK;
if (digitalRead(SW) == LOW && !switchFlag) {
Serial.println("Switch Pressed!");
switchFlag = true;
delay(200); // برای حذف نویز کلید (debounce)
}
if (digitalRead(SW) == HIGH) {
switchFlag = false;
}
}
توضیح:
- با چرخش به راست (ساعتگرد) عدد شمارنده افزایش و با چرخش به چپ (پادساعتگرد) کاهش مییابد.
- با فشردن شفت، پیام فشردن سوئیچ روی سریال چاپ میشود.
رفع اشکالها و نکات کلیدی در استفاده از KY-040 :
1. نویز و پرش سیگنال
بهطور معمول روتاری انکودرها کمی نویز دارند. برای حذف پرش یا خطا از کد Debounce یا کتابخانههای آماده مثل [`Encoder`](https://www.arduino.cc/reference/en/libraries/encoder/) استفاده کنید.
2. دقت و سرعت خواندن
اگر سرعت چرخش زیاد باشد، ممکن است پالسهایی را از دست بدهید. بنابراین توصیه میشود خواندن پایهها در loop سریع انجام شود یا حتی از وقفه (interrupt) استفاده کنید.
3. خواندن وضعیت سوئیچ
چون سوئیچ به زمین متصل میشود، معمولاً از INPUT_PULLUP در Arduino استفاده میشود تا عملکرد بهتری داشته باشد.
4. محل نصب فیزیکی
ماژول را با فاصله مناسب از منابع نویز (مثلاً موتورهای DC) قرار دهید.
مثال پروژه: ساخت ولوم دیجیتال با نمایشگر
برای درک بهتر، فرض کنیم میخواهید یک ولوم دیجیتال بسازید که روی نمایشگر مقدار را نمایش دهد:
- بهازای هر چرخاندن شفت، مقدار ولوم در LCD (مثلاً OLED یا ۱۶×۲) بروزرسانی میشود.
- با فشرده شدن کلید، مقدار ریست یا تائید میشود.
- با کمی خلاقیت میتوانید آن را به کنترلکننده نور، صدا، یا انتخابگر منو در پروژههای خود تبدیل کنید.
جمعبندی و پیشنهاد نهایی :
ماژول روتاری انکودر KY-040 یک ابزار فوقالعاده برای ساخت پروژههای هوشمند و حرفهای است. چه یک مبتدی باشید و چه یک حرفهای، این ماژول بهراحتی به شما اجازه میدهد کنترل دیجیتال، شمارش، و حتی دریافت دستورات کاربر را به سیستمتان اضافه کنید.
در صورت بروز سوال یا نیاز به راهنمایی بیشتر کافیست در بخش نظرات همین صفحه سوال خود را مطرح کنید تا تیم پشتیبانی یا سایر کاربران راهنماییتان کنند. همچنین کافیست عبارتهایی مانند "آموزش روتاری انکودر KY-040" یا "کد پروژه KY-040" را جستجو کنید تا مثالها و آموزشهای بیشتری در سایت ما بیابید.
سوالات متداول درباره KY-040:
- آیا میتوان KY-040 را با رزبری پای استفاده کرد؟
بله، با پایتون و پینهای GPIO به راحتی قابل راهاندازی است.
- آیا میتوان چند KY-040 همزمان استفاده کرد؟
بله، کافیست هر ماژول را به پینهای جداگانه متصل کنید.
- عمر مفید ماژول چقدر است؟
اگر در شرایط معمولی و بدون ضربه فیزیکی استفاده شود، طول عمر بسیار بالایی دارد.
منتظر نظرات و پروژههای خلاقانه شما هستیم!
اگر از این مقاله استفاده کردید، لطفاً آن را به اشتراک بگذارید یا در شبکههای اجتماعی معرفی کنید.
