Care este diferența dintre potențiometrul Arduino și codificatorul rotativ

Care Este Diferenta Dintre Potentiometrul Arduino Si Codificatorul Rotativ



Potențiometrele și codificatoarele rotative sunt folosite ambele pentru a detecta rotația sau poziția. Sunt dispozitive electromecanice utilizate avand aplicatii diverse in domeniul electronicii. Ele pot fi, de asemenea, interfațate cu Arduino pentru realizarea diferitelor proiecte. Acest articol este de a demonstra diferențele fundamentale dintre un potențiometru și un encoder rotativ.

Ce este un potențiometru

Un potențiometru este un reostat, sau îl putem numi un rezistor variabil. Valoarea rezistenței variază în funcție de rotația arborelui potențiometrului. Potențiometrele se pot întoarce doar la o distanță stabilită. Există atât potențiometre analogice, cât și potențiometre digitale, dar sunt aproape similare. Potențiometrele analogice pot fi interfațate cu microcontrolere de pe Arduino, Raspberry Pi și alte dispozitive. Un potențiometru are trei pini care sunt pinul de tensiune de intrare Vcc, Ground Pin GND și pinul semnalului de intrare. Pinul de semnal oferă intrare la Arduino.









Ce este un codificator rotativ

Codificatoarele rotative detectează poziția unghiulară a butonului rotativ și trimit un semnal microcontrolerului sau oricărui alt dispozitiv la care sunt conectate. Are un disc cu zone de contact uniform distanțate care sunt conectate la un pin comun. Codificatoarele rotative au, de asemenea, un buton sau un comutator rotativ încorporat care dă semnale ON și OFF conform cerințelor specifice.







Diagrama de conectare și descrierea pinului codificatorului rotativ

Diagrama de mai jos prezintă pinii codificatorului rotativ. Acești pini sunt descriși după cum urmează:

Ieșit B sau CLK



Acest pin dă o ieșire de câte ori s-a rotit butonul sau codificatorul rotativ. De fiecare dată când butonul este rotit, CLK finalizează un ciclu de HIGH și LOW. Este socotită ca o singură rotație.

Ieșire A sau DT

Acesta este al doilea pin de ieșire al codificatorului rotativ care determină direcția de rotație. Este în urmă cu 90° în urma semnalului CLK. Prin urmare, dacă starea sa nu este egală cu starea lui CLK, atunci direcția de rotație este în sensul acelor de ceasornic, în caz contrar, în sens invers acelor de ceasornic.

Intrerupator

Pinul comutatorului este folosit pentru a verifica dacă butonul este apăsat sau nu.

Vcc

Acest pin este conectat la o sursă de 5V

GND

Acest pin este conectat la pământ

Diferența dintre potențiometru și codificator rotativ

Specificație Potențiometru Rotativ
Rotație Potențiometrul poate fi rotit doar într-o singură direcție și, de asemenea, pentru trei sferturi de cerc. Codificatorul rotativ este capabil să se rotească la 360° continuu, atât în ​​sensul acelor de ceasornic, cât și în sens invers acelor de ceasornic.
Dispozitiv analogic sau digital Potențiometrul este în mare parte un dispozitiv de intrare analogic care măsoară schimbarea poziției printr-o modificare a valorii unui rezistor Un encoder rotativ este un dispozitiv digital de intrare care detectează poziția unghiulară și furnizează valori digitale.

Numărul de poziții de intrare Un potențiometru are un număr infinit de poziții de intrare pe care pot fi luate valori deoarece este un dispozitiv analogic Codificatoarele rotative au un număr finit de poziții de intrare.

Configurarea potențiometrului cu Arduino

Potențiometrul este mai ușor de configurat cu un Arduino decât cu un encoder rotativ. Potențiometrul are doar trei pini VCC, GND și un pin INPUT care este conectat la Arduino. Interfața potențiometrului cu Arduino este prezentată mai jos:

Programarea potențiometrului în Arduino este mai ușoară decât cea a codificatorului rotativ. Mai jos sunt prezentate exemple de coduri de sintaxă pentru ambele.

Exemplu de cod pentru potențiometru

const int pot = A0; // Declarați pinul de intrare
anulează configurarea ( ) {
   pinMode ( oală, INTRARE ) ; // Valoarea de setare luată de la potențiometru la fel de intrare
Serial.begin ( 9600 ) ;
}
buclă goală ( ) {
int potValue = analogRead ( oală ) ; // Citiți valoarea intrării luate de potențiometru
Hartă ( potValue, 0 , 1023 , 0 , 255 ) ; // Scalarea valorii intrării pentru a se potrivi 8 -pic
Serial.println ( potValue ) ; // Imprimă valoarea care a fost introdusă în potențiometru
întârziere ( 100 ) ;
}

Codul potențiometrului este foarte ușor și simplu. Pinul de intrare analogic al Arduino este pur și simplu declarat pentru a prelua intrarea de la potențiometru, iar apoi funcțiile analogRead() și map() sunt folosite pentru a citi și a da valoarea exactă a citirii de la potențiometru.

Interfața codificatorului rotativ cu Arduino

Codificatorul rotativ are cinci pini. VCC și GND ale codificatorului rotativ sunt conectate la cel al Arduino. Pinii rămași CLK, DT și SW sunt conectați la pinii de intrare digitală ai Arduino.

Cod Arduino pentru codificatorul rotativ

// Intrări pentru codificator rotativ
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int counter = 0 ;
int curentCLKState;
int lastCLKState;
String currentDirection = '' ;
nesemnat lung lastButtonPressTime = 0 ;
anulează configurarea ( ) {
// Setați pinii codificatorului la fel de intrări
    pinMode ( CLK_PIN, INTRARE ) ;
    pinMode ( DT_PIN, INTRARE ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Configurați monitorul serial
Serial.begin ( 9600 ) ;
// Citiți starea inițială a CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
buclă goală ( ) {
// Citiți starea actuală a CLK
currentCLKState = digitalRead ( CLK_PIN ) ;
// Dacă ultimul și starea actuală a CLK sunt diferite, apoi a apărut un puls
// Reacționează numai la 1 schimbarea stării pentru a evita dubla numărare
dacă ( actualCLKState ! = ultimulCLKState && currentCLKState == 1 ) {
// Dacă starea DT este diferită de starea CLK, apoi
// codificatorul se rotește în sens invers acelor de ceasornic, deci reduceți
dacă ( digitalRead ( DT_PIN ) ! = actualCLKState ) {
tejghea--;
currentDirection = 'CCW' ;
} altfel {
// Codificatorul se rotește în sensul acelor de ceasornic, deci incrementați
contor++;
currentDirection = 'CW' ;
}
Serial.print ( „Direcția de rotație:” ) ;
Serial.print ( currentDirection ) ;
Serial.print ( ' | Valoarea contorului: ' ) ;
Serial.println ( tejghea ) ;
}
// Amintiți-vă de ultimul stare CLK
lastCLKState = actualCLKState;
// Citiți starea butonului
int buttonState = digitalRead ( SW_PIN ) ;
// Dacă detectăm un semnal LOW, butonul este apăsat
dacă ( buttonState == LOW ) {
// Dacă au trecut 50 ms de la ultimul Puls scăzut, înseamnă că
// butonul a fost apăsat, eliberat și apăsat din nou
dacă ( milis ( ) - LastButtonPressTime > cincizeci ) {
Serial.println ( 'Buton apăsat!' ) ;
}
// Amintiți-vă de ultimul eveniment apăsare buton timp
lastButtonPressTime = milis ( ) ;
}
// A pune în o ușoară întârziere la Ajutor retrage lectura
întârziere ( 1 ) ;
}

În codul de mai sus, starea pinului CLK este verificată în funcția loop(). Dacă nu este egal cu starea anterioară, arată că butonul rotativ s-a rotit. Acum, pentru a verifica direcția de rotație a butonului, starea actuală a CLK este comparată cu starea DT. Dacă ambele stări sunt inegale, arată că butonul s-a rotit în sensul acelor de ceasornic și contorul își crește valoarea pentru a afișa poziția butonului rotativ. În cazul opus, contra decrește.

Aplicații

Potențiometrele sunt utilizate în principal acolo unde este necesară o funcție de control. Sunt folosite în controlul volumului, controlul luminozității LED-urilor. Pe de altă parte, codificatoarele rotative oferă o gamă largă de aplicații. Sunt folosite în robotică, echipamente medicale, automatizări și jocuri.

Concluzie

Potențiometrele și codificatoarele rotative sunt ambele dispozitive deosebit de utile în domeniul electronicii. Codificatoarele rotative sunt avansate în comparație cu potențiometrele, deoarece se pot roti continuu la 360°. În mod similar, au mai multe aplicații în electronica modernă și sunt puțin mai dificil de utilizat decât potențiometrele .