Kako Se Riješiti Odbijanja Kontakta Prilikom Spajanja Gumba Na Arduino

Sadržaj:

Kako Se Riješiti Odbijanja Kontakta Prilikom Spajanja Gumba Na Arduino
Kako Se Riješiti Odbijanja Kontakta Prilikom Spajanja Gumba Na Arduino

Video: Kako Se Riješiti Odbijanja Kontakta Prilikom Spajanja Gumba Na Arduino

Video: Kako Se Riješiti Odbijanja Kontakta Prilikom Spajanja Gumba Na Arduino
Video: Как прошить китайский Ардуино для работы с софтом Ардуино. CH340 2024, Studeni
Anonim

Već smo pogledali spajanje gumba na Arduino i dotakli smo se problema "odskakanja" kontakata. Ovo je vrlo dosadan fenomen koji uzrokuje ponavljano pritiskanje gumba i otežava programsko rukovanje klikovima na gumbe. Razgovarajmo o tome kako se riješiti odskoka od kontakta.

Učinak odbijanja kontakta
Učinak odbijanja kontakta

Potrebno

  • - Arduino;
  • - tipka za taktiranje;
  • - otpor nominalne vrijednosti 10 kOhm;
  • - Dioda koja emitira svjetlo;
  • - spojne žice.

Upute

Korak 1

Odskakanje kontakata česta je pojava kod mehaničkih prekidača, tipki, preklopnih sklopki i releja. Zbog činjenice da su kontakti obično izrađeni od metala i legura koje imaju elastičnost, kada su fizički zatvoreni, ne uspostavljaju odmah pouzdanu vezu. U kratkom vremenskom razdoblju kontakti se nekoliko puta zatvore i međusobno se odbijaju. Kao rezultat, električna struja poprima stabilnu vrijednost ne odmah, već nakon niza uspona i padova. Trajanje ovog prolaznog učinka ovisi o materijalu kontakta, veličini i dizajnu. Ilustracija prikazuje tipični oscilogram kad su kontakti gumba za taktiranje zatvoreni. Vidi se da je vrijeme od trenutka prelaska u stabilno stanje nekoliko milisekundi. To se naziva "odskok".

Ovaj se učinak ne primjećuje u električnim krugovima za upravljanje rasvjetom, motorima ili drugim inercijskim senzorima i uređajima. Ali u krugovima gdje postoji brzo čitanje i obrada informacija (gdje su frekvencije istog reda kao i "odskočni" impulsi ili više), to je problem. Konkretno, Arduino UNO, koji radi na 16 MHz, izvrsno hvata odskok kontakta prihvaćajući slijed jedinica i nula umjesto jednog prekidača 0 do 1.

Odskok kontakta pritiskom na tipku
Odskok kontakta pritiskom na tipku

Korak 2

Pogledajmo kako odskok kontakta utječe na ispravan rad sklopa. Spojimo gumb sata na Arduino pomoću padajućeg kruga otpora. Pritiskom na tipku upalit ćemo LED i ostaviti je uključenu dok se tipka ponovno ne pritisne. Radi jasnoće, na digitalni pin 13 priključujemo vanjsku LED diodu, iako se s ugrađenom može odustati.

Spajanje gumba na Arduino pomoću sklopnog otpornog kruga
Spajanje gumba na Arduino pomoću sklopnog otpornog kruga

3. korak

Da biste izvršili ovaj zadatak, prvo što vam padne na pamet:

- sjetite se prethodnog stanja gumba;

- usporediti sa trenutnim stanjem;

- ako se stanje promijenilo, tada mijenjamo stanje LED-a.

Napišimo takvu skicu i učitajmo je u Arduino memoriju.

Kad je krug uključen, učinak poskakivanja kontakta odmah je vidljiv. Očituje se u tome što LED dioda ne svijetli odmah nakon pritiska na tipku, ili svijetli, a zatim se gasi, ili se ne isključuje odmah nakon pritiska na tipku, već ostaje upaljena. Općenito, sklop ne radi stabilno. I ako za zadatak s uključivanjem LED-a ovo nije toliko kritično, onda je za druge, ozbiljnije zadatke, jednostavno neprihvatljivo.

Skica pritiska gumba za obradu bez uzimanja u obzir odskoka kontakta
Skica pritiska gumba za obradu bez uzimanja u obzir odskoka kontakta

4. korak

Pokušat ćemo popraviti situaciju. Znamo da se odskok kontakta događa u roku od nekoliko milisekundi nakon zatvaranja kontakta. Pričekajmo, recimo, 5 ms nakon promjene stanja gumba. Ovo je vrijeme za osobu gotovo trenutak, a pritiskanje tipke od strane osobe obično traje puno duže - nekoliko desetaka milisekundi. A Arduino izvrsno radi s tako kratkim vremenskim razdobljima, a ovih 5 ms omogućit će mu da prekine odskok kontakata pritiskom na gumb.

U ovoj ćemo skici proglasiti postupak debounce () ("bounce" na engleskom je samo "bounce", prefiks "de" znači obrnuti postupak), na čiji ulaz isporučujemo prethodno stanje gumba. Ako pritisak gumba traje više od 5 ms, to je stvarno pritiskanje.

Otkrivanjem tiska mijenjamo stanje LED diode.

Prenesite skicu na ploču Arduino. Sad je sve puno bolje! Tipka radi bez grešaka, kada se pritisne, LED mijenja stanje, kao što smo željeli.

Skica obrade pritiska gumba, uzimajući u obzir odskok kontakata
Skica obrade pritiska gumba, uzimajući u obzir odskok kontakata

Korak 5

Sličnu funkcionalnost pružaju posebne knjižnice poput knjižnice Bounce2. Možete ga preuzeti s veze u odjeljku "Izvori" ili na web mjestu https://github.com/thomasfredericks/Bounce2. Da biste instalirali knjižnicu, stavite je u direktorij biblioteka razvojnog okruženja Arduino i ponovno pokrenite IDE.

Biblioteka "Bounce2" sadrži sljedeće metode:

Bounce () - inicijalizacija objekta "Bounce";

interval praznine (ms) - postavlja vrijeme kašnjenja u milisekundama;

void attach (pin number) - postavlja pin na koji je gumb povezan;

int update () - ažurira objekt i vraća true ako se stanje pina promijenilo, a false u suprotnom;

int read () - čita novo stanje pin-a.

Prepišimo našu skicu koristeći knjižnicu. Također se možete sjetiti i usporediti prošlo stanje gumba sa trenutnim, ali pojednostavnimo algoritam. Kad se pritisne tipka, izbrojat ćemo pritiske, a svaki neparni pritisak uključit će LED, a svaki će je parni pritisak isključiti. Ova skica izgleda jezgrovito, lako se čita i laka je za upotrebu.

Preporučeni: