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, Novembar
Anonim

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

Efekat odbijanja kontakta
Efekat odbijanja kontakta

Potrebno

  • - Arduino;
  • - tipka za taktiranje;
  • - otpornik nominalne vrijednosti 10 kOhm;
  • - dioda koja emituje svjetlost;
  • - spojne žice.

Instrukcije

Korak 1

Odskakanje kontakata česta je pojava kod mehaničkih prekidača, tipki, prekidača 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 periodu kontakti se nekoliko puta zatvore i međusobno se odbijaju. Kao rezultat, električna struja poprima stabilno stanje ne trenutno, već nakon niza uspona i padova. Trajanje ovog prolaznog efekta ovisi o materijalu kontakta, veličini i dizajnu. Ilustracija prikazuje tipični oscilogram kada su kontakti gumba za taktiranje zatvoreni. Vidi se da je vrijeme od trenutka prelaska u stabilno stanje nekoliko milisekundi. To se zove "odskok".

Ovaj efekt nije primjetan u električnim krugovima za upravljanje osvjetljenjem, motorima ili drugim inercijalnim 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 kontakata prihvaćajući niz jedinica i nula umjesto jednog prekidača 0 do 1.

Odskok kontakta pritiskom na dugme
Odskok kontakta pritiskom na dugme

Korak 2

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

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

Korak 3

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

- zapamtite prethodno stanje dugmeta;

- uporediti sa trenutnim stanjem;

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

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

Kada je krug uključen, efekt poskakivanja kontakta je odmah 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, krug 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 obrade gumba pritiskom bez uzimanja u obzir odbijanja kontakata
Skica obrade gumba pritiskom bez uzimanja u obzir odbijanja kontakata

Korak 4

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

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

Otkrivanjem tiska mijenjamo stanje LED diode.

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

Skica obrade pritiska na dugme, uzimajući u obzir odskok kontakata
Skica obrade pritiska na dugme, uzimajući u obzir odskok kontakata

Korak 5

Sličnu funkcionalnost pružaju posebne biblioteke poput Bounce2 biblioteke. Možete ga preuzeti s veze u odjeljku "Izvori" ili na web stranici https://github.com/thomasfredericks/Bounce2. Da biste instalirali knjižnicu, stavite je u direktorij biblioteka razvojnog okruženja Arduino i ponovo 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 dugme povezano;

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 biblioteku. Također se možete sjetiti i upoređivati prošlo stanje gumba sa trenutnim, ali pojednostavimo algoritam. Kad se pritisne tipka, brojat ćemo pritiske i svaki nepar pritisnut će LED, a svaki će je čak i isključiti. Ova skica izgleda jezgrovito, lako se čita i laka je za upotrebu.

Preporučuje se: