فهرست مطالب:

رمزگذار روتاری - درک و استفاده از آن (آردوینو/دیگر ΜController): 3 مرحله
رمزگذار روتاری - درک و استفاده از آن (آردوینو/دیگر ΜController): 3 مرحله

تصویری: رمزگذار روتاری - درک و استفاده از آن (آردوینو/دیگر ΜController): 3 مرحله

تصویری: رمزگذار روتاری - درک و استفاده از آن (آردوینو/دیگر ΜController): 3 مرحله
تصویری: 1128-IT_PL Meggie, TIME TIME - Ipnosi Esoterica ∞ Lucio Carsi 2024, جولای
Anonim
رمزگذار روتاری - درک و استفاده از آن (آردوینو/ΜController دیگر)
رمزگذار روتاری - درک و استفاده از آن (آردوینو/ΜController دیگر)

رمزگذار دوار یک دستگاه الکترومکانیکی است که حرکت چرخشی را به اطلاعات دیجیتال یا آنالوگ تبدیل می کند. می تواند در جهت عقربه های ساعت یا خلاف جهت عقربه های ساعت بچرخد. دو نوع رمزگذار چرخشی وجود دارد: رمزگذار مطلق و نسبی (افزایشی).

در حالی که یک رمزگذار مطلق مقدار متناسب با زاویه شفت فعلی را خروجی می دهد ، یک رمزگذار افزایشی مرحله شفت و جهت آن را نشان می دهد. (در این مورد ما یک رمزگذار افزایشی داریم)

رمزگذارهای چرخشی محبوبیت بیشتری پیدا می کنند زیرا شما می توانید از دو عملکرد در یک ماژول الکتریکی استفاده کنید: یک کلید ساده برای تأیید عملکردها و رمزگذار چرخشی برای حرکت ، به عنوان مثال. از طریق یک منو

یک رمزگذار چرخشی افزایشی دو سیگنال خروجی تولید می کند در حالی که محور آن در حال چرخش است. بسته به جهت ، یکی از سیگنال ها به دیگری منتهی می شود. (به پایین مراجعه کنید)

مرحله 1: درک داده های خروجی

درک داده های خروجی
درک داده های خروجی

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

حالا ما فقط باید این را روی µController خود (من از آردوینو نانو استفاده کردم) پیاده سازی کنیم.

مرحله 2: ساختن مدار

ساختن مدار
ساختن مدار
ساختن مدار
ساختن مدار

همانطور که قبلاً توضیح دادم ، خروجی ها یک پله بالا و پایین ایجاد می کنند. برای به دست آوردن یک HIGH تمیز در پین داده A و B میکروکنترلر ، ما باید مقاومت های Pull-Up را اضافه کنیم. پین C معمولی مستقیماً برای طرف LOW به زمین می رود.

برای به دست آوردن اطلاعات در مورد سوئیچ داخلی (دکمه) ما از دو پین دیگر استفاده می کنیم. یکی از آنها به VCC و دیگری به یک پین داده از μController می رود. همچنین باید یک Pull-Down Resistor به پین داده اضافه کنیم تا یک LOW تمیز بدست آید.

همچنین ممکن است از مقاومتهای Pull-Up و Pull-Down داخلی μC Controller خود استفاده کنید!

در مورد من pinout به نظر می رسد:

  • +3 ، 3V => +3 ، 3V (آردوینو) (همچنین +5 ولت ممکن است)
  • GND => GND (آردوینو)
  • A => Pin10
  • B =>

    سنجاق کردن

    11

  • C => GND
  • SW =>

    سنجاق کردن

    12

مرحله 3: نوشتن کد

int pinA = 10 ؛ // سوئیچ داخلی A int pinB = 11؛ // سوئیچ داخلی B int pinSW = 12؛ // سوئیچ (رمزگذار فشرده) int encoderPosCount = 0؛ // از صفر شروع می شود ، در صورت تمایل تغییر دهید

int positionval؛

bool switchval؛ int mrotateLast؛ int mrotate؛

void setup () {

int mrotateLast = digitalRead (pinA)؛ Serial.begin (9600)؛ تأخیر (50) ؛ }

void loop () {readencoder ()؛ if (readwitch () == 1) {Serial.println ("تغییر = 1")؛ }}

int readencoder () {

mrotate = digitalRead (pinA) ؛ if (mrotate! = mrotateLast) {// دستگیره در حال چرخش if (digitalRead (pinB)! = mrotate) {// سوئیچ A ابتدا تغییر کرد -> چرخاننده در جهت عقربه های ساعت رمزگذارPosCount ++ ؛ Serial.println ("چرخش در جهت عقربه های ساعت") ؛ } else {// سوئیچ B ابتدا تغییر کرد-> چرخاننده جهت خلاف جهت عقربه های ساعت encoderPosCount-- ؛ Serial.println ("در جهت خلاف جهت عقربه های ساعت چرخانده می شود") ؛ }

Serial.print ("موقعیت رمزگذار:") ؛ Serial.println (encoderPosCount) ؛ Serial.println ("")؛ } mrotateLast = mrotate؛ return encoderPosCount؛ } bool readwitch () {

if (digitalRead (pinSW)! = 0) {// کلید فشار داده شده است

while (digitalRead (pinSW)! = 0) {} // سوئیچ در حال حاضر فشرده است switchval = 1؛ } else {switchval = 0؛} // switch سوئیچ بازگشتی فشرده نشده است. }

حالا می توانید رمزگذار را بچرخانید و متغیر encoderPosCount اگر در جهت عقربه های ساعت بچرخید و اگر در جهت عقربه های ساعت بچرخید ، شمارش معکوس می کند.

خودشه! به سادگی و مفید.

با خیال راحت کد را تغییر دهید و اجرا کنید. می توانید آن را در پروژه خود پیاده سازی کنید.

همچنین یک پروژه LED را بارگذاری می کنم که در آن از رمزگذار برای تنظیم روشنایی LED های خود استفاده کردم.

توصیه شده: