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

  • ۹۰ بازدید

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

Rotary Encoder

این برد بریک اوت انکودر چرخشی دارای پنج پین است.

GND → Ground Supply
+ → +5V Power Supply
SW → Button Switch
DT → Encoder Pin B
CLK → Encoder Pin A

هنگامی که شافت در جهت ساعت چرخانده شود ، پالس خروجی در پایه رمزگذار A با 90 درجه اختلاف از فاز پایه رمزگذار B تولید می شود.

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

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

رابط روتاری انکودر آردوینو

پایه های منبع تغذیه Rotary Encoder را به برد آردوینو به صورت + به 5 ولت و Gnd را به Gnd وصل کنید. سپس پین CLK (Encoder out A) را به پین دیجیتال آردوینو D2 و پایه DT (Encoder out B) را به پایه دیجیتال D1 وصل کنید. پس از تکمیل اتصال، طرح زیر را برای دریافت زاویه و موقعیت رمزگذار چرخشی در مانیتور سریال بارگذاری کنید.

کد اسکچ برای روتاری انکودر آردوینو

#define encoderOutA 2 // CLK pin of Rotary Enocoder
#define encoderOutB 1 // DT pin of Rotary Enocoder
 
 int counter = 0; 
 int presentState;
 int previousState;  
 void setup() { 
   pinMode (encoderOutA,INPUT);
   pinMode (encoderOutB,INPUT);
   
   Serial.begin (9600);
      previousState = digitalRead(encoderOutA);   // Get current state of the encoderOutA
 } 
 void loop() { 
   presentState = digitalRead(encoderOutA); 
      if (presentState != previousState)
      {     
          if (digitalRead(encoderOutB) != presentState) 
          { 
       counter ++;
     } 
     else {
       counter --;
     }
     Serial.print("Position: ");
     Serial.println(counter);
   } 
   previousState = presentState; // Replace previous state of the encoderOutA with the current state
 }

در کد آردوینو ابتدا پین های خروجی را تعریف کرده و counter را 0 مقداردهی اولیه کنید، سپس متغیرهای حالت فعلی و قبلی را اعلام کنید. با استفاده از حلقه شرط “IF”، وضعیت فعلی رمزگذار چرخشی را دریافت کرده و با حالت قبلی مقایسه کنید. اگر تغییری وجود نداشته باشد، شمارش ثابت می ماند، در غیر این صورت مقدار شمارش برای چرخش عقربه ساعت افزایش می یابد و برای چرخش عقربه ساعت کاهش می یابد.