Sommario:
- Passaggio 1: comprensione dei dati di output
- Passaggio 2: costruisci il circuito
- Passaggio 3: scrittura del codice
Video: Encoder rotativo - Comprendilo e usalo (Arduino/altro Controller): 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Un encoder rotativo è un dispositivo elettromeccanico che converte il movimento rotatorio in informazioni digitali o analogiche. Può girare in senso orario o antiorario. Esistono due tipi di encoder rotativi: encoder assoluti e relativi (incrementali).
Mentre un encoder assoluto emette un valore proporzionale all'angolo dell'albero corrente, un encoder incrementale emette il passo dell'albero e la sua direzione. (In questo caso abbiamo un encoder incrementale)
Gli encoder rotativi stanno diventando più popolari perché è possibile utilizzare due funzioni in un modulo elettrico: un semplice interruttore per confermare le operazioni e l'encoder rotante per navigare, ad es. attraverso un menù.
Un encoder rotativo incrementale genera due segnali di uscita mentre il suo albero ruota. A seconda della direzione, uno dei segnali conduce l'altro. (vedi sotto)
Passaggio 1: comprensione dei dati di output
Come puoi vedere quando l'albero dell'encoder inizia a ruotare in senso orario, l'uscita A scende per prima su LOW e l'uscita B la segue. In senso antiorario l'operazione gira in senso opposto.
Ora non ci resta che implementarlo sul nostro µController (ho usato un Arduino Nano).
Passaggio 2: costruisci il circuito
Come ho descritto prima, le uscite creano un fianco ALTO e uno BASSO. Per ottenere un HIGH pulito ai pin dati A e B del µController dobbiamo aggiungere resistori Pull-Up. Il Pin comune C va dritto a massa per il fianco BASSO.
Per avere informazioni sull'interruttore interno (pulsante) utilizzeremo gli altri due pin. Uno di questi va a VCC e l'altro a un Pin dati del µController. Dobbiamo anche aggiungere un resistore pull-down al pin dati per ottenere un LOW pulito.
È anche possibile utilizzare resistori interni di Pull-Up e Pull-Down del tuo µController!
Nel mio caso il pinout è simile a:
- +3, 3V => +3, 3V (Arduino)(possibile anche +5V)
- GND => GND (Arduino)
- A => Pin10
-
B =>
Spillo
11
- C => GND
-
SW =>
Spillo
12
Passaggio 3: scrittura del codice
int pinA = 10; //interruttore interno A int pinB = 11; //interruttore interno B int pinSW = 12; //switch (premuto Encoder) int encoderPosCount = 0; // inizia da zero, cambia se vuoi
int positionval;
valore bool; int mrotateLast; int mrotate;
void setup() {
int mrotateLast = digitalRead(pinA); Inizio seriale (9600); ritardo(50); }
void loop() { readencoder(); if(readswitch() == 1){ Serial.println("Switch = 1"); } }
int readencoder (){
mrotate = digitalRead(pinA); if (mrotate != mrotateLast){ //la manopola sta ruotando if (digitalRead(pinB) != mrotate) { //switch A modificato per primo -> rotazione in senso orario encoderPosCount ++; Serial.println ("ruotato in senso orario"); } else {// switch B modificato per primo -> rotazione in senso antiorario encoderPosCount--; Serial.println ("ruotato in senso antiorario"); }
Serial.print("Posizione codificatore: "); Serial.println(encoderPosCount); Serial.println(""); } mrotateLast = mrotate; restituire encoderPosCount; } bool readswitch(){
if(digitalRead(pinSW)!=0){ // l'interruttore è premuto
while(digitalRead(pinSW)!=0){} //l'interruttore è attualmente premuto switchval = 1; } else{switchval = 0;} //l'interruttore non è premuto return switchval; }
Ora puoi ruotare l'encoder e la variabile encoderPosCount conterà in aumento se ruoti in senso orario e conto alla rovescia se ruoti in senso antiorario.
Questo è tutto! Semplice e utile.
Sentiti libero di modificare ed eseguire il codice. Puoi implementarlo nel tuo progetto.
Caricherò anche un progetto LED in cui ho utilizzato l'encoder per impostare la luminosità dei miei LED.
Consigliato:
Come utilizzare il motore passo-passo come encoder rotativo e display OLED per passaggi: 6 passaggi
Come utilizzare il motore passo-passo come encoder rotativo e display OLED per i passaggi: In questo tutorial impareremo come tenere traccia dei passaggi del motore passo-passo sul display OLED. Guarda un video dimostrativo. Il merito del tutorial originale va all'utente di YouTube "sky4fly"
Encoder rotativo con Arduino Nano: 4 passaggi
Encoder rotativo utilizzando Arduino Nano: Ciao a tutti, in questo articolo farò un tutorial su come utilizzare un encoder rotativo utilizzando Arduino Nano. Per utilizzare questo codificatore rotativo non è necessaria una libreria esterna. Quindi possiamo creare direttamente programmi senza prima aggiungere librerie. ok iniziamo con
Encoder rotativo: come funziona e come utilizzarlo con Arduino: 7 passaggi
Encoder rotativo: come funziona e come utilizzarlo con Arduino: puoi leggere questo e altri fantastici tutorial sul sito Web ufficiale di ElectroPeakPanoramicaIn questo tutorial imparerai come utilizzare l'encoder rotativo. Innanzitutto, vedrai alcune informazioni sull'encoder rotazionale, quindi imparerai come
YABC - Ancora un altro controller Blynk - Controller di temperatura e umidità cloud IoT, ESP8266: 4 passaggi
YABC - Yet Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: Ciao Makers, recentemente ho iniziato a coltivare funghi a casa, funghi ostriche, ma ho già 3x di questi controller a casa per il controllo della temperatura del fermentatore per la mia birra fatta in casa, moglie sta anche facendo questa cosa Kombucha ora, e come termostato per il calore
Tutorial dell'encoder rotativo con Arduino: 6 passaggi
Tutorial dell'encoder rotativo con Arduino: L'encoder rotativo è un componente elettronico in grado di monitorare il movimento e la posizione durante la rotazione. L'encoder rotativo utilizza sensori ottici in grado di generare impulsi quando l'encoder rotativo ruota. Applicazione dell'encoder rotativo solitamente come mec