اتصال روتاری انکودر به رزبری پای پیکو
محتویات
در این مقاله نحوه اتصال روتاری انکودر به میکروکنترلر Raspberry Pi Pico را بررسی خواهیم کرد. انکودرهای چرخشی دستگاه های ورودی محبوبی هستند که می توانند برای اندازه گیری و کنترل موقعیت و چرخش استفاده شوند. Raspberry Pi Pico با پینها و قابلیتهای GPIO خود، بستری عالی برای اتصال یک رمزگذار چرخشی به پروژههای شما فراهم میکند. در این راهنمای گام به گام، فرآیند اتصال یک رمزگذار چرخشی به Raspberry Pi Pico و نوشتن کد برای خواندن و تفسیر ورودی آن را بررسی خواهیم کرد.
تفاوت بین روتاری انکودر و پتانسیومتر
اگرچه پتانسیومترها و روتاری انکودر ها ممکن است شبیه به هم به نظر برسند، اما هر دو بسیار متفاوت از یکدیگر هستند.
تفاوت اصلی بین رمزگذارهای چرخشی و پتانسیومتر کاربرد آن است. از رمزگذارهای چرخشی در جایی استفاده می شود که باید متوجه جهت تغییر شفت دستگیره شویم، در حالی که پتانسیومترها در جایی که قرار است موقعیت دقیق دستگیره اندازه گیری شود استفاده می شود.
روتاری انکودری میتوانید به صورت 360 درجه بدون محدودیت هر چند بار بچرخد اما پتانسیومتر زاویه چرخش محدود حدود 270 درجه ای دارد.
تصور کنید یک دستگیره دارید که می توانید آن را در هر جهت بچرخانید. رمزگذار چرخشی مانند یک دستگاه هوشمند است که می تواند حرکت و چرخش آن دستگیره را شناسایی و اندازه گیری کند. می تواند به شما بگوید که دستگیره چقدر چرخیده است و چرخش آن در کدام جهت بوده است.
نحوه کار روتاری انکودر
یک رمزگذار چرخشی معمولاً از یک محور چرخان و دو قسمت به نامهای کانالهای “A” و “B” تشکیل شده است. همانطور که دستگیره را می چرخانید، این کانال ها یک سری سیگنال های الکتریکی تولید می کنند که رمزگذار می تواند آنها را درک کند. از این سیگنال ها برای پیگیری موقعیت و حرکت دستگیره استفاده می شود.
نکته مهم در مورد رمزگذار چرخشی این است که می تواند بازخورد دقیق و کاملی در مورد میزان چرخاندن دستگیره ارائه دهد. یعنی می تواند حتی کوچکترین چرخش ها را تشخیص دهد، حتی در حال چرخاندن دستگیره به صورت خیلی آرام یا سریع باشید. همچنین می تواند تشخیص دهد که چه زمانی مانند یک دکمه فشار داده میشود.
رمزگذارهای چرخشی معمولاً در پروژه های مختلف استفاده می شوند. به عنوان مثال، آنها را می توان در دستگیره های کنترل صدا در تجهیزات صوتی و همچنین در سیستم های ناوبری، ماشین آلات صنعتی و رباتیک یافت. آنها یک راه راحت و قابل اعتماد برای ورود حرکات چرخشی به سیستم های الکترونیکی ارائه می دهند.
توضیحات پین های روتاری انکودر
در اینجا توضیح هر پین آمده است:
- SW (سوئیچ): این پین مربوط به کلید فشاری روی رمزگذار چرخشی است. هنگامی که دکمه فشار داده می شود، این پین معمولا یک سیگنال منطقی LOW را خروجی می دهد که نشان دهنده فشرده شدن دکمه است.
- VCC (ولتاژ مثبت): این پایه به ولتاژ تغذیه مثبت مدار متصل است که به آن Vcc می گویند.
- GND (زمین): این پایه به زمین یا ولتاژ 0 ولت مدار متصل می شود و GND مشترک را برای رمزگذار چرخشی فراهم می کند.
- DT (داده) یا کانال B: این پین سیگنال های اضافی را برای کمک به تعیین جهت چرخش ارائه می دهد. با تجزیه و تحلیل ترتیب و زمان سیگنال های این پایه و پایه CLK می توان جهت چرخش را تعیین کرد.
- CLK (ساعت) یا کانال A: این پین پالس ها یا سیگنال هایی را خروجی می دهد که چرخش رمزگذار را نشان می دهد. هر پالس مربوط به مقدار خاصی از چرخش در جهت عقربههای ساعت یا خلاف جهت عقربههای ساعت است.
مدار راه اندازی روتاری انکودر با رزبری پای پیکو
- پایه VCC انکودر چرخشی را به پایه 3.3 ولت روی Pico وصل کنید.
- پایه GND انکودر چرخشی را به یک پایه GND روی Pico وصل کنید.
- پین DATA رمزگذار چرخشی را به یک پایه ورودی دیجیتال روی Pico وصل کنید (به عنوان مثال، پایه 25).
- پین CLK رمزگذار چرخشی را به یک پایه ورودی دیجیتال دیگر در Pico (به عنوان مثال، پایه 24) وصل کنید.
- اگر روتاری انکودر شما یک سوئیچ داخلی دارد، میتوانید پایه SW را به یک پایه ورودی دیجیتال روی برد پیکو (به عنوان مثال، پایه 26) وصل کنید.
کد راه اندازی روتاری انکودر با برد پیکو
شما باید کد را روی پیکو آپلود کنید. اگر از قبل میدانید چگونه این کار را انجام دهید، میتوانید این آموزش را ادامه بدهید. اما اگر نه، مقاله آموزش برنامه نویسی رزبری پای پیکو با میکرو پایتون را مشاهده کنید یا دوره برد پیکو را ببینید.
کد کامل در انتهای صفحه قرار داده شده است و در اینجا قسمت های مهم کد را توضیح میدهیم.
import time from rotary_irq_rp2 import RotaryIRQ from machine import Pin
این خطوط ماژول های لازم را برای اجرای کد فراخوانی می کنند.
SW = Pin(20, Pin.IN, Pin.PULL_UP)
این خط یک شی Pin به نام SW را روی پایه GPIO 20 تنظیم می کند. این شیء به عنوان یک پایه ورودی با یک مقاومت پول آپ پیکربندی شده است.
r = RotaryIRQ(pin_num_clk=18, pin_num_dt=19, min_val=0, reverse=False, range_mode=RotaryIRQ.RANGE_UNBOUNDED)
این خط یک نام شی RotaryIRQ ایجاد می کند و پین ها و پارامترهای رمزگذار چرخشی را مشابه کد قبلی تنظیم می کند.
val_old = r.value()
این خط متغیر val_old را با مقدار اولیه موقعیت رمزگذار چرخشی تنظیم می کند.
while True: try: val_new = r.value() if SW.value() == 0: print("Button Pressed") print("Selected Number is:", val_new) while SW.value() == 0: continue if val_old != val_new: val_old = val_new print('result =', val_new) time.sleep_ms(50) except KeyboardInterrupt: break
این حلقه اصلی برنامه است. به طور مداوم مقدار روتاری انکودر را با استفاده از r.value() می خواند و آن را در val_new ذخیره می کند.
اگر دکمه متصل به پین 20 (SW) فشار داده شود (مقدار 0)، “Button Pressed” و مقدار فعلی رمزگذار چرخشی (val_new) را پرینت می کند. تا زمانی که دکمه را نگه داشته اید، به چاپ مقدار ادامه می دهد (SW.value() == 0). اگر تغییری در مقدار رمزگذار ایجاد شود (val_old با val_new متفاوت است)، val_old را بهروزرسانی میکند و مقدار جدید را چاپ میکند.
time.sleep_ms(50) برنامه را به مدت 50 میلی ثانیه قبل از تکرار بعدی حلقه متوقف می کند. اگر وقفه صفحه کلید (Ctrl+C) تشخیص داده شود، برنامه از حلقه خارج می شود.
خروجی این کد به صورت زیر است:
در بالا می بینید که خروجی دقیق با فشار دادن دکمه مرکزی چاپ می شود.
شما میتوانید با استفاده از روتاریانکودر یک کنترل گر برای سروو موتور یا سرعت موتور DC بسازید. پروژه های زیادی را میتوانید با استفاده از روتاری انکودر حرفه ای تر کنید. اگر سوالی دارید در قسمت نظرات مطرح کنید.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود