I potenziometri e gli encoder rotativi sembrano quasi identici a prima vista, ma funzionano in modi diversi. Scopri come utilizzare entrambi con un Arduino.
Tra i componenti elettronici di controllo dell'utente, le manopole rotanti si distinguono come alcune delle più soddisfacenti da usare. Possono integrare touchscreen e altri dispositivi di input, oltre a funzionare bene con pulsanti e interruttori. Ma come puoi aggiungere una manopola ai tuoi progetti Arduino fai-da-te?
Hai due opzioni principali: un potenziometro o un encoder rotativo. Questi componenti possono sembrare simili, ma i metodi per utilizzarli con un dispositivo come una scheda a microcontrollore Arduino sono molto diversi. Vediamo come si confrontano l'uno con l'altro.
Potenziometri vs. Encoder rotativi
La maggior parte dei potenziometri e degli encoder rotativi che gli appassionati di fai-da-te incontreranno hanno un fattore di forma simile. Hanno una base cubica o cilindrica con gambe di collegamento attaccate e un'asta rotonda che si attorciglia e presenta ritagli per un cappuccio su cui sedersi.
Alcuni potenziometri hanno un aspetto diverso, come quelli che si presentano sotto forma di lunghe diapositive, come quelle che si trovano sui deck di mixaggio musicale. Quando si tratta del tipo rotativo, tuttavia, a prima vista sembrano quasi identici agli encoder rotativi, quindi saresti perdonato se pensi che siano la stessa cosa.
Cos'è un potenziometro?
Un potenziometro è essenzialmente un resistore variabile. Quando l'albero viene ruotato, la resistenza all'interno del potenziometro cambia, consentendo all'utente di modificare le proprietà di un circuito senza doverlo ricostruire. I potenziometri possono essere sia analogici che digitali, ma i potenziometri digitali imitano quelli analogici e questo li rende molto simili nell'uso.
I potenziometri hanno sempre un punto iniziale e finale definito in cui l'albero non può più essere ruotato. Alcuni potenziometri hanno una sensazione irregolare quando vengono ruotati, ma molti sono anche lisci, come quelli che si trovano sui vecchi stereo.
Nonostante siano analogici, i potenziometri funzionano bene con i microcontrollori. Puoi facilmente impostare un potenziometro con un Raspberry Pi Pico o Arduino.
Cos'è un codificatore rotativo?
Gli encoder rotativi determinano la posizione del loro albero utilizzando un sensore per fornire un segnale analogico o digitale al dispositivo a cui sono collegati. Questo dice al dispositivo in quale posizione si trova l'encoder. Oltre all'albero rotante, gli encoder rotativi di solito dispongono anche di un pulsante integrato che viene azionato spingendo l'albero verso il basso.
A differenza dei potenziometri, gli encoder rotativi possono girare senza fermarsi e hanno quasi sempre urti tattili per ciascuna delle posizioni dell'albero. Molte auto moderne utilizzano encoder rotativi per controllare i loro sistemi di intrattenimento.
Come usare un potenziometro con un Arduino
Grazie al loro design semplice, usare un potenziometro con un Arduino è semplice. Il tuo potenziometro ha tre connettori: massa, uscita e vref. I pin di terra e vref si collegano rispettivamente ai connettori GND e 5V sul tuo Arduino, mentre il pin di uscita del potenziometro si collega a uno degli ingressi analogici sulla tua scheda.
Codice potenziometro Arduino
Il codice del tuo potenziometro Arduino inizia con il basic impostare() E ciclo continuo() template che vedrai quando crei un nuovo file nell'IDE di Arduino. Innanzitutto, aggiungi a const int variabile all'inizio del codice per registrare la connessione del pin analogico del potenziometro, in questo caso, A0.
costint potenziometro = A0;
A seguito di ciò, il impostare() la funzione è semplice: devi solo dichiarare il pin del tuo potenziometro come input. Puoi anche avviare una connessione seriale se desideri inviare dati al tuo PC per la diagnostica.
vuotoimpostare(){
pinMode (potenziometro, INPUT);
Seriale.inizio(9600);
}
Successivamente, è il momento di configurare il ciclo continuo() funzione. Inizia creando un file int variabile utilizzando il analogRead() funzione per memorizzare la posizione del potenziometro. Successivamente, puoi utilizzare il carta geografica() funzione per ridurre la dimensione del valore con cui hai a che fare, in questo esempio per corrispondere alle specifiche PWM, ad esempio per controllare la luminosità di un LED. Aggiungi un breve ritardo per garantire la stabilità.
vuotociclo continuo(){
int potentiometerValue = analogRead (potenziometro);
mappa (potentiometerValue, 0, 1023, 0, 255);
Seriale.println(potenziometroValore);
ritardo (10);
}
Ora che hai la posizione del tuo potenziometro, puoi usarlo con altre parti del codice. Ad esempio, un Se istruzione funzionerebbe bene per attivare il codice quando il potenziometro si trova in una posizione specifica.
costint potenziometro = A0;
vuotoimpostare(){
pinMode (potenziometro, INPUT);
Seriale.inizio(9600);
}
vuotociclo continuo(){
int potentiometerValue = analogRead (potenziometro);
mappa (potentiometerValue, 0, 1023, 0, 255);
Seriale.println(potenziometroValore);
ritardo (10);
}
Come utilizzare un codificatore rotativo con un Arduino
Gli encoder rotativi richiedono un codice più complesso rispetto ai potenziometri, ma sono comunque abbastanza facili da utilizzare. Il codificatore rotativo ha cinque pin: massa, VCC, un pin del pulsante (SW), uscita A (CLK) e uscita B (DT). I pin di terra e VCC si collegano rispettivamente ai connettori di terra e 5V su Arduino, mentre i pin SW, CLK e BT si collegano ai singoli connettori digitali su Arduino.
Codice codificatore rotativo Arduino
Per rendere il nostro codice più semplice e facile da usare, useremo la libreria SimpleRotary Arduino creata da MPrograms su Git Hub. Assicurati di aver installato questa libreria prima di iniziare a lavorare sul tuo codice.
Proprio come il codice del tuo potenziometro, puoi avviare lo script del codificatore rotativo con l'Arduino di base impostare() E ciclo continuo() modello di funzione. Inizia dichiarando la libreria SimpleRotary e assegnando i pin del codificatore in questo ordine; CLK, DT e SW.
#includere
SimpleRotary rotante(1,2,3);
Non è necessario aggiungere nulla al tuo impostare() funzione a meno che non si desideri utilizzare il monitor seriale per diagnosticare il codificatore rotativo.
vuotoimpostare(){
Seriale.inizio(9600);
}
IL ciclo continuo() funzione è una storia diversa. La determinazione della rotazione dell'albero dell'encoder inizia con a rotativo.ruota() chiamata di funzione assegnata a un int variabile. Se il risultato è 1, l'encoder gira in senso orario. Se il risultato è 2, l'encoder gira in senso antiorario. Il risultato sarà sempre 0 se l'encoder non ha girato dall'ultimo controllo.
Puoi usare Se istruzioni per attivare altro codice a seconda della direzione di rotazione del codificatore.
vuotociclo continuo(){
int codificatoreRotazione;
encoderRotation = rotary.rotate();if (encoderRotazione == 1) {
Serial.println("senso orario");
}
if (encoderRotation == 2) {
Serial.println("Antiorario");
}
}
Devi anche aggiungere del codice per il pulsante del tuo codificatore al file ciclo continuo() funzione. Questo processo è molto simile, tranne per il fatto che utilizzerai il file rotativo.push() funzione, piuttosto che rotativo.ruota().
vuotociclo continuo(){
int pulsante encoder;
encoderButton = rotary.push();
if (encoderButton == 1) {
Serial.println("pulsante premuto");
}
}
Questo script è abbastanza semplice e puoi fare molto per renderlo tuo. Vale la pena dare un'occhiata alla documentazione del progetto SimpleRotary per assicurarti di utilizzare tutte le sue caratteristiche principali. Una volta assemblato, il codice del codificatore dovrebbe assomigliare a questo.
#includere
SimpleRotary rotante(1,2,3);vuotoimpostare(){
Seriale.inizio(9600);
}vuotociclo continuo(){
int codificatoreRotazione;
encoderRotation = rotary.rotate();if (encoderRotazione == 1) {
Serial.println("senso orario");
}if (encoderRotation == 2) {
Serial.println("Antiorario");
}int pulsante encoder;
encoderButton = rotary.push();
if (encoderButton == 1) {
Serial.println("pulsante premuto");
}
}
Come scegliere tra potenziometri ed encoder rotativi per i progetti
Come puoi vedere, gli encoder rotativi e i potenziometri funzionano in modo abbastanza diverso. Entrambi questi componenti ti offrono nuovi modi per controllare i tuoi progetti di elettronica, ma quale dovresti scegliere?
I potenziometri sono convenienti e facili da usare, ma consentono solo un intervallo di ingresso limitato. Questo li rende ottimi quando si desidera controllare la luminosità di un LED o aumentare e diminuire la potenza destinata a componenti specifici e altre attività simili.
Gli encoder rotativi offrono molto più spazio rispetto ai potenziometri. L'inclusione di un pulsante significa che sono ottimi per i sistemi di controllo dei menu, come si vede in molte auto moderne. Questo tipo di componente è diventato molto popolare nello spazio di costruzione di tastiere meccaniche. Puoi persino costruire un piccolo macropad con encoder integrato.
Aspetto simile, componenti diversi
Con tutte queste informazioni al tuo attivo, dovresti essere pronto per iniziare un progetto di elettronica con un potenziometro o un encoder rotativo. Questi componenti possono darti un sacco di controllo sui circuiti che costruisci, ma devi assicurarti di scegliere l'opzione corretta per il tuo progetto.