انکودرهای چرخشی برای عملیات شمارش مفید هستند، زاویه چرخش را به سیگنال دیجیتال شمارش تبدیل می کنند. می توانند بدون هیچ محدودیتی 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 وصل کنید. پس از تکمیل اتصال، طرح زیر را برای دریافت زاویه و موقعیت رمزگذار چرخشی در مانیتور سریال بارگذاری کنید.
کد اسکچ برای روتاری انکودر آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #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”، وضعیت فعلی رمزگذار چرخشی را دریافت کرده و با حالت قبلی مقایسه کنید. اگر تغییری وجود نداشته باشد، شمارش ثابت می ماند، در غیر این صورت مقدار شمارش برای چرخش عقربه ساعت افزایش می یابد و برای چرخش عقربه ساعت کاهش می یابد.