Kako Se Znebiti Odbijanja Stikov Pri Povezovanju Gumba Z Arduino

Kazalo:

Kako Se Znebiti Odbijanja Stikov Pri Povezovanju Gumba Z Arduino
Kako Se Znebiti Odbijanja Stikov Pri Povezovanju Gumba Z Arduino

Video: Kako Se Znebiti Odbijanja Stikov Pri Povezovanju Gumba Z Arduino

Video: Kako Se Znebiti Odbijanja Stikov Pri Povezovanju Gumba Z Arduino
Video: ❓ Обязательно к просмотру начинающему в Arduino IDE (ошибка компилятора) 2024, December
Anonim

Smo že pogledali povezavo gumba z Arduino in se dotaknili vprašanja "odbijanja" stikov. To je zelo moteč pojav, ki povzroča ponavljajoče se pritiske gumbov in otežuje programsko obdelavo klikov gumbov. Pogovorimo se o tem, kako se znebiti odbijanja stikov.

Učinek odbijanja stika
Učinek odbijanja stika

Potrebno

  • - Arduino;
  • - gumb za takt;
  • - upor z nazivno vrednostjo 10 kOhm;
  • - Svetleča dioda;
  • - priključne žice.

Navodila

Korak 1

Odbijanje kontaktov je pogost pojav pri mehanskih stikalih, tipkah, preklopnih stikalih in relejih. Ker so kontakti običajno narejeni iz kovin in zlitin, ki imajo elastičnost, ko so fizično zaprti, takoj ne vzpostavijo zanesljive povezave. V kratkem času se stiki večkrat zaprejo in se odbijajo. Posledica tega je, da električni tok vzpostavi stanje dinamičnega ravnovesja ne takoj, temveč po vrsti vzponov in padcev. Trajanje tega prehodnega učinka je odvisno od materiala stika, velikosti in zasnove. Na sliki je prikazan tipičen oscilogram, ko so kontakti gumba zapiranja zaprti. Vidimo lahko, da je čas od trenutka preklopa v stanje dinamičnega ravnovesja nekaj milisekund. To se imenuje "odboj".

Ta učinek ni opazen v električnih tokokrogih za nadzor razsvetljave, motorjev ali drugih vztrajnostnih senzorjev in naprav. Toda v tokokrogih, kjer je hitro branje in obdelava informacij (kjer so frekvence enakega reda kot "odbojni" impulzi ali višje), je to težava. Zlasti Arduino UNO, ki deluje na 16 MHz, je odličen pri ujemanju stikov, tako da sprejme zaporedje enot in ničel namesto enega stikala 0 do 1.

Odbijanje stika med pritiskom na gumb
Odbijanje stika med pritiskom na gumb

2. korak

Poglejmo, kako odboj stika vpliva na pravilno delovanje vezja. Povežimo gumb ure na Arduino s pomočjo padajočega upora. S pritiskom na gumb bomo prižgali LED in jo pustili prižgano, dokler gumba znova ne pritisnemo. Zaradi jasnosti na digitalni zatič 13 priključimo zunanjo LED, čeprav z vgrajenim ne gre.

Povezava gumba z Arduinom z uporabo vlečnega upora
Povezava gumba z Arduinom z uporabo vlečnega upora

3. korak

Za izpolnitev te naloge najprej pomislim:

- zapomnite si prejšnje stanje gumba;

- primerjaj s trenutnim stanjem;

- če se je stanje spremenilo, potem spremenimo stanje LED.

Napišimo takšno skico in jo naložimo v spomin Arduino.

Ko je vezje vklopljeno, je učinek odbijanja kontaktov takoj viden. Kaže se v tem, da LED dioda ne zasveti takoj po pritisku na gumb ali zasveti in nato ugasne ali pa se ne izklopi takoj po pritisku na gumb, ampak ostane prižgana. Na splošno vezje ne deluje stabilno. In če za nalogo z vklopom LED to ni tako kritično, potem je za druge, bolj resne naloge, preprosto nesprejemljivo.

Skica pritiska gumba za obdelavo, ne da bi se upoštevalo odbijanje stika
Skica pritiska gumba za obdelavo, ne da bi se upoštevalo odbijanje stika

4. korak

Skušali bomo popraviti situacijo. Vemo, da se odklon stika zgodi v nekaj milisekundah po zaprtju kontakta. Počakajmo recimo 5 ms po spremembi stanja gumba. Ta čas je za človeka skoraj trenutek in pritisk na tipko s strani osebe običajno traja veliko dlje - nekaj deset milisekund. In Arduino odlično deluje v tako kratkih časovnih obdobjih in teh 5 ms mu bo omogočilo, da bo preklical stik s pritiskom na gumb.

V tej skici bomo razglasili postopek debounce () ("bounce" v angleščini je le "bounce", predpona "de" pomeni obratni postopek), na vhod katerega dovajamo prejšnje stanje gumba. Če pritisk gumba traja več kot 5 ms, potem je to res pritisk.

Z zaznavanjem tiska spremenimo stanje LED.

Skico naložite na ploščo Arduino. Zdaj je vse veliko bolje! Gumb deluje brez okvare, ko pritisnete, LED spremeni stanje, kot smo želeli.

Skica obdelave pritiska na gumb ob upoštevanju odklona stika
Skica obdelave pritiska na gumb ob upoštevanju odklona stika

5. korak

Podobno funkcionalnost zagotavljajo posebne knjižnice, kot je knjižnica Bounce2. Prenesete ga lahko s povezave v razdelku "Viri" ali s spletnega mesta https://github.com/thomasfredericks/Bounce2. Če želite namestiti knjižnico, jo postavite v imenik knjižnic v razvojnem okolju Arduino in znova zaženite IDE.

Knjižnica "Bounce2" vsebuje naslednje metode:

Bounce () - inicializacija predmeta "Bounce";

interval praznine (ms) - nastavi čas zakasnitve v milisekundah;

void attach (pin number) - nastavi zatič, na katerega je povezan gumb;

int update () - posodobi objekt in vrne true, če se je stanje pin-a spremenilo, sicer pa false;

int read () - prebere novo stanje zatiča.

Prepišiva svojo skico s pomočjo knjižnice. Prav tako se lahko spomnite in primerjate preteklo stanje gumba s trenutnim, vendar poenostavimo algoritem. Ko pritisnete gumb, bomo prešteli pritiske in vsak nenaden pritisk bo vklopil LED, vsak sodo pritisk pa ugasne. Ta skica je jedrnata, enostavna za branje in enostavna za uporabo.

Priporočena: