Kuinka Päästä Eroon Kontaktin Palautumisesta Yhdistettäessä Painiketta Arduinoon

Sisällysluettelo:

Kuinka Päästä Eroon Kontaktin Palautumisesta Yhdistettäessä Painiketta Arduinoon
Kuinka Päästä Eroon Kontaktin Palautumisesta Yhdistettäessä Painiketta Arduinoon

Video: Kuinka Päästä Eroon Kontaktin Palautumisesta Yhdistettäessä Painiketta Arduinoon

Video: Kuinka Päästä Eroon Kontaktin Palautumisesta Yhdistettäessä Painiketta Arduinoon
Video: 🔴 Kontakt Home həqiqətləri: Şəhid ailələrini himayəyə götürmək, kreditləri bağışlamaq təcrübəsi 2024, Saattaa
Anonim

Olemme jo tarkastelleet painikkeen liittämistä Arduinoon ja koskettaneet "pomppivien" kontaktien kysymystä. Tämä on hyvin ärsyttävä ilmiö, joka aiheuttaa toistuvia painikkeita ja vaikeuttaa painikkeiden napsautusten ohjelmallista käsittelyä. Puhutaan siitä, miten päästä eroon kontaktin palautumisesta.

Yhteyden palautumisvaikutus
Yhteyden palautumisvaikutus

Tarpeellinen

  • - Arduino;
  • - tahdikkopainike;
  • - vastus, jonka nimellisarvo on 10 kOhm;
  • - Valodiodi;
  • - liitäntäjohdot.

Ohjeet

Vaihe 1

Kontaktien palautuminen on yleinen ilmiö mekaanisissa kytkimissä, painikkeissa, vaihtokytkimissä ja releissä. Koska kontaktit tehdään yleensä joustavista metalleista ja seoksista, fyysisesti suljettuina ne eivät välittömästi muodosta luotettavaa yhteyttä. Lyhyessä ajassa kontaktit sulkeutuvat useita kertoja ja hylkäävät toisiaan. Tämän seurauksena sähkövirta saa vakaan tilan arvon ei välittömästi, vaan sarjan nousujen ja laskujen jälkeen. Tämän ohimenevän vaikutuksen kesto riippuu kosketusmateriaalista, koosta ja rakenteesta. Kuvassa on tyypillinen oskillogrammi, kun kosketuspainikkeen koskettimet ovat kiinni. Voidaan nähdä, että aika siirtymisestä vakaaseen tilaan on useita millisekunteja. Tätä kutsutaan "palautumiseksi".

Tämä vaikutus ei ole havaittavissa valaistuksen, moottoreiden tai muiden inertiasensorien ja laitteiden ohjaamiseen tarkoitetuissa sähköpiireissä. Mutta piireissä, joissa on nopea tietojen lukeminen ja käsittely (joissa taajuudet ovat samassa järjestyksessä kuin "palautumispulssit" tai korkeammat), tämä on ongelma. Erityisesti Arduino UNO, joka toimii taajuudella 16 MHz, on erinomainen tarttumaan kosketuksen palautumiseen hyväksymällä yhden ja nollan sekvenssin yhden 0: 1-kytkimen sijaan.

Ota yhteyttä, kun painat painiketta
Ota yhteyttä, kun painat painiketta

Vaihe 2

Katsotaanpa, kuinka kontaktin palautuminen vaikuttaa piirin oikeaan toimintaan. Yhdistetään kellopainike Arduinoon käyttämällä alasvetovastusvirtapiiriä. Painamalla painiketta, sytytämme LED-valon ja jätämme sen palamaan, kunnes painiketta painetaan uudelleen. Selkeyden vuoksi yhdistämme ulkoisen LEDin digitaaliseen tapiin 13, vaikka sisäänrakennetusta voidaan luopua.

Painikkeen liittäminen Arduinoon ylösvetovastuksen piirillä
Painikkeen liittäminen Arduinoon ylösvetovastuksen piirillä

Vaihe 3

Tämän tehtävän suorittamiseksi tulee ensin mieleen:

- muista painikkeen edellinen tila;

- vertaa nykytilaan;

- jos tila on muuttunut, muutamme LED-valon tilaa.

Kirjoitetaan tällainen luonnos ja ladataan se Arduino-muistiin.

Kun piiri kytketään päälle, kontaktin pomppiminen on heti näkyvissä. Se ilmenee siitä, että LED ei syty heti painikkeen painamisen jälkeen, tai syttyy ja sammuu sitten tai ei sammu heti painikkeen painamisen jälkeen, vaan pysyy päällä. Yleensä piiri ei toimi vakaasti. Ja jos tehtävässä, jossa LED-valo kytketään päälle, tämä ei ole niin kriittistä, niin muihin vakavampiin tehtäviin sitä ei yksinkertaisesti voida hyväksyä.

Piirros käsittelypainikkeen painamisesta ottamatta huomioon kontaktin palautumista
Piirros käsittelypainikkeen painamisesta ottamatta huomioon kontaktin palautumista

Vaihe 4

Yritämme korjata tilanteen. Tiedämme, että kontaktin palautuminen tapahtuu muutaman millisekunnin sisällä kontaktin sulkemisen jälkeen. Odotetaan esimerkiksi 5 ms painikkeen tilan muuttamisen jälkeen. Tämä aika ihmiselle on melkein välitön, ja henkilön painikkeen painaminen vie yleensä paljon kauemmin - useita kymmeniä millisekunteja. Ja Arduino toimii erinomaisesti niin lyhyillä ajanjaksoilla, ja näiden 5 ms: n avulla se voi katkaista kontaktien pomppimisen painikkeesta.

Tässä luonnoksessa julistetaan debounce () -prosessi (englanniksi "bounce" on vain "bounce", etuliite "de" tarkoittaa käänteistä prosessia), jonka tuloon toimitamme painikkeen edellisen tilan. Jos painikkeen painallus kestää yli 5 ms, se on todella painallus.

Tunnistamalla puristimen muutamme LED-tilan.

Lataa luonnos Arduino-levylle. Kaikki on nyt paljon parempi! Painike toimii epäonnistumatta, kun sitä painetaan, LED muuttaa tilaa, kuten halusimme.

Piirros painikkeen painamisen käsittelystä ottamalla huomioon kontaktin palautuminen
Piirros painikkeen painamisen käsittelystä ottamalla huomioon kontaktin palautuminen

Vaihe 5

Samanlaisen toiminnallisuuden tarjoavat erikoiskirjastot, kuten Bounce2-kirjasto. Voit ladata sen Lähteet-osion linkistä tai verkkosivustolta https://github.com/thomasfredericks/Bounce2. Asenna kirjasto sijoittamalla se Arduino-kehitysympäristön kirjastohakemistoon ja käynnistämällä IDE uudelleen.

"Bounce2" -kirjasto sisältää seuraavat menetelmät:

Bounce () - "Bounce" -objektin alustaminen;

void interval (ms) - asettaa viiveajan millisekunteina;

void attach (pin number) - määrittää tappi, johon painike on kytketty;

int update () - päivittää objektin ja palauttaa arvon true, jos pin-tila on muuttunut, ja väärin muuten;

int luku () - lukee nastan uuden tilan.

Kirjoitetaan luonnos uudelleen kirjaston avulla. Voit myös muistaa ja verrata painikkeen aikaisempaa tilaa nykyiseen, mutta yksinkertaistetaan algoritmia. Kun painiketta painetaan, laskemme painotukset, ja jokainen pariton painallus sytyttää LEDin ja jokainen tasainen painallus sammuttaa sen. Tämä luonnos näyttää ytimekkäästi, helposti luettavalta ja helppokäyttöiseltä.

Suositeltava: