Toggle Nav

آموزش راه اندازی روتاری انکودر Rotary Encoder با آردوینو

فهرست مطالب

ویژگی های روتاری انکودرهای HN3806-AB

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

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

روتاری انکودرهای سری HN3808-AB دارای دو فاز A و B می‌باشند و در مدلهای 100، 200، 360، 400 و 600  پالس بر دور موجود می‌باشند.

نکته

با تحلیل دو سیگنال خروجی A و B می‌توان به نحوه عملکرد آن پی برد. اگر چرخش در جهت عقربه های ساعت باشد، سیگنال A از سیگنال B جلوتر خواهد بود و بالعکس.

برای نمونه دیتاشیت روتاری انکودر نوری 400 پالس را می توانید از اینجا دانلود کنید.

معرفی پایه های (Pinout) روتاری انکودرهای HN3806-AB

روتاری انکودرهای  HN3806 دارای چهار سیم به رنگ های قرمز، مشکی، سبز، آبی و یک سیم بدون محافظ به نام shield می‌باشد. کاربرد و نام این پایه ها به شرح زیر است:

  • VCC: رنگ قرمز – تغذیه انکودر – 5 تا 24 ولت
  • GND: رنگ مشکی – زمین
  • Phase-A: رنگ سفید – خروجی اول انکودر
  • Phase-B: رنگ سبز – خروجی دوم انکودر

پین اوت (Pinout) این سنسور را می توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
روتاری انکودر HN3806-AB 100 پالس بر دور × 1
روتاری انکودر HN3806-AB 200 پالس بر دور ×
روتاری انکودر HN3806-AB 400 پالس بر دور ×
روتاری انکودر HN3806-AB 600 پالس بر دور ×

نرم افزارهای مورد نیاز

آردوینو IDE
توجه

از هر کدام یک از انواع روتاری انکودرها برای ادامه این آموزش میتوانید استفاده کنید.

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

گام اول: سیم بندی

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

گام دوم : کد

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

    /*
  HN3806-AB-Rotary-Encoder
  modified on 12 oct 2020
  by Amir Mohamad Shojaee @ Electropeak
  https://electropeak.com/learn/

  Based on electricdiylab.com Example
*/

//This variable will increase or decrease depending on the rotation of encoder
volatile long x , counter = 0; 
    
void setup() {
  Serial.begin (9600);
  pinMode(2, INPUT_PULLUP); 
  
  pinMode(3, INPUT_PULLUP); 
   
  attachInterrupt(0, A, RISING);
   
  attachInterrupt(1, B, RISING);
  }
   
  void loop() {
  // Send the value of counter
  if( counter != x ){
  Serial.println (counter);
  x = counter;
  }
  }
   
  void A() {
  if(digitalRead(3)==LOW) {
  counter++;
  }else{
  counter--;
  }
  }
   
  void B() {
  if(digitalRead(2)==LOW) {
  counter--;
  }else{
  counter++;
  }
}

همانطور که مشاهده میکنید خروجی های سنسور به پین های اینتراپت 2 و 3 آردوینو متصل شده اند. دو تابع اینتراپت با لبه بالارونده وظیفه شمارش را بر عهده دارند. در حلقه اصلی نیز این اطلاعات در Serial Monitor  به نمایش گذاشته می‌شود. اگر در جهت عقربه های ساعت چرخیده شود، مقدار عدد کاهش و اگر در خلاف جهت عقربه های ساعت چرخیده شود، مقدار این عدد افزایشی خواهد بود.

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

از این مطلب خوشتان آمد؟

آخرین مطالب و جدیدترین آموزش ها را در ایمیل خود دریافت کنید

آموزش های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *