Mundarija:
- 1 -qadam: Chiqish ma'lumotlarini tushunish
- 2 -qadam: O'chirish sxemasini yarating
- 3 -qadam: Kodni yozish
Video: Rotary Enkoder - Tushuning va ishlating (Arduino/boshqa ontrol Controller): 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Aylanadigan kodlovchi-bu aylanma harakatni raqamli yoki analogli ma'lumotlarga aylantiradigan elektr mexanik qurilma. U soat yo'nalishi bo'yicha yoki teskari yo'nalishda aylanishi mumkin. Aylanadigan kodlovchi ikki xil: absolyut va nisbiy (ortib boruvchi) kodlovchi.
Mutlaq kodlovchi joriy mil burchagiga mutanosib qiymat chiqarsa, ortib boruvchi enkoder milning qadamini va uning yo'nalishini chiqaradi. (Bu holda bizda qo'shimcha kodlovchi mavjud)
Rotary enkoderlari yanada ommalashib bormoqda, chunki siz bitta elektr modulda ikkita funktsiyadan foydalana olasiz: operatsiyalarni tasdiqlash uchun oddiy kalit va navigatsiya uchun aylanadigan kodlovchi, masalan. menyu orqali.
Bosqichli aylanuvchi kodlovchi mil aylanayotganda ikkita chiqish signalini ishlab chiqaradi. Yo'nalishga qarab, signallardan biri boshqasini boshqaradi. (pastga qarang)
1 -qadam: Chiqish ma'lumotlarini tushunish
Ko'rib turganingizdek, enkoder o'qi soat yo'nalishi bo'yicha aylana boshlaganda, A chiqishi avval LOWga tushadi va B chiqishi undan keyin keladi. Ish soat sohasi farqli o'laroq teskari yo'nalishda teskari tomonga buriladi.
Endi biz buni mController -da amalga oshirishimiz kerak (men Arduino Nano -dan foydalanganman).
2 -qadam: O'chirish sxemasini yarating
Yuqorida aytib o'tganimdek, chiqishlar yuqori va past qanot hosil qiladi. A va B ma'lumot pinlarida toza nazorat qilish uchun biz yuqori tortishish rezistorlarini qo'shishimiz kerak. Umumiy pin C LOW yonboshi uchun to'g'ridan -to'g'ri erga tushadi.
Ichki kalit (tugma) haqida ma'lumot olish uchun biz boshqa ikkita pinni ishlatamiz. Ulardan biri VCC -ga, ikkinchisi esa mccontroller ma'lumot piniga o'tadi. Toza LOWni olish uchun biz ma'lumotlar piniga tortiladigan qarshilikni qo'shishimiz kerak.
Bundan tashqari, mController-ning ichki tortish va tortish rezistorlaridan foydalanish mumkin!
Mening vaziyatimda pinout quyidagicha ko'rinadi:
- +3, 3V => +3, 3V (Arduino) (shuningdek +5V bo'lishi mumkin)
- GND => GND (Arduino)
- A => pin 10
-
B =>
Pin
11
- C => GND
-
SW =>
Pin
12
3 -qadam: Kodni yozish
int pinA = 10; // ichki kalit A int pinB = 11; // ichki kalit B int pinSW = 12; // switch (bosilgan Enkoder) int encoderPosCount = 0; // noldan boshlanadi, agar xohlasangiz o'zgartiring
int pozitsiyasi;
bool almashtirish; int mrotateSo'nggi; int mrotate;
bo'sh o'rnatish () {
int mrotateLast = digitalRead (pinA); Serial.begin (9600); kechikish (50); }
void loop () {readencoder (); if (readwitch () == 1) {Serial.println ("Switch = 1"); }}
int readencoder () {
mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// tugmasi aylanayotgan bo'lsa if (digitalRead (pinB)! = mrotate) {// switch A avval o'zgardi -> soat yo'nalishi bo'yicha aylantiruvchi encoserPosCount ++; Serial.println ("soat yo'nalishi bo'yicha aylantirildi"); } else {// birinchi navbatda B tugmasi o'zgartirildi-> soat yo'nalishi bo'yicha teskari aylantiruvchi encoserPosCount--; Serial.println ("soat sohasi farqli o'girib"); }
Serial.print ("Enkoderning joylashuvi:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; encoderPosCount -ni qaytarish; } bool readwitch () {
if (digitalRead (pinSW)! = 0) {// tugmasi bosilsa
while (digitalRead (pinSW)! = 0) {} // switch hozirda switchval = 1 bosilgan; } else {switchval = 0;} // switch bosilmagan qaytish switchval; }
Endi siz kodlovchini burishingiz mumkin va agar siz soat yo'nalishi bo'yicha aylansangiz encoderPosCount o'zgarmaydigan sanaladi va agar siz soat miliga teskari yo'nalishda aylantirsangiz, uni hisoblashingiz mumkin.
Bo'ldi shu! Oddiy va foydali.
Kodni o'zgartirishga va bajarishga jur'at eting. Siz uni loyihangizda amalga oshirishingiz mumkin.
Men LED loyihasini yuklayman, u erda men LEDlarning yorqinligini sozlash uchun kodlovchi ishlatganman.
Tavsiya:
Rotary Enkoder tugmasi: 6 qadam
Rotary Enkoder tugmasi: bu aylanadigan kodlovchi asosida ishlaydigan aylanadigan masofadan boshqarish pulti. U quyidagi xususiyatlarga ega. Batareya yoqilganda juda kam oqim sarflanadi, boshqaruv o'zgartirilganda avtomatik ishga tushadi, harakatsizlik davridan keyin avtomatik uyqu bo'ladi
Arduino va Rotary Enkoder bilan quvvat taymeri: 7 qadam (rasmlar bilan)
Quvvat taymeri Arduino va Rotary Enkoder bilan: Bu taymer taymerga asoslangan: https: //www.instructables.com/id/Timer-With-Arduin .. Quvvat manbai moduli va SSR (qattiq hol o'rni) 1KVtgacha bo'lgan quvvat yuklarini ishlatish mumkin va minimal o'zgarishlar bilan
Rotary Enkoder to'plami bo'yicha qo'llanma: 5 qadam
Rotary enkoderlar to'plami bo'yicha qo'llanma: Tavsif: Ushbu aylanuvchi kodlovchi vositasi vosita holati va tezligini sezish uchun ishlatilishi mumkin. Bu optik nur sensori (optik kalit, fototransistor) va yivli diskdan iborat juda oddiy to'plam. U har qanday mikrokontroga ulanishi mumkin
DIY Rotary Enkoder: 4 qadam
DIY Rotary Enkoder: Kechirasiz, rasmlar yo'qligi uchun, men deyarli bu ishni tugatmagunimcha, bu borada ko'rsatma berishga qaror qilmaganman. va burilishlar soni
Kichik limonli batareya va nolli elektr energiyasi va batareyasiz boshqa yorug'lik uchun boshqa dizaynlar: 18 qadam (rasmlar bilan)
Kichkina limonli batareya va nolga teng elektr energiyasi va akkumulyatorsiz yorug'lik uchun boshqa dizaynlar: Salom, ehtimol siz limon batareyalari yoki bio-batareyalar haqida bilasiz. Ular odatda o'quv maqsadlarida ishlatiladi va ular past kuchlanishli elektrokimyoviy reaktsiyalardan foydalanadilar, ular odatda yonib turgan lampochka yoki lampochka ko'rinishida ko'rsatiladi. Bular