Hogyan Lehet Megszabadulni Az érintéses Visszapattanástól, Amikor Egy Gombot Arduino-hoz Csatlakoztat

Tartalomjegyzék:

Hogyan Lehet Megszabadulni Az érintéses Visszapattanástól, Amikor Egy Gombot Arduino-hoz Csatlakoztat
Hogyan Lehet Megszabadulni Az érintéses Visszapattanástól, Amikor Egy Gombot Arduino-hoz Csatlakoztat

Videó: Hogyan Lehet Megszabadulni Az érintéses Visszapattanástól, Amikor Egy Gombot Arduino-hoz Csatlakoztat

Videó: Hogyan Lehet Megszabadulni Az érintéses Visszapattanástól, Amikor Egy Gombot Arduino-hoz Csatlakoztat
Videó: Az író fejében #1 – Hogyan születik a regény? Az ötlettől a megjelenésen át, az első kritikáig. 2024, November
Anonim

Már megvizsgáltuk az Arduino gombjának csatlakoztatását, és kitértünk a "pattogó" kapcsolatok kérdésére. Ez egy nagyon bosszantó jelenség, amely többszöri gombnyomást okoz, és megnehezíti a gombkattintások programozott kezelését. Beszéljünk arról, hogyan lehet megszabadulni a kontakt visszapattanástól.

Kapcsolattartó visszapattanó hatás
Kapcsolattartó visszapattanó hatás

Szükséges

  • - Arduino;
  • - tapintás gomb;
  • - 10 kOhm névleges értékű ellenállás;
  • - Fénykibocsátó dióda;
  • - összekötő vezetékek.

Utasítás

1. lépés

Az érintkezési visszapattanás gyakori jelenség a mechanikus kapcsolókban, a nyomógombokban, a kapcsolókban és a relékben. Annak a ténynek köszönhetően, hogy az érintkezők általában olyan fémekből és ötvözetekből állnak, amelyek rugalmassággal rendelkeznek, fizikailag lezárva nem azonnal hoznak létre megbízható kapcsolatot. Rövid időn belül a kapcsolatok többször bezáródnak és taszítják egymást. Ennek eredményeként az elektromos áram stabil állapotot kap nem azonnal, hanem egy sor hullámvölgy után. Ennek az átmeneti hatásnak az időtartama az érintkező anyagtól, méretétől és kialakításától függ. Az ábra egy tipikus oszcillogramot mutat, amikor a tapintógomb érintkezői zárva vannak. Látható, hogy az átállás pillanatától az egyensúlyi állapotig eltelt idő több milliszekundum. Ezt hívják "visszapattanásnak".

Ez a hatás nem érzékelhető a villamos áramkörökben a világítás, a motorok vagy más inerciális érzékelők és eszközök vezérléséhez. De azokban az áramkörökben, ahol az információk gyors olvasása és feldolgozása folyik (ahol a frekvenciák azonos sorrendben vannak, mint a "visszapattanó" impulzusok, vagy magasabbak), ez problémát jelent. Különösen az Arduino UNO, amely 16 MHz-en működik, kiválóan képes elkapni az érintkezési visszapattanást azáltal, hogy egyetlen 0: 1 kapcsoló helyett egy és nulla szekvenciát fogad el.

Kapcsolat visszapattanás gomb megnyomásakor
Kapcsolat visszapattanás gomb megnyomásakor

2. lépés

Lássuk, hogyan befolyásolja az érintkezés visszapattanása az áramkör helyes működését. Csatlakoztassuk az óra gombot az Arduino-hoz egy lehúzható ellenállás áramkör segítségével. A gomb megnyomásával meggyújtjuk a LED-et, és addig hagyjuk bekapcsolva, amíg a gombot ismét megnyomjuk. Az egyértelműség kedvéért egy külső LED-et csatlakoztatunk a 13 digitális érintkezőhöz, bár a beépített eltekinthet tőlük.

Gomb csatlakoztatása Arduino-hoz felhúzható ellenállás áramkörrel
Gomb csatlakoztatása Arduino-hoz felhúzható ellenállás áramkörrel

3. lépés

Ennek a feladatnak az elvégzéséhez először az jut eszembe:

- emlékezzen a gomb előző állapotára;

- összehasonlítani a jelenlegi állapottal;

- ha az állapot megváltozott, akkor megváltoztatjuk a LED állapotát.

Írjunk egy ilyen vázlatot, és töltsük be az Arduino memóriába.

Az áramkör bekapcsolásakor a kontaktus pattogásának hatása azonnal látható. Abban nyilvánul meg, hogy a LED nem világít azonnal a gomb megnyomása után, vagy kigyullad, majd kialszik, vagy a gomb megnyomása után nem kapcsol ki azonnal, hanem tovább világít. Általában az áramkör nem működik stabilan. És ha a LED bekapcsolásával kapcsolatos feladatoknál ez nem annyira kritikus, akkor más, komolyabb feladatoknál ez egyszerűen elfogadhatatlan.

A feldolgozási gomb megnyomásának vázlata anélkül, hogy figyelembe vennénk a kapcsolat visszapattanását
A feldolgozási gomb megnyomásának vázlata anélkül, hogy figyelembe vennénk a kapcsolat visszapattanását

4. lépés

Megpróbáljuk helyrehozni a helyzetet. Tudjuk, hogy az érintés visszapattanása néhány milliszekundumon belül bekövetkezik az érintkezõ lezárása után. Várjunk mondjuk 5 ms-ot a gomb állapotának megváltoztatása után. Ez az idő egy ember számára szinte azonnali, és egy személy gombnyomása általában sokkal hosszabb időt vesz igénybe - több tíz milliszekundumot. Az Arduino pedig remekül működik ilyen rövid ideig, és ez az 5 ms lehetővé teszi, hogy levágja a kapcsolatok visszapattanását egy gombnyomástól.

Ebben a vázlatban deklaráljuk a debounce () eljárást (az angolul "bounce" csak "bounce", a "de" előtag fordított folyamatot jelent), amelynek bemenetére a gomb előző állapotát adjuk meg. Ha egy gombnyomás több mint 5 msec-ig tart, akkor ez valóban egy megnyomás.

A sajtó érzékelésével megváltoztatjuk a LED állapotát.

Töltse fel a vázlatot az Arduino táblára. Most sokkal jobb minden! A gomb hibátlanul működik, lenyomásakor a LED megváltoztatja az állapotát, ahogy azt szerettük volna.

Vázlat egy gombnyomás feldolgozásáról, figyelembe véve a kapcsolattartást
Vázlat egy gombnyomás feldolgozásáról, figyelembe véve a kapcsolattartást

5. lépés

Hasonló funkcionalitást nyújtanak speciális könyvtárak, például a Bounce2 könyvtár. Letöltheti a „Források” szakaszban található linkről vagy a https://github.com/thomasfredericks/Bounce2 weboldalról. A könyvtár telepítéséhez helyezze az Arduino fejlesztői környezet könyvtárak könyvtárába, és indítsa újra az IDE programot.

A "Bounce2" könyvtár a következő módszereket tartalmazza:

Bounce () - a "Bounce" objektum inicializálása;

void interval (ms) - a késleltetési időt milliszekundumban állítja be;

void attach (pin number) - beállítja azt a csapot, amelyhez a gomb csatlakozik;

int update () - frissíti az objektumot, és igaz értéket ad vissza, ha a pin állapota megváltozott, és hamis egyébként

int read () - beolvassa a pin új állapotát.

Írjuk át a vázlatunkat a könyvtár segítségével. Emlékezhet és összehasonlíthatja a gomb korábbi állapotát a jelenlegi állapotával, de egyszerűsítsük az algoritmust. A gomb megnyomásakor megszámoljuk a megnyomásokat, és minden páratlan megnyomás bekapcsolja a LED-et, és minden páros megnyomás kikapcsol. Ez a vázlat tömör, könnyen olvasható és könnyen használható.

Ajánlott: