Qual è la differenza tra il potenziometro Arduino e l'encoder rotativo

Qual E La Differenza Tra Il Potenziometro Arduino E L Encoder Rotativo



Entrambi i potenziometri e gli encoder rotativi vengono utilizzati per rilevare la rotazione o rilevare la posizione. Sono dispositivi elettromeccanici utilizzati con diverse applicazioni nel campo dell'elettronica. Possono anche essere interfacciati con Arduino per realizzare diversi progetti. Questo articolo ha lo scopo di dimostrare le differenze fondamentali tra un potenziometro e un encoder rotativo.

Cos'è un potenziometro

Un potenziometro è un reostato, o possiamo chiamarlo un resistore variabile. Il valore della resistenza varia in funzione della rotazione dell'albero del potenziometro. I potenziometri possono girare solo a una distanza prestabilita. Esistono sia potenziometri analogici che digitali, ma sono quasi simili. I potenziometri analogici possono essere interfacciati con microcontrollori su Arduino, Raspberry Pi e altri dispositivi. Un potenziometro possiede tre pin che sono il pin della tensione di ingresso Vcc, il pin di terra GND e il pin del segnale di ingresso. Il pin del segnale fornisce l'input ad Arduino.









Cos'è un codificatore rotativo

Gli encoder rotativi rilevano la posizione angolare della manopola rotante e inviano un segnale al microcontrollore oa qualsiasi altro dispositivo a cui sono collegati. Ha un disco con aree di contatto uniformemente distanziate che sono collegate a un pin comune. Gli encoder rotativi hanno anche un pulsante o un interruttore rotante integrato che fornisce segnali ON e OFF in base a requisiti specifici.







Schema pinout e descrizione pin dell'encoder rotativo

Lo schema riportato di seguito mostra i pin dell'encoder rotativo. Questi pin sono descritti come segue:

Uscita B o CLK



Questo pin fornisce un output di quante volte la manopola o il codificatore rotante ha ruotato. Ogni volta che la manopola viene ruotata, il CLK completa un ciclo di HIGH e LOW. Viene conteggiato come una rotazione.

Uscita A o DT

Questo è il secondo pin di uscita dell'encoder rotativo che determina la direzione di rotazione. È in ritardo di 90° rispetto al segnale CLK. Pertanto, se il suo stato non è uguale allo stato di CLK, il senso di rotazione è orario, altrimenti antiorario.

Interruttore

Il perno dell'interruttore viene utilizzato per verificare se il pulsante è premuto o meno.

Vcc

Questo pin è collegato a un'alimentazione a 5V

GND

Questo pin è collegato a terra

Differenza tra potenziometro ed encoder rotativo

Specifica Potenziometro Encoder rotativo
Rotazione Il potenziometro può essere ruotato solo in una direzione, e anche quella per tre quarti di cerchio. L'encoder rotativo è in grado di ruotare di 360° continuamente sia in senso orario che antiorario.
Dispositivo analogico o digitale Il potenziometro è principalmente un dispositivo di input analogico che misura il cambiamento di posizione attraverso un cambiamento nel valore di un resistore Un encoder rotativo è un dispositivo di input digitale che rileva la posizione angolare e fornisce valori digitali.

Numero di posizioni di input Un potenziometro ha un numero infinito di posizioni di ingresso su cui possono essere presi i valori perché è un dispositivo analogico Gli encoder rotativi hanno un numero finito di posizioni di ingresso.

Configurare il potenziometro con Arduino

Il potenziometro è più facile da configurare con un Arduino rispetto a un encoder rotativo. Il potenziometro ha solo tre pin VCC, GND e un pin INPUT collegato ad Arduino. L'interfacciamento del potenziometro con Arduino è mostrato di seguito:

La programmazione del potenziometro in Arduino è più semplice di quella del codificatore rotativo. Di seguito sono riportati i codici di sintassi di esempio per entrambi.

Codice di esempio per potenziometro

const int pot = A0; // Dichiara il pin di input
configurazione nulla ( ) {
   pinMode ( pentola, INGRESSO ) ; // Valore di impostazione preso dal potenziometro COME ingresso
Inizio.seriale ( 9600 ) ;
}
anello vuoto ( ) {
int potValue = analogRead ( pentola ) ; // Leggere il valore dell'ingresso preso dal potenziometro
carta geografica ( potValue, 0 , 1023 , 0 , 255 ) ; // Scalare il valore dell'input in modo che corrisponda 8 -morso
Serial.println ( potValue ) ; // Stampa il valore immesso nel potenziometro
ritardo ( 100 ) ;
}

Il codice del potenziometro è molto facile e semplice. Il pin di input analogico di Arduino viene semplicemente dichiarato per ricevere l'input dal potenziometro, quindi le funzioni analogRead() e map() vengono utilizzate per leggere e fornire il valore esatto della lettura dal potenziometro.

Interfacciamento encoder rotativo con Arduino

Il codificatore rotativo ha cinque pin. VCC e GND dell'encoder rotativo sono collegati a quello di Arduino. I restanti pin CLK, DT e SW sono collegati ai pin di ingresso digitale di Arduino.

Codice Arduino per encoder rotativo

// Ingressi codificatore rotativo
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int contatore = 0 ;
int currentCLKState;
int ultimoCLKState;
Stringa direzione corrente = '' ;
unsigned long lastButtonPressTime = 0 ;
configurazione nulla ( ) {
// Impostare i pin dell'encoder COME ingressi
    modalità pin ( CLK_PIN, INGRESSO ) ;
    modalità pin ( DT_PIN, INGRESSO ) ;
    modalità pin ( SW_PIN, INPUT_PULLUP ) ;
// Configura monitor seriale
Inizio.seriale ( 9600 ) ;
// Leggi lo stato iniziale di CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
anello vuoto ( ) {
// Leggi lo stato attuale di CLK
currentCLKState = digitalRead ( CLK_PIN ) ;
// Se scorso e lo stato attuale di CLK sono diversi, Poi si è verificato un impulso
// Reagisci solo a 1 cambio di stato per evitare il doppio conteggio
Se ( currentCLKState ! = ultimoCLKStato && statoCLK corrente == 1 ) {
// Se lo stato DT è diverso dallo stato CLK, Poi
// l'encoder ruota in senso antiorario, quindi diminuisci
Se ( digitaleLeggi ( DT_PIN ) ! = statoCLK corrente ) {
contatore--;
correnteDirezione = 'antiorario' ;
} altro {
// L'encoder ruota in senso orario, quindi incrementare
contatore++;
correnteDirezione = 'CW' ;
}
Stampa.seriale ( 'Direzione di rotazione: ' ) ;
Stampa.seriale ( currentDirection ) ;
Stampa.seriale ( ' | Valore contatore: ' ) ;
Serial.println ( contatore ) ;
}
// Ricorda il scorso Stato CLK
lastCLKState = currentCLKState;
// Leggi lo stato del pulsante
int buttonState = digitalRead ( SW_PIN ) ;
// Se rileviamo un segnale BASSO, il pulsante viene premuto
Se ( buttonState == BASSO ) {
// Se sono trascorsi 50ms dal scorso Impulso BASSO, significa che il
// pulsante è stato premuto, rilasciato e premuto di nuovo
Se ( milli ( ) - lastButtonPressTime > cinquanta ) {
Serial.println ( 'Pulsante premuto!' ) ;
}
// Ricorda il scorso evento di pressione del pulsante tempo
lastButtonPressTime = millis ( ) ;
}
// Mettere In un leggero ritardo a aiuto rimbalzare la lettura
ritardo ( 1 ) ;
}

Nel codice sopra indicato, lo stato del pin CLK viene controllato nella funzione loop(). Se non è uguale al suo stato precedente, mostra che la manopola rotante ha ruotato. Ora, per verificare la direzione di rotazione della manopola, lo stato attuale di CLK viene confrontato con lo stato di DT. Se entrambi gli stati non sono uguali, indica che la manopola ha ruotato in senso orario e il contatore incrementa il suo valore per mostrare la posizione della manopola. Nel caso opposto, il contatore diminuisce.

Applicazioni

I potenziometri vengono utilizzati principalmente dove è richiesta una funzione di controllo. Sono utilizzati nel controllo del volume, controllo della luminosità del LED. D'altra parte, gli encoder rotativi offrono un'ampia gamma di applicazioni. Sono utilizzati in robotica, apparecchiature mediche, automazione e giochi.

Conclusione

Potenziometri ed encoder rotativi sono entrambi dispositivi particolarmente utili nel campo dell'elettronica. Gli encoder rotativi sono avanzati rispetto ai potenziometri, in quanto possono ruotare continuamente a 360°. Allo stesso modo, hanno più applicazioni nell'elettronica moderna e sono leggermente più difficili da usare rispetto ai potenziometri .