Tartalomjegyzék:
Videó: Egyszerű rotációs dekódoló: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Ez az utasítás egy egyszerű módszert ír le egy szekvenciális forgó kódoló dekódolására Arduino Uno R3 segítségével.
Kompakt szoftveres rutinokat használnak az átmenetek számolására, az érintkezés visszapattanásának kiküszöbölésére és a forgásirány meghatározására. További összetevők és keresési táblázatok nem szükségesek.
A kód megszakítás nélküli és megszakítás nélküli verziói rendelkezésre állnak.
A kód megszakítási verziójához csak egyetlen megszakító pin szükséges.
Képek:
- A nyitóképen az összeszerelt kódoló látható.
- A képernyőképen megjelenik a megszakítási verzió kódja és a számláló, amikor a jeladó tengelyét az óramutató járásával megegyező és az óramutató járásával ellentétes irányba forgatják.
- A videó a gyors forgás közbeni számot mutatja.
1. lépés: Áramköri diagram
A jeladó kapcsolási rajza az 1. ábrán látható.
Az áthidaló vezetékek közvetlenül a jeladó csapjaihoz vannak forrasztva.
Cserélje fel a két kék vezetéket, ha a számlálási irány megfordul.
2. lépés: Alkatrészlista
A következő részeket a https://www.aliexpress.com/ webhelyről szerezték be
- 1 csak Arduino UNO R3 USB kábellel.
- 1 csak szekvenciális forgó jeladó (EC11 vagy azzal egyenértékű) kapcsolóval.
- 1 csak a tengelynek megfelelő gomb.
- Csak 3 Arduino férfi-férfi áthidaló vezeték.
3. lépés: Elmélet
A szekvenciális forgó jeladók két négyzethullámot generálnak, amelyek mindegyike 90 fokkal elmozdul, ahogy az 1. ábrán látható.
Az A és a B érintkező logikai mintázata eltérő, ha a tengelyt az óramutató járásával megegyező irányba (CW) és az óramutató járásával ellentétes irányba (CCW) forgatják az 1-6.
A forgásirány meghatározásának általános módszerei a következők:
- hardver
- - szól közbe az iker
- minta keresési táblázatok
Ez a projekt olyan szoftveres módszert használ, amely nem igényel keresési táblázatokat. [1]
Irány
Ahelyett, hogy az A és a B kontaktus kimeneti mintáit nézegetnénk, koncentráljunk az A kapcsolattartóra.
Ha minden egyes A kapcsolatfelvétel után mintát veszünk a B kapcsolattartóból, akkor a következőket vesszük észre:
- Az A érintkező és a B érintkező logikai állapota ellentétes, amikor a kódoló CW -el van forgatva
- Az A és a B érintkezőnek ugyanaz a logikai állapota, amikor a kódolót CCW irányba forgatja
Valódi kód:
// ----- Átmenetek számlálása
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Ez a módszer a következő előnyökkel jár:
- keresési táblázatok nem szükségesek
- csak egyetlen megszakító vonalra van szükség
Debounce
Minden mechanikus kódoló „érintkezési ugrálástól” szenved.
Ha a kapcsolóérintkező nem jön létre/törik meg tisztán, logikai állapota gyorsan ingadozik HIGH -ról LOW -ra, amíg a kapcsolóérintkező le nem rendeződik. Ez hamis számolást eredményez.
Az egyik módszer az érintkezők visszapattanásának visszaszorítására az, hogy egy kis kondenzátort kell hozzáadni minden kapcsolóérintkezőhöz. A kondenzátor és a hozzá tartozó felhúzó ellenállás egy integrátort képez, amely hatékonyan zárja rövidre a magas frekvenciákat, és lehetővé teszi a kapcsoló feszültségének kecses emelkedését/csökkenését.
Ennek a megközelítésnek az a hátránya, hogy az átmenetek elmaradhatnak, ha a jeladó tengelyét gyorsan forgatják.
Szoftver visszaállítása
Ez a módszer két számlálót (nyitott, zárt) használ, amelyek nullára vannak állítva. [2]
Ha átmenetet észlelt az A kapcsolattartón:
- Folyamatos szavazás Kapcsolatfelvétel A.
- Növelje a Nyitott számlálót, és állítsa vissza a Zárt számlálót, amikor az A érintkező HIGH.
- Növelje a Zárt számlálót, és állítsa vissza a Nyitott számlálót, amikor az A érintkező alacsony.
- Lépjen ki a ciklusból, amikor az egyik számláló eléri az előre meghatározott számot. Hatékonyan keressük az egyensúlyi állapotot az esetleges kapcsolatfelpattanást követően.
Valódi kód:
// ----- Visszakapcsolási kapcsolat A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Üres ellentétes integrátor Open ++; // Integrálni, ha (Nyissa meg> MaxCount) return HIGH; } else {// ----- ContactA is Closed Open = 0; // Üres ellentétes integrátor Zárt ++; // Integrálni, ha (Zárt> MaxCount) return LOW; }}
Nincs szükség a B érintkező lekapcsolására, mivel az A és B érintkező átmenetek nem esnek egybe.
Számolás
A mechanikus „retent” gyakorlatilag megduplázza a számát, mivel a kattintások között két szám van regisztrálva (lásd 1. ábra).
A „visszatartások” számát a modulo 2 számtani módszerrel lehet meghatározni az alábbiak szerint.
Valódi kód:
// ----- "visszatartottak" számlálása
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (Count / 2); }
Hivatkozások
További információk a következő címen találhatók:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
4. lépés: Szoftver
A projekthez szükség van az Ardino Uno R3 IDE (integrált fejlesztői környezet) legújabb verziójára, amely elérhető a https://www.arduino.cc/en/main/software címen
Töltse le az alábbi két Arduino vázlatot (mellékelve)
- rotary_encoder_1.ino (szavazási verzió)
- rotary_encoder_2.no (megszakítási verzió)
Kattintson duplán a kívánt verzióra, és kövesse a képernyőn megjelenő utasításokat.
Élvezd …
Kattintson ide a többi utasításom megtekintéséhez.
Ajánlott:
LabDroid: Morse kód kódoló/dekódoló: 4 lépés
LabDroid: Morse Code Encoder/Decoder: Megjegyzés: Ez az utasítás nem hajtható végre 1: 1 arányban a LabDroid legújabb verziójában. Hamarosan frissítem. Ez a projekt megmutatja, mit tehet a LabDroid segítségével. Mivel a Hello World általában szöveg, fény vagy hang alapján készül, a LabDr -re gondoltam
Bináris fa morze dekódoló: 7 lépés (képekkel)
Bináris fa morze dekódoló: a.cikkek {font-size: 110,0%; betűtípus súlya: félkövér; betűtípus: dőlt; szövegdíszítés: nincs; háttérszín: piros;} a. cikkek: lebegés {háttér-szín: fekete;} Ez az utasítás elmagyarázza, hogyan lehet dekódolni a Morse-kódot egy Arduino Uno R3.T használatával
Egyszerű DTMF (hang) telefonvonal dekódoló készítése: 3 lépés
Egyszerű DTMF (hang) telefonvonal dekódoló készítése: Ez egy egyszerű projekt, amely lehetővé teszi a DTMF jelek dekódolását alapvetően bármely telefonvonalon. Ebben az oktatóanyagban az MT8870D dekódolót használjuk. Előre beépített hangdekódert használunk, mert hidd el, fájdalmas a hátul, ha megpróbálod ezt a
RC5 távirányító protokoll dekódoló könyvtár nélkül: 4 lépés
RC5 távirányító protokoll dekódoló könyvtár nélkül: az rc5 dekódolása előtt először megbeszéljük, hogy mi az rc5 parancs és mi a felépítése. Tehát alapvetően az rc5 parancsot használják a távvezérlőkben, amelyeket televíziókban, cd -lejátszókban, d2h -ben, házimozi -rendszerekben stb. használnak. 13 vagy 14 bit van elrendezve egy
Egyszerű elektronikus fordulatszám -szabályozó (ESC) a végtelen rotációs szervóhoz: 6 lépés
Egyszerű elektronikus sebességszabályozó (ESC) a végtelen forgásszervóhoz: Ha manapság megpróbálja bemutatni az elektronikus sebességszabályozót (ESC), szemtelennek vagy merésznek kell lennie. Az olcsó elektronikai gyártás világa tele van különböző minőségű, sokféle funkciójú szabályozóval. Ennek ellenére kérdezze meg barátom