
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:05



Tento návod popisuje jednoduchý spôsob dekódovania sekvenčného rotačného snímača pomocou Arduino Uno R3.
Kompaktné softvérové rutiny sa používajú na počítanie počtu prechodov, elimináciu odrazu kontaktov a určovanie smeru otáčania. Ďalšie komponenty a vyhľadávacie tabuľky nie sú potrebné.
K dispozícii sú verzie kódu s prerušením a bez prerušenia.
Verzia prerušenia kódu vyžaduje iba jeden PIN prerušenia.
Snímky:
- Úvodná fotografia zobrazuje zostavený kodér.
- Snímka obrazovky zobrazuje kód pre verziu prerušenia a počet pri otáčaní hriadeľa snímača v smere a proti smeru hodinových ručičiek.
- Video zobrazuje počet počas rýchleho otáčania.
Krok 1: Schéma zapojenia

Schéma zapojenia snímača je znázornená na obr.1.
Prepojovacie vodiče sú spájkované priamo na kolíky kodéra.
Ak je smer počítania obrátený, vymeňte dva modré vodiče.
Krok 2: Zoznam dielov
Nasledujúce diely boli získané z
- 1 iba Arduino UNO R3 s káblom USB.
- 1 iba sekvenčný rotačný snímač (EC11 alebo ekvivalent) s vypínačom.
- 1 iba gombík vhodný pre hriadeľ.
- 3 iba prepojovacie vodiče Arduino muž-muž.
Krok 3: Teória

Sekvenčné rotačné kodéry generujú dve štvorcové vlny, z ktorých každá je posunutá o 90 stupňov, ako je znázornené na obr.
Logické vzorce na kontakte A a kontakte B sa líšia, keď sa hriadeľ otáča v polohách 1 až 6 v smere hodinových ručičiek (CW) a proti smeru hodinových ručičiek (CCW).
Bežné metódy určovania smeru otáčania zahŕňajú:
- hardvér
- dvojité prerušenia
- tabuľky na vyhľadávanie vzorov
Tento projekt používa softvérovú metódu, ktorá nevyžaduje vyhľadávacie tabuľky. [1]
Smer
Namiesto toho, aby sme sa pozreli na výstupné vzorce z kontaktov A a kontaktu B, zamerajme sa na kontakt A.
Ak po každom prechode kontaktu A vzorkujeme kontakt B, všimneme si, že:
- Keď je kodér otočený CW, kontakt A a kontakt B majú opačné logické stavy
- Kontakt A a kontakt B majú rovnaký logický stav, keď je kodér otočený CCW
Skutočný kód:
// ----- Počítanie prechodov
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Táto metóda ponúka nasledujúce výhody:
- vyhľadávacie tabuľky nie sú povinné
- je vyžadovaný iba jeden prerušovací riadok
Debounce
Všetky mechanické enkodéry trpia „kontaktným nárazom“.
Ak sa prepínací kontakt nevypne/nerozbije čisto, jeho logický stav bude rýchlo oscilovať od HIGH do LOW, kým sa kontakt spínača neusadí. Výsledkom sú nesprávne počty.
Jednou z metód na potlačenie odrazu kontaktu je pridanie malého kondenzátora na každý prepínací kontakt. Kondenzátor a súvisiaci zdvíhací odpor tvoria integrátor, ktorý efektívne skratuje vysoké frekvencie a umožňuje elegantne stúpať/klesať napätie prepínača.
Temnejšou stránkou tohto prístupu je, že pri rýchlom otáčaní hriadeľa snímača môžu byť prechody vynechané.
Software debouncing
Táto metóda používa dva počítadlá (otvorené, zatvorené), ktoré boli nastavené na nulu. [2]
Akonáhle je v kontakte A zistený prechod:
- Priebežná anketa Kontakt A.
- Zvýšte počet otvorených počítadiel a vynulujte počítadlo zatvorení vždy, keď je kontakt A VYSOKÝ.
- Zvýšte počet zatvorených počítadiel a vynulujte počítadlo otvorení, kedykoľvek je kontakt A NÍZKY.
- Opustite slučku, keď jeden z počítadiel dosiahne vopred určený počet. Účinne hľadáme obdobie ustáleného stavu po každom kontaktnom odskoku.
Skutočný kód:
// ----- Debounce Contact A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Prázdny protiľahlý integrátor Open ++; // Integrujte, ak (otvorené> MaxCount) vráti HIGH; } else {// ----- ContactA je zatvorený otvorený = 0; // Prázdny protiľahlý integrátor Zavretý ++; // Integrujte if (Closed> MaxCount) return LOW; }}
Nie je potrebné odstraňovať kontakt B, pretože prechody kontaktu A a kontaktu B sa nezhodujú.
Počítanie
Mechanická „zarážka“efektívne zdvojnásobí váš počet, pretože medzi kliknutiami sa zaznamenajú dve počty (pozri obr. 1).
Počet „aretácií“je možné určiť pomocou aritmetiky modulo 2, ako je uvedené nižšie.
Skutočný kód:
// ----- Počítajte „detenty“
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (počet / 2); }
Referencie
Ďalšie informácie nájdete na:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Krok 4: Softvér
Tento projekt vyžaduje najnovšiu verziu integrovaného vývojového prostredia Ardino Uno R3 IDE, ktorá je k dispozícii na adrese
Stiahnite si každú z nasledujúcich dvoch skíc Arduino (priložené)
- rotary_encoder_1.ino (verzia pre hlasovanie)
- rotary_encoder_2.no (prerušená verzia)
Dvakrát kliknite na požadovanú verziu a postupujte podľa pokynov na obrazovke.
Užite si to …
Kliknutím sem zobrazíte ďalšie moje pokyny.
Odporúča:
DIY rotačný nástroj: 4 kroky

DIY rotačný nástroj: V tomto návode vám ukážem, ako môžete vziať niektoré ľahko dostupné materiály a skombinovať ich, aby ste vytvorili DIY rotačný nástroj! Začnime teda
Ako: Bezkontaktný rotačný kodér: 3 kroky

Ako: Bezkontaktný rotačný kodér: Táto aplikačná poznámka popisuje, ako navrhnúť vysoko spoľahlivý rotačný spínač alebo kodér pomocou Dialog GreenPAK ™. Táto konštrukcia spínača je bezkontaktná, a preto ignoruje oxidáciu kontaktov a opotrebovanie. Je ideálny na použitie vonku, kde je dlhý
Ako vytvoriť jednoduchý dekodér telefónnej linky DTMF (tón): 3 kroky

Ako vytvoriť jednoduchý dekodér telefónnej linky DTMF (tón): Jedná sa o jednoduchý projekt, ktorý vám umožní dekódovať signály DTMF v zásade na akejkoľvek telefónnej linke. V tomto návode používame dekodér MT8870D. Používame preddefinovaný dekodér tónov, pretože verte mi, je to bolesť v zadných partiách, pokúsiť sa to urobiť pomocou
Ako používať krokový motor ako rotačný snímač a OLED displej pre kroky: 6 krokov

Ako používať krokový motor ako rotačný kodér a OLED displej na kroky: V tomto návode sa naučíme sledovať kroky krokového motora na OLED displeji. Pozrite si ukážkové video. Kredit za originálny návod odošle používateľovi youtube " sky4fly "
Rotačný kodér - porozumenie a používanie (Arduino/iný Μkontrolér): 3 kroky

Rotačný kodér - porozumenie a používanie (Arduino/iný Μkontrolér): Rotačný kodér je elektromechanické zariadenie, ktoré prevádza rotačný pohyb na digitálne alebo analógové informácie. Môže sa otáčať v smere alebo proti smeru hodinových ručičiek. Existujú dva typy rotačných enkodérov: absolútne a relatívne (inkrementálne). Kodéry