انکودرهای چرخشی برای عملیات شمارش مفید هستند، زاویه چرخش را به سیگنال دیجیتال شمارش تبدیل می کنند. می توانند بدون هیچ محدودیتی 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”، وضعیت فعلی رمزگذار چرخشی را دریافت کرده و با حالت قبلی مقایسه کنید. اگر تغییری وجود نداشته باشد، شمارش ثابت می ماند، در غیر این صورت مقدار شمارش برای چرخش عقربه ساعت افزایش می یابد و برای چرخش عقربه ساعت کاهش می یابد.