microcontrolere AVR pentru începători
Mulți au auzit deja, probabil, această expresie ca o saritura de contact. Ce este de contact de respingere?
Da, totul este simplu și ușor: punctul este că, pentru orice impurități mecanice (apăsarea unui buton, de exemplu), contacte aproape imediat, dar așa cum au fost încă „vibreze“ pentru ceva timp.
În cazul în care electricianul, acest lucru este vibrația influenței puternice nu poate avea asupra performanței întregului dispozitiv (cu excepția cazului în care se poate accelerată arderea contactelor), electronica, mai ales în cazul în care este vorba de procese de mare viteză, saritura de contact foarte ușor poate cauza dispozitiv fals de declanșare sau eșecul programului.
Deci, să ne uităm la imaginea care afișează procesul fizic de respingere
Decât poate fi încărcată?
Să presupunem, de exemplu, programul de microcontroler monitorizează un port de intrare specific și ar trebui să funcționeze atunci când nivelul acestei intrări va fi setat la 0. Bine, am făcut clic pe butonul, și o logică zero, pe acest port. Se pare să fie bine.
Și, de fapt, ce se întâmplă? Într-un interval scurt de timp, nivelul de logica de pe această intrare se va schimba de mai multe ori la întâmplare! Rezultatul unei astfel de influență poate fi pur și simplu imprevizibil.
remediu Bounce
Elimină efectul de contact de respingere sunt două moduri: fie prin introducerea componentelor sau software suplimentare. Uită-te la ambele:
Software-ul de eliminare contact de respingere
Software-ul de contact Remediu de respingere se reduce la o întârziere în timp. Programul este introdus un interval de timp în care microcontrolerul nu răspunde la leagăne nivel logic.
În cazul conectării unui buton pentru port de intrare / ieșire a algoritmului de procesare poate fi după cum urmează.
La atingerea nivelului de tensiune dorit pe portul de ieșire o subrutină merge apoi unitate de întârziere. buclă de întârziere poate fi implementată în trepte registru până la un anumit număr sau un decrement la zero a mai multor registre.
Dacă butonul este folosit pentru a inițializa întrerupe externe, structura de întrerupere poate fi realizată prin următorul algoritm.
În procesul de întrerupere, vom dezactiva întrerupe extern și porni cronometrul. Potrivit întrerupere timer, am re-activa întrerupere externă.
Decalajul de timp necesar depinde de durata procesului pentru a contacta respingere. La proces medie debounce poate dura 0.01 - 0.3 secunde. Este posibil să se efectueze un interval de întârziere de 0,5 secunde, ceea ce este suficient de cap. În cazurile critice de timp, este necesar să se adapteze ora pe scena de depanare.
Eliminarea contactului bounce prin intermediul unor elemente suplimentare
Se utilizează ca același principiu de întârziere de timp. Pentru a rezolva problema de întârziere de timp pentru a elimina saritura de contact în două moduri:
1. o logică simplă
Funcționarea acestor circuite se bazează pe întârzierile de timp create folosind RC - lanțuri. Figura 2a este o diagramă, care întârzie activitatea pornire și de oprire, Figura 2c cuprinde un circuit cu o întârziere de numai incluziuni, și Figura 2d prezintă un circuit cu oprire întârziată. Aceste scheme sunt un circuit one-shot, care a fost deja scris într-una din părțile acestui articol. Figurile 2b, 2d, 2e prezintă diagramele de sincronizare.
Este ușor de observat că aceste cositoare sunt realizate pe cipuri seria K561, care se referă la chips-uri CMOS, astfel încât valorile de rezistențe și condensatoare sunt date în mod specific pentru astfel de chips-uri. Aceste balsamurile sunt pentru a fi utilizate în sistemele de construit on-chip seria K561, K564, K176, și altele asemenea.
2. Aplicarea RS flip-flop
Cel mai simplu mod de a elimina saritura de contact prin mijloace deja bine cunoscute pentru noi RS - declanșare, care este asamblat pe cip K155LA3 logica, sau mai degrabă elemente DD1.1 și DD1.2 acesteia. Suntem de acord că RS directe de ieșire - de declanșare este pinul 3, respectiv de ieșire inversă este de ieșire 6.
Când RS - declanșare este asamblat din elemente ale circuitelor logice, este necesar să se facă un astfel de acord. Dacă declanșatorul este terminat cip K155TV1 exemplu, poziția directă și inversă ieșirile datelor de referință specificate. Dar chiar și în acest caz, dacă nu utilizați intrările JK și C și chip este utilizat pur și simplu ca un RS - declanșare, acordul menționat mai sus poate fi destul de potrivită. De exemplu, pentru a ușura montarea chip de pe placa. Desigur, RS - intrările sunt de asemenea inversate.
În poziția comutatorului prezentat în diagramă, pentru a direcționa RS - trigger nivelul logic unu, iar pe revers, desigur, un zero logic. Starea de declanșare numărabile DD2.1 rămâne așa, în care el a fost la putere.
Dacă este necesar, puteți reseta folosind butonul SB2. Pentru a reseta flip-flop la putere între R - intrare și fir condensator comun conectat de capacitate mică, în intervalul de 0,05 ... 0,1 uF și între plus produse alimentare și R - intrare rezistor 1 ... 10 kohmi. În timp ce condensatorul nu este încărcat pe R - intrare de tensiune prezintă momentan un zero logic. Acest scurt zero, puls este suficient pentru resetarea flip-flop. lanț conectat la S - - intrare În cazul în care dispozitivul de condițiile necesare pentru a declanșa atunci când puterea stabilită într-un stat, atunci acest lucru RC. Trecerea RC - lanțul își va asuma digresiune, iar acum continuă să se lupte cu saritura pro de contact.
Apăsarea butonului SB1 conduce la închiderea de dreptul său în desen contact cu conductorul comun. În acest caz, la pinul 5 jetoane DD1.2 va sări o serie de impulsuri. Dar performanța de chips-uri chiar și cea mai lentă serie este mult mai mare decât viteza contactelor mecanice. Și astfel primul RS puls - declanșatorul este resetat la zero de stat, ceea ce corespunde unui nivel ridicat la ieșire invers.
În acest moment, este format dintr-o cădere de tensiune pozitivă, care este C - intrare DD2.1 de declanșare comută la starea opusă, care pot fi observate cu ajutorul LED-HL2. impulsuri ulterioare sări impact asupra RS - declanșare nu are, astfel încât starea DD2.1 de declanșare rămâne neschimbat.
Când eliberați butonul declanșator SB1 pe elemente DD1.1 DD1.2 merge din nou într-un singur stat. În acest moment, ieșirea inversă (pinul 6 DD1.2) formând o diferență de tensiune negativă, care nu se schimba starea DD2.1 de declanșare. Pentru a restabili starea inițială de numărare butonul de declanșare SB1 trebuie să faceți clic din nou. Ca și într-un astfel de dispozitiv ar funcționa și JK - declanșare.
Un astfel de generator de este un circuit tipic și funcționează corect și fiabil. Singurul său dezavantaj este utilizarea unui buton de contact de comutare.