آموزش کامل کار با روتاری انکودر rotary encoder در آردوینو

آموزش کامل کار با روتاری انکودر rotary encoder و شیوه عملکرد آن را برای شما آماده کرده ایم. روتاری انکودر یک قطعه بسیار شبیه به ولوم است که دارای 5 پایه است. شفت روتاری انکودر می توانم به صورت آزادانه می تواند 360 درجه بچرخد . در واقع برای چرخاندن شفت آن محدودیتی ندارد و بی نهایت می تواند آن را به دور خود چرخاند . وقتی شفت روتاری انکودر را می چرخانیم پالس هایی ارسال می شود . و چرخش شفت آن به صورت استپ اسپ می باشد و هر استپ یک پالس را ایجاد می کند . معمولا 360 درجه یک روتاری انکودر معمولی 24 پالس است و در طی 24 اسپ ایجاد می شود .

در داخل روتاری انکودرها یک کلید قرار داده شده است که با فشار دادن شفت روتاری به سمت پایین کلید وصل شده و با رها کردن شفت کلید قطع می گرد . از 5 پایه روتاری انکودر 2 پایه برای کلید و 3 پایه برای چرخش شفت درنظر گرفته شده است .

روتاری انکودر rotary encoder چیست و چگونه کار می کند ؟

در داخل روتاری انکودر یک عدد دیسک شیار دار وجود دارد که این دیسک رسانا است و به GND روتاری انکودر وصل می شود . همچنین دو عدد براش رسانا بین شیار ها قرار دارند که در حال عادی با دیسک برخوردی ندارند . در شکل زیر شکل واقعی داخل یک روتاری انکودر را مشاهده می کنید .

داخل روتاری انکودر چگونه است

در بالا گفتیم دو عدد براش رسانا وجود دارند نام این براش ها A و B است که با چرخش دیسک یکی بعداز دیگری این دوتا براش با دیسک تماس پیدا کرده و یک لحظه سطح ولتاژ ان ها صفر می شود که براساس همین ترتیب اتصال A و B به زمین جهت چرخش را تشخیص می دهیم .

دیسک روتاری انکودر

همان طور که در شکل بالا می بینید با چرخش دیسک در جهت عقربه های ساعت ابتدا A و سپس پایه B با بخش رسانی دیسک یعنی GND  برخورد می کند و در صورتی که برعکس بچرخد یعنی خلاف عقربه های ساعت بچرخد ابتدا B و سپس A با زمین تماس پیدا خواهند کرد و این تمام چیزی است که برای راه اندازی روتاری انکودر Rotary Encoder به آن نیاز داریم .

پایه های A و B به شیوه ای قرار داده شده اند که چرخش شفت روتاری انکودر با ترتیب خاصی به GND وصل شوند که در سیگنال خروجی دو سیگنال خروجی از A و B با هم دیگر اختلاف فاز 90 درجه داشته باشند . با در نظر گرفتن سیگنال پایه B زمانی که پایه A در حال تغییر است می توانیم جهت چرخش را تشخیص دهیم .

  • به عنوان مثال اگر سیگنال پایه A تغییر کند و مقدار خروجی A با B برابر نباشد یعنی روتاری انکودر در جهت عقربه های ساعت چرخانده شده

چرخش روتاری به صورت ساعت گرد

  • و اگر سیگنال پایه A تغییر کند و مقدار خروجی A با B برابر باشد یعنی روتاری انکودر در جهت عکس عقربه های ساعت چرخانده شده

چرخش روتاری انکودر در جهت عکس عقربه های ساعت

با استفاده از همین اصول به راحتی با استفاده از انواع میکرو و آردوینو و … می توانیم روتاری انکودر را راه اندازی و از آن استفاده کنیم . در آموزش آموزش کامل کار با روتاری انکودر به صورت کامل شما را با سخت افزار و شیوه راه اندازی آن آشنا خواهیم کرد.

شباهت و تفاوت روتاری انکودر با ولوم :

روتاری انکودر شاید از جهت کاربرد و شکل ظاهری مشابه ولوم باشد ولی از نظر عملکرد کاملا با آن متاوت است . ولوم یک مقاومت متغیر هست که با چرخش شفت مقاومت خروجی پایه ها تغییر پیدا می کند و خروجی آن آنالوگ است ولی روتاری انکودر یک نورع کلید می باشد که باچرخش شفت ترتیب قطع و صل کلید های A و B تغییر می کند و سیگنال تولیدی دیجیتال است یعنی خروجی 0 یا 1 می باشد .

پایه های روتاری انکودر rotary encoder

در صورتی که بخواهید از خود قطعه استفاده کنید ترتیب پایه ها مانند شکل زیر می باشد و برای اتصال به آردوینو یا هر نوع میکروی دیگری باید طبق شماتیک موجود در تصویر زیر آن را پیاده کنید .

GND :  این پایه به زمین مدار وصل می شود

VCC : این پایه به 5 ولت وصل می شود

SW : خروجی کلید که باید با یک مقاومت 10 کیلو به pull-up شود

B : خروجی سیگنال  B

A : خروجی سیگنال A

اگر بخواهید از ماژول روتاری انکودر استفاده کنید کارتان کمی آسان تر می شود . در ماژول ها یک هدر برای روتاری انکودر طراحی می شود که طبق شماتیک بالا انکودر روی یک برد کوچک قرار می گیرد و با استفاده از پین هدر هایی پایه ها را روی مدار برد قرار می دهید که هم به راحتی به برد وصل شود و هم بتوان روی برد بورد از آن استفاده کرد . در شکل زیر یک نوع نوع ماژول روتاری انکودر را مشاهده می کنید . سایر ماژول ها نیز پایه  به همین شکل است فقط ممکن هست نام پایه ها و شکل برد با هم دیگر متفاوت باشد ولی شیوه فعال سازی همه مانند یکدیگر است .

پایه های روتاری انکودر rotary encoder

GND :  این پایه به زمین مدار وصل می شود

+ : این پایه به 5 ولت وصل می شود

SW : خروجی کلید که باید با یک مقاومت 10 کیلو به pull-up شود

DT : خروجی سیگنال  B

CLK : خروجی سیگنال A

در زیر معروف ترین ماژول های روتاری انکودر را معرفی می کنیم .

آموزش ماژول روتاری انکودر CJMCU-111 دارای سوئیچ :

این ماژول بسیار با کیفیت و خوش ساخت هست و همراه این ماژول یک سرولوم با کیفیت ارائه میشه . ماژول دارای 4 پایه GND ، VCC ، BB ، GA است .  این ماژول کمی قیمت بالایی دارد و متاسفانه میکرو سویچ فشاری این انکودر پین مجزا نداره و طرز کارش به این صورته که خروجی GA رو 2.5 ولت میکند که ما موفق به استفاده از میکروسویچ نشدیم . در صورتی که به کلید آن نیاز دارید از تهیه ماژول روتاری انکودر CJMCU-111 خودداری کنید .

عملکرد پایه ها به شکل زیر است

GND :  این پایه به زمین مدار وصل می شود

VCC : این پایه به 5 ولت وصل می شود

BB : خروجی سیگنال  B

GA : خروجی سیگنال A و میکرو سویچ

آموزش ماژول روتاری انکودر مدل KY-040 دارای سوئیچ

آموزش ماژول روتاری انکودر مدل KY-040 دارای سوئیچ

ماژول روتاری انکودر مدل KY-040 یکی از معروف ترین و به صرفه ترین ماژول های روتاری انکودر است که به راححتی پیدا می شود و قیمت مناسبی هم دارد (تقریبا نصف قیمت ماژول CJMCU-111) . این ماژول دارای پایه اختصاصی برای میکرو سویچ فشاری است و استفاده از آن بسیار راحت می باشد . تنها ایرادی که می توان گرفت پین هدر آن می باشد که بهتر بود از پین هدر صاف زیر برد استفاده میشد تا برای کار با برد بورد راحت تر بود ولی به راحتی می توان همین پین هدر رایت رو برداشت و یک پین هدر صاف به آن لحیم کرد .

عملکرد پایه ها به شکل زیر است

GND :  این پایه به زمین مدار وصل می شود

+ : این پایه به 5 ولت وصل می شود

SW : خروجی میکروسویچ

DT : خروجی سیگنال  B

CLK : خروجی سیگنال A

آموزش ماژول روتاری انکودر مدل FZ0534 دارای سوئیچ

ماژول روتاری انکودر مدل FZ0534 هم طراحی با کیفتی داره و همراه با یک سر ولوم ارائه میشه کمی قیمتش از ماژول روتاری انکودر مدل KY-040 بیشتر هست ولی کیفیت خوبی داره و راحت روی برد بورد سوار میشه و برای تست و طراحی بسیار خوب هست . این ماژول هم پایه اختصاصی برای میکرو سویچ داره و از نظر عملکردی شبیه ماژول روتاری انکودر مدل KY-040 است

عملکرد پایه ها به شکل زیر است

GND :  این پایه به زمین مدار وصل می شود

S1 : خروجی سیگنال A

S2 : خروجی سیگنال  B

KEY : خروجی میکروسویچ که در حالت عادی 1 هست و با فشردن شفت ، خروجی آن 0 می شود .

5V : این پایه به 5 ولت وصل می شود

 

این سه موردی که معرفی شد در بازار به راحتی پیدا می شود و قیمت مناسبی نیز دارند . البته این نکته را باید بگم خرید خود قطعه بدون هدر بسیار با صرفه تر و ارزان تر هست و ازادی بیشتری برای استفاده از آن خواهید داشت . استفاده از ماژول تنها کار را برای ما راحت تر می کند .

آموزش کامل کار با روتاری انکودر  rotary encoder در آردوینو

در آموزش کامل کار با روتاری انکودر فرقی نداره چه مدلی از روتاری انکودر رو تهیه کردید و ماژول شما چه شکلی است و نام پایه ها چی هست . هر مدلی که تهیه کردید رو طبق شماتیک زیر به آردوینو وصل کنید

شماتیک وصل کردن روتاری انکودر به برد آردوینو Arduino :

شماتیک وصل کردن روتاری انکودر به برد آردوینو Arduino

چون استفاده از آردوینو  روی برد بورد راحت است ما از آن برای این آموزش استفاده کردیم و همچنین ماژولی که برای شماتیک مورد استفاده قرار دادیم ماژول KY-040 می باشد .


سورس کد آردوینو برای راه اندازی روتاری انکودر

#define key 5
#define outputA 6
#define outputB 7
int dataA;
int dataB;
int dataKey;
int lastA;
void setup() {
  Serial.begin(9600);
  pinMode(key, INPUT);
  pinMode(outputA, INPUT);
  pinMode(outputB, INPUT);
  lastA = digitalRead(outputA);  // 1
}
void loop() {
  dataA = digitalRead(outputA);  // 1
  dataB = digitalRead(outputB);
  dataKey = digitalRead(key);
  if (dataKey == 0) {
    Serial.println("press btn");
    delay(300);
  }
  if (dataA != lastA) {
    if (dataA != dataB) {
      Serial.println("Left");
    } else {
      Serial.println("Right");
    }
  }
  lastA = dataA;  // 1
}
سوالات متداول و پرتکرار در باره این مطلب
آیا می توان از روتاری انکودر بجای ولوم استفاده کرد؟

خیر ، سخت افزار ولوم و روتاری انکودر کاملا با هم تفاوت دارد و فقط از نظر ظاهری شبیه به هم هستند ولی می توانند عملکرد مشابهی را با ان ها پیاده کرد

تفاوت روتاری انکودر و ولوم در چیست ؟

روتاری انکودر یک کلید دیجیتالی است ولی ولوم یک مقاومت متغیر می باشد و تنها از نظر ظاهری شبیه هم هستند

روتاری انکودر چه کاربرد هایی دارد ؟

از روتاری انکودر می توان برای تنظیم سطح صدا ، کنترل منو تجهیزات ، کنترل انواع موتور و .... استفاده نمود .

امتیاز و دیدگاه کاربران

ارسال دیدگاه
برای ارسال دیدگاه لازم است ابتدا وارد حساب کاربری خود شوید

محمد

سلام استاد
میتونیم بجای اینکه ;lastA = digitalRead(outputA) رو توی void setup قرار بدیم از cleur استفاده کنیم یا نه

سلام کدی که داخل setup قرار میگیره فقط یکبار اجرا میشه و این نکته رو در نظر داشته باشید.

کامران محمودزاده
پاسخ
علی

درود بر شما
از وقت و انرژی و از حوصله زیادی که بایت ارائه این آموزش گذاشتین، یک دنیا ممنونم
زیبا ترین و کامل ترین آموزشی بود که در این زمینه دیدم و وظیفه خودم دونستم تا ازتون تشکر و قدردانی کنم
بینهایت سپاسگزارم

با سلام و عرض ادب، خوشحالم که این آموزش توانسته به شما کمک کند و مورد پسندتان واقع شود. هدف اصلی من، ارائه آموزش‌های باکیفیت و مفید به همه علاقه‌مندان به حوزه الکترونیک و برنامه نویسی است.

کامران محمودزاده
پاسخ
علیرضا

سلام با تشکر از توضیحات مفیدتون .میشه لطفا راه اندازی انکودر رو با وقفه خارجی بحالت any change هم یه برنامه بنویسید .در این حالتی که شما نوشته اید بانس کلید دیده نشده و یا اگر هم دیده بشه دقت ان کمتر ازحالت راه اندازی با وقفه است .

تشکر از توجهتون. کاملا درست گفتید که استفاده از وقفه خارجی به حالت Any Change می تواند باعث ایجاد نویز و کاهش دقت در خواندن انکودر شود. این مثال رو تست کنید

const byte encoderPinA = 2;
const byte encoderPinB = 3;

volatile int encoderValue = 0;
volatile bool lastStateA = LOW;
volatile bool lastStateB = LOW;

void setup() {
pinMode(encoderPinA, INPUT_PULLUP);
pinMode(encoderPinB, INPUT_PULLUP);

attachInterrupt(digitalPinToInterrupt(encoderPinA), handleInterrupt, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoderPinB), handleInterrupt, CHANGE);
}

void loop() {
// کارهای اصلی برنامه
Serial.println(encoderValue);
delay(100);
}

void handleInterrupt() {
bool newStateA = digitalRead(encoderPinA);
bool newStateB = digitalRead(encoderPinB);

// دیرینه سازی
delayMicroseconds(10);

// بررسی تغییر وضعیت
if (newStateA != lastStateA) {
if (newStateB != lastStateB) {
// هر دو پین تغییر کرده اند، جهت چرخش را تعیین کنید
if (newStateA == HIGH) {
encoderValue++;
} else {
encoderValue--;
}
}
}

lastStateA = newStateA;
lastStateB = newStateB;
}

کامران محمودزاده
پاسخ
علیرضا

بسیار عالی بود .سپاس.??

خواهش می‌کنم. خوشحالم که توانستم به شما کمک کنم.

کامران محمودزاده
پاسخ
احمدرضا

درود سپاس جناب محمودزاده اتفاقا یدونه دارم نمیدونستم کارش چیه، در ویدئو بسیار کامل، ساده و شفاف آموزش ارائه کردید ، بجای فشردن پیاپی کلید باچرخش بچپ و راست سرعت کار بالا میره خداقوت

سلام استاد بزرگوار سپاس از لطف شما، بله روتاری انکودر کار رو برای ما ساده می کنه و بحای اینکه کلی کلید به مدار اضافه کنیم با یک انکودر کار انجام مبشه .

کامران محمودزاده
پاسخ
محسن

سلام.ممنون از توضیحات خوبتون
.من زیاد در مورد ماژول روتاری اینکودر اطلاعات ندارم فقط یک سوال
این ماژول باید با استپ موتور نصب شود یا باره موتور وارمیچری
برای دستگاه اتومات برش سیم به طولهای و تعداد متفاوت میتوان از این ماژول و برنامه اردینیو که در سایت دادین استفاده کرد.بازم ممنونم

سلام وقتتون بخیر ، این کاژول برای کار با دست هست و برای چرخش دائمی با موتور دوام نمی آورد . برای فعالیت مورد نظر شما روتاری انکودر آتونیکس چرخشی مورد نیاز است . در گوگل کلمه روتاری انکودر آتونیکس رو سرج کنید

کامران محمودزاده
پاسخ
علی

سلام وقت بخیر
تشکر و سپاس خیلی واضح و عالی توضیح فرمودید.
اگر بخواهیم یک خروجی از برد بگیریم و به یک دستگاه صوتی مثلا مانیتورهای اتومبیل که در آنها یک پورت بانام key1/2 وجود دارد وصل کنیم از کدام پایه برد استفاده کنیم؟

سلام و عرض ادب، متاسفانه در رابطه با پورت بانام key1/2 اطلاعی ندارم

کامران محمودزاده

سپاس جناب محمود زاده

سوال : منظور ازاین عبارت چیست؟
SW: خروجی کلید که باید با یک مقاومت 10 کیلو به pull-up شود

علی

سلام و سپاس
۱-نتیجه مدار فوق که شماتیک آنرا ترسیم نموده اید چیست و کجا میتوان مشاهده کرد؟
۲-از این مدار چطور میتوان برای کم وزیاد کردن صدای یک منبع صوتی نظیر رادیو یا مانیتور اتومبیل استفاده کرد؟

توضیح: در اولین سوال منظور پورتی با نام key1 یا key2 است.در اتصالات مانیتورهای ماشین یک ورودی با همین نام برای اتصال وسایلی به مانیتور نظیر کروزکنترل فرمان که درآن دکمه‌هایی برای صدا و عقب و جلو کردن ترکهای درحال پخش و … تعبیه شده است.
با استفاده از مدار فوق و اتصال آن به مانیتور و تتظیماتی که در نرم افزار مانیتور پیش بینی شده میتوان بااستفاده از روتاری انکودر صدای مانیتور را کم و زیاد کرد. لینک زیر را ملاحظه فرمایید
https://www.setnfix.com/2021/07/car-steering-wheel-control-unit-with.html

علی

سلام و سپاس جناب محمودزاده
به نظر حضرتعالی بجای ساختن مدار فوق آیا میتوان از آردینو نانو و ماژول روتاری انکودر KY-040 استفاده کرد؟
لطفا راهنمایی لازم بفرمائید.

علی

سلام ، این پین خروجی کلید انکودر هست . زمانی که شفت انکودر را فشار دهیم این پایه فعال می شود

کامران محمودزاده

با سلام ، نتیجه رو باید در سریال مانیتور آردوینو مشاهده کرد و به صورت نوشته هست . باید بر اساس عملکرد اون سیستم برنامه نویسی بشه . در لینکی که فرستادین خیلی ساده اون چیزی که مدنظر شما هست رو با آردوینو پیاده کرده کافی هست اونو درست کنید .

کامران محمودزاده

سلام ، تفاونی نداره می تونید از اردوینو نانو و هر نوع انکودر دیگری نیز استفاده کنید . طبق شماتیک پایه های مرتبط رو بهم وصل کنید . لازم هست با اردوینو آشنایی داشته باشید تا بهتر بتوانید مطلب را درک کنید

کامران محمودزاده
پاسخ
محمد

بسیار عالی – بهتر از هر جای دیگه آموزش داده شده بود

خوشحال هستیم که مطلب مورد توجه شما بوده است .

کامران محمودزاده
پاسخ
×
آموزش رایگان
×
به سبد خرید اضافه شد
×
به سبد خرید اضافه شد