فهرست مطالب:

آموزش رمزگذار روتاری با آردوینو: 6 مرحله
آموزش رمزگذار روتاری با آردوینو: 6 مرحله

تصویری: آموزش رمزگذار روتاری با آردوینو: 6 مرحله

تصویری: آموزش رمزگذار روتاری با آردوینو: 6 مرحله
تصویری: LDmicro 19: Rotary Encoder Menu Navigation (Microcontroller PLC Ladder Programming with LDmicro) 2024, جولای
Anonim
آموزش رمزگذاری روتاری با آردوینو
آموزش رمزگذاری روتاری با آردوینو

رمزگذار روتاری یک قطعه الکترونیکی است که می تواند حرکت و موقعیت را هنگام چرخش کنترل کند. رمزگذار روتاری از سنسورهای نوری استفاده می کند که می توانند هنگام چرخش رمزگذار چرخشی ، پالس تولید کنند. استفاده از رمزگذار چرخشی معمولاً به عنوان مانیتور حرکتی مکانیکی یا روباتیک نیز می تواند برای انتخاب منو روی صفحه نمایش استفاده شود. رمزگذار روتاری دارای دو خروجی است به طوری که می تواند بین چرخش منفی (CW) و مثبت (CCW) تمایز قائل شود و همچنین دارای یک دکمه است.

مرحله 1: جریان پالس رمزگذار روتاری

جریان پالس رمزگذار روتاری
جریان پالس رمزگذار روتاری

جریان پالس ایجاد شده توسط رمزگذار دوار زیر مانند تصویر بالا است.

مرحله 2: Pinout از Rotary Encoder

Pinout از Rotary Encoder
Pinout از Rotary Encoder

توضیح:

  • GND GND
  • + 5 ولت
  • دکمه SW رمزگذار چرخشی هنگام فشردن
  • DT Data
  • CLK Data 2

یکی از پایه های DT یا CLK باید به پای وقفه Arduino Uno وصل شود ، یا هر دو DT و CLK به پین وقفه متصل هستند.

مرحله 3: شماتیک

شماتیک
شماتیک
  • GND à GND آردوینو Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

مرحله 4: کد

کد
کد

در آموزش زیر ، که به عنوان وقفه استفاده می شود ، PIN 2 Arduino Uno است ، در حالی که PIN 3 فقط به عنوان ورودی معمولی استفاده می شود.

#تعریف رمزگذار0PinA 2 #تعریف رمزگذار0 پینب 3 #تعریف رمزگذار0Btn 4 رمزگذار int int0Pos = 0 ؛ void setup () {Serial.begin (9600)؛ pinMode (encoder0PinA ، INPUT_PULLUP) ؛ pinMode (encoder0PinB ، INPUT_PULLUP) ؛ pinMode (encoder0Btn ، INPUT_PULLUP) ؛ attachInterrupt (0 ، doEncoder ، CHANGE) ؛ } int valRotary، lastValRotary؛ حلقه خالی () {int btn = digitalRead (encoder0Btn) ؛ Serial.print (btn)؛ Serial.print ("")؛ Serial.print (valRotary) ؛ if (valRotary> lastValRotary) {Serial.print ("CW")؛ } if (valRotary {

Serial.print ("CCW") ؛

} lastValRotary = valRotary؛ Serial.println ("")؛ تأخیر (250) ؛ } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++؛ } else {encoder0Pos-- ؛ } valRotary = encoder0Pos/2.5؛ }

در خط 10 طرح بالا برای فعال کردن وقفه پین 2 Arduino Uno استفاده می شود. در عملکرد "doEncoder" از رمزگذار چرخشی محاسبه می شود. اگر مقدار DT و CLK (وقفه پین Arduino Uno) یکسان باشد ، متغیر "encoder0Pos" افزایش / اضافه می شود ، علاوه بر آن شرایط ، متغیر "encoder0Pos" کاهش می یابد.

مرحله 5: توضیح

مقدار ValRotary مقدار تعداد مراحل در حال اجرا است. مقدار ValRotary از مقدار خواندن رمزگذار سنسور دوار تقسیم بر 2.5 به دست می آید. مقدار 2.5 از آزمایش بدست می آید ، زیرا ممکن است یک مرحله از رمزگذار چرخشی از 1 فراتر رود ، بنابراین بر اساس پرستپ و همچنین تأخیر خواندن بر مقدار آن بر 2.5 تقسیم کنید.

در حالی که در خط 19 - 25 برنامه ای برای تعیین اینکه آیا چرخاننده Cod encoder CW یا CCW است. توضیح خطوط 19 - 25 زمانی است که بازخوانی رمزگذار دوار فعلی بیشتر از داده های چرخشی قبلی است که بعنوان CW بیان شده است. در صورتی که اگر قرائت فعلی از خوانش قبلی کوچکتر باشد ، به عنوان CCW بیان می شود.

مرحله 6: خروجی

خروجی
خروجی

1 = مقدار دکمه شروع چرخشی هنگامی که فشار داده نشده است

توصیه شده: