
Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-23 14:40

Pöörlevad koodrid on elektrooniliste projektide jaoks pööratavad juhtnupud, mida sageli kasutatakse koos Arduino perekonna mikrokontrolleritega. Neid saab kasutada parameetrite peenhäälestamiseks, menüüdes navigeerimiseks, objektide liigutamiseks ekraanil, mis tahes väärtuste määramiseks. Need on potentsiomeetrite tavalised asendajad, kuna neid saab täpsemalt ja lõpmatult pöörata, nad suurendavad või vähendavad ühte diskreetset väärtust korraga ja on sageli integreeritud valikuliste funktsioonide jaoks lükatava lülitiga. Neid on igasuguse kuju ja suurusega, kuid madalaima hinnaklassiga on raske liituda, nagu allpool selgitatud.
Rotary -kodeerijate töö üksikasjade ja kasutusviiside kohta on lugematul hulgal artikleid ning nende kasutamise kohta on palju näidiskoode ja raamatukogusid. Ainus probleem on see, et ükski neist ei tööta 100% täpsusega madalaima hinnaklassi Hiina pöördmoodulitega.
Samm: pöörlevad kodeerijad sees



Koodri pöörleval osal on kolm tihvti (ja veel kaks lisavarustusse kuuluva lüliti jaoks). Üks on ühine (must GND), teised kaks on nupu keeramise suuna määramiseks (neid nimetatakse sageli siniseks CLK ja punaseks DT). Mõlemad on kinnitatud mikrokontrolleri PULLUP sisendpoldi külge, muutes taseme HIGH nende vaikeväärtuseks. Kui nuppu keeratakse ettepoole (või päripäeva), langeb kõigepealt sinine CLK tasemele LOW, seejärel järgneb punane DT. Edasi pöörates tõuseb sinine CLK tagasi HIGH -i, siis kui tavaline GND -plaaster jätab mõlemad ühendusnõelad, tõuseb ka punane DT tagasi HIGH -i. Täites seega ühe täieliku linnukese FWD (või päripäeva). Sama kehtib ka teises suunas BWD (või vastupäeva), kuid nüüd langeb kõigepealt punane ja sinine tõuseb viimasena tagasi, nagu on näidatud vastavalt kahetasandilistel piltidel.
2. samm: viletsus, mis põhjustab paljudele tõelist valu



Arduino harrastajatele tavaline probleem, et odavad pöörlevad kodeerimismoodulid tagastavad väljundtaseme täiendavaid muutusi, põhjustades täiendavaid ja valesid suunda. See hoiab ära veatu loendamise ja muudab võimatuks nende moodulite integreerimise täpsetesse pöörlevatesse projektidesse. Need lisapõrked on põhjustatud plaastrite mehaanilistest liikumistest ühenduse tihvtide kohal ja isegi lisakondensaatorite rakendamine ei suuda neid täielikult kõrvaldada. Põrked võivad ilmuda kõikjal puugitsüklites ja neid illustreerivad piltidel olevad reaalsed stsenaariumid.
3. samm: lõpliku oleku masina (FSM) lahendus

Pilt näitab kahe tihvti (sinine CLK ja punane DT) võimalike tasememuutuste täielikku olekuruumi, nii õigete kui ka valede põrkumiste korral. Selle olekumasina põhjal saab programmeerida terviklahenduse, mis töötab alati 100% täpselt. Kuna selles lahenduses ei ole vaja filtreerimise viivitusi, on see ka kiireim võimalik. Veel üks tihvtide olekuruumi töörežiimist eraldamise eelis on see, et saab oma maitse järgi rakendada nii küsitlus- kui ka katkestusrežiime. Küsitlus või katkestused võivad tuvastada nööpnõelte taseme muutusi ja eraldi rutiin arvutab uue oleku hetkeoleku ja taseme muutuste tegelike sündmuste põhjal.
Samm: Arduino kood

Allolev kood loeb jadamonitoril olevaid FWD- ja BWD -puuke ning sisaldab ka valikulist lülitusfunktsiooni.
// Peter Csurgay 10.04.2019
// Arduino sadamatega kaardistatud pöörleva tihvtid
#define SW 21 #define CLK 22 #define DT 23
// Pöördnupuga häälestatud loenduri praegune ja eelmine väärtus
int curVal = 0; int prevVal = 0;
// Seitse FSM olekut (piiratud olekuga masin)
#define IDLE_11 0 #define SCLK_01 1 #define SCLK_00 2 #define SCLK_10 3 #define SDT_10 4 #define SDT_00 5 #define SDT_01 6 int state = IDLE_11;
tühine seadistus () {
Serial.begin (250000); Serial.println ("Alusta …"); // Kõigi nööpnõelte jaoks on vaikimisi tase HIGH pinMode (SW, INPUT_PULLUP); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); // Nii CLK kui ka DT käivitavad katkestused kõigi tasememuutuste korral attachInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); }
void loop () {
// Valikulise lüliti käsitsemine, mis on integreeritud mõnedesse pöörlevatesse kodeerijatesse, kui (digitalRead (SW) == LOW) {Serial.println ("Pressed"); while (! digitalRead (SW)); } // Kõik loenduri väärtuse muutused kuvatakse Serial Monitoris, kui (curVal! = PrevVal) {Serial.println (curVal); prevVal = curVal; }}
// Olekumasina üleminekud CLK taseme muutuste jaoks
void rotaryCLK () {if (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; else if (olek == SCLK_10) olek = SCLK_00; else if (olek == SDT_10) olek = SDT_00; } else {if (state == SCLK_01) state = IDLE_11; else if (olek == SCLK_00) olek = SCLK_10; else if (olek == SDT_00) olek = SDT_10; muidu kui (olek == SDT_01) {olek = IDLE_11; kõver-; }}}
// Olekumasina üleminekud DT taseme muutuste jaoks
void rotaryDT () {if (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; else if (olek == SDT_01) olek = SDT_00; else if (olek == SCLK_01) olek = SCLK_00; } else {if (state == SDT_10) state = IDLE_11; else if (olek == SDT_00) olek = SDT_01; else if (olek == SCLK_00) olek = SCLK_01; muidu kui (olek == SCLK_10) {olek = IDLE_11; kõver ++; }}}
5. samm: veatu integreerimine

Lisatud videost saate kontrollida, kas FSM -lahendus töötab täpselt ja kiiresti isegi väikese vahelduva pöördkodeerija puhul, millel on erinevad juhuslikud põrkumisefektid.
Soovitan:
Täielik Pythoni veebiliidese komplekt PhidgetSBC3 jaoks: 6 sammu

Täielik Pythoni veebiliidese komplekt PhidgetSBC3 jaoks: PhidgetSBC3 plaat on täisfunktsionaalne üheplaadiline arvuti, mis töötab Debain Linuxiga. See sarnaneb vaarika Pi -ga, kuid sellel on 8 analoogsensori sisendit ja 8 digitaalsisendit ning 8 digitaalset väljundit. See tarnitakse koos veebiserveri ja veebirakendusega, et
Arduino -Teensy4 Teensy 4.0 jaoks - täielik kokkupanek: 10 sammu

Arduino-Teensy4 Teensy 4.0 jaoks-täielik kokkupanek: see juhend annab teile ülevaate Arduino-Teensy4 laiendusplaadi kokkupanekust Teensy 4.0 jaoks. Saate selle osta minu Tindie poest siit: https: //www.tindie.com/products/ cburgess129/arduin … Te saate koos oma poisiga tellida ka Teensy 4
2 dollarit Arduino. ATMEGA328 eraldiseisvana. Lihtne, odav ja väga väike. täielik juhend: 6 sammu (koos piltidega)

2 dollarit Arduino. ATMEGA328 eraldiseisvana. Lihtne, odav ja väga väike. täielik juhend: Selles juhendis saate teada, kuidas kasutada Arduino ATMEGA328 mikrokontrolleri kiipi eraldiseisva mikrokontrollerina. Need maksavad ainult 2 dollarit, võivad teha sama, mis teie Arduino ja muudavad teie projektid äärmiselt väikeseks. Me katame tihvtide paigutuse
CAR-INO: vana RC-auto täielik teisendamine Arduino ja Bluetooth-juhtimisega: 5 sammu (piltidega)

CAR-INO: vana RC-auto täielik muutmine Arduino ja Bluetooth-juhtimisega: Sissejuhatus Tere, oma esimestes juhendites tahaksin teiega jagada oma kogemust vana rc-auto 1990. aastast uueks muutmisel. Oli jõuluaeg 1990, kui jõuluvana kinkis mulle selle Ferrari F40, maailma kiireima auto! … tol ajal. T
Täielik Arduino-põhine sõiduki GPS+GPRS vargusvastane süsteem: 5 sammu (koos piltidega)

Täielik Arduino-põhine sõiduki GPS+GPRS vargusvastane süsteem: Tere kõigile! Tahtsin luua GPS-sõiduki vargusvastase seadme jaoks terviklahenduse, mis oleks: võimalikult odav ja võimalikult täielik, kui see lihtsalt töötab -pole midagi muud teha kui võimalik, nii et lõpuks ehitasin Arduino-põhise lahenduse