Anterior, m-am ocupat întotdeauna de butoane de pe microcontrolerele mele, dar recent am căzut accidental în mâinile hardware-ului cu encodere, așa că am decis să încerc acest dispozitiv în afaceri.
Codificatoare sunt frecvent utilizate în casetofoane pentru a regla volumul și alte setări: ton, echilibru, meniu la alegere, configurare radio. În general, codificatorii sunt utilizați în cazul rezistențelor variabile utilizate anterior.
În exterior, codificatorul este foarte asemănător cu un rezistor variabil, dar în mod constructiv există diferențe fundamentale
Principalul avantaj al codificatorului asupra rezistențelor variabile este acela că se rotește continuu. În principiu, rezistor de asemenea, poate fi modificat, astfel încât să se învârtea continuu, dar ADC este necesar să-l proces, iar acest lucru este o creștere a bugetului echipamentelor. Și, în plus, nu toate microcontrolerele au un ADC încorporat.
Pentru conectare, codificatorul are trei iesiri. Terminalul central este comun, iar cele două extreme sunt periodic închise cu un terminal mediu în timpul rotației, formând impulsuri.
Producția medie este comună. Cele două conducte de capăt sunt închise la ieșirea din mijloc atunci când arborele codificatorului se rotește.
Principiul funcționării incrementale a codificatorului este că, atunci când mânerul se rotește pe două ieșiri, se formează impulsuri. În funcție de numărul de impulsuri poate determina unghiul de rotație al arborelui, iar defazajul dintre cele două semnale determină direcția de rotație. Dacă impulsul a apărut mai întâi pe contactul corect, arborele se rotește spre dreapta. Dacă impulsul a apărut mai întâi la capătul din stânga, arborele se rotește corespunzător spre stânga. În mod obișnuit, codificatorul oferă 24 de impulsuri per revoluție completă.
Graficul semnalelor de codificare când arborele se rotește în direcții diferite
Am ajuns în mâinile codificatoarelor a două modele diferite, dar rezultatul muncii lor este același.
La baza encoderului mecanic incremental se poate folosi un disc rotativ, pe suprafața căruia sunt poziționate radial 24 de benzi de contact. Aceste contacte se alterne alternativ cu două contacte cu arc alternativ când se rotește.
Când arborele se rotește, contactele radiale ale discului sunt închise cu contacte cu arcuri.
Un design mai simplu conține trei contacte cu arc rotativ și un disc fix. O mască izolatoare se aplică pe suprafața discului, care, atunci când arborele se rotește, întrerupe periodic contactul electric dintre bornele codificatorului.
Arborele codificatorului are trei contacte care se rotesc prin disc cu un model dielectric. Drept urmare, contactele se apropie împreună.
Pe arborele secundar revers are dinți care sunt proptesc arcuri, poziții de blocare pentru efect atunci când arborele se rotește.
Ca subiect, am luat prima placă de testare pe microcontrolerul ATmega8. În plus față de controlerul de pe placă, m-am interesat de conectorul pentru programare, contactele pentru conectarea codorului și interfața pentru conectarea la portul COM al calculatorului. Pentru a asigura stabilitatea conexiunii microcontrolerului la PC-ul de pe placă, este prevăzut un rezonator de cuarț la 4 MHz.
Panou de testare bazat pe ATmega8
Schema de conectare a codificatorului este foarte simplă:
Conectăm terminalul de mijloc la sol;
Ieșirea din dreapta este conectată la MK cu 4 pini;
Ieșirea din stânga este conectată la pinul 5 MK;
De obicei, dreapta și stânga de contact pull-up rezistor la sursa de pozitiv, dar nu am făcut, pentru că Porturile MK deja au construit în rezistențe pull-up la 100k de retragere Vcc.
Mai departe, în CodeVisionAVR am scris rapid un program de testare nemantitat. Ca urmare a funcționării sale ieșiri microcontroler la terminalul de calculator a conținutului contra și starea de stânga și la dreapta contactelor codificatorul. Prin starea contactelor devine foarte clar cum funcționează codificatorul.
Contorul crește atunci când codorul este rotit spre dreapta și scade atunci când se rotește spre stânga.
Aici este textul de program (ușor introduceți-l într-un proiect pentru CodeVisionAVR, totul va fi acolo frumos și elegant aspectul și design al programului este un text foarte lame):
// -------- Setare USART -------------------------------------- --------------------------
UCSRB = 1<
UBRRL = 0x19;
// -------- setarea unei întreruperi externe ------------------------------------- ------------- SREG.7 = 1; // activați întreruperea generală printf ("AVRmegaboard este activat! \ n \ r"); // mesaj de control pentru PC Am flash-ul în microcontroler și ... nifiga nu funcționează, ceea ce nu este surprinzător! Dacă te uiți atent la contactul pistei encoder, este în mod clar de dezvoltare vizibilă a suprafețelor de frecare. Ca urmare, se observă efectul blocării contactelor în timpul comutării lor. Și viteza MK este suficientă pentru a sări în mod repetat ca o acționare reală a codificatorului. Pentru a combate saritura a decis să nu deranjeze și nu scrie protecție software de la contactul de respingere, și a intrat în modul de modă veche - între ieșirile codorului cositorite două condensatoare de 10nF, rupte din același organ baril codoare. Ca rezultat, totul a funcționat așa cum ar trebui! Conectăm MK la portul COM și observăm impulsurile de 24 pe o singură rotație a arborelui codificatorului. Condensatoarele sunt lipite între bornele codificatorului pentru a compensa efectul de declanșare al contactelor Există mai mulți algoritmi interesanți pentru procesarea semnalelor codificatorului, dacă este interesant, atunci pot să scriu despre el după un timp. P.S. În procesul de testare, nu a fost afectat nici un singur element radio! Codificatoarele sunt recuperate în siguranță și continuă să-și îndeplinească funcțiile. 10 luni Tag-uri: avr, encoder
GICR | = (0<Articole similare