Quina diferència hi ha entre el potenciòmetre Arduino i el codificador rotatiu

Quina Diferencia Hi Ha Entre El Potenciometre Arduino I El Codificador Rotatiu



Tant els potenciòmetres com els codificadors rotatius s'utilitzen per detectar la rotació o detectar la posició. Són dispositius electromecànics utilitzats amb diverses aplicacions en el camp de l'electrònica. També es poden connectar amb Arduino per fer diferents projectes. Aquest article és per demostrar les diferències fonamentals entre un potenciòmetre i un codificador rotatiu.

Què és un potenciòmetre

Un potenciòmetre és un reòstat, o podem anomenar-lo una resistència variable. El valor de la resistència varia segons la rotació de l'eix del potenciòmetre. Els potenciòmetres només poden girar a una distància determinada. Hi ha potenciòmetres analògics i digitals, però són gairebé semblants. Els potenciòmetres analògics es poden connectar amb microcontroladors a Arduino, Raspberry Pi i altres dispositius. Un potenciòmetre té tres pins que són el pin de tensió d'entrada Vcc, el pin de terra GND i el pin del senyal d'entrada. El pin del senyal proporciona entrada a Arduino.









Què és un codificador rotatiu

Els codificadors rotatius detecten la posició angular del botó giratori i envien un senyal al microcontrolador o qualsevol altre dispositiu al qual estiguin connectats. Té un disc amb zones de contacte uniformement espaiades que estan connectades a un pin comú. Els codificadors rotatius també tenen un polsador o un interruptor rotatiu integrat que dóna senyals d'encesa i apagat segons els requisits específics.







Diagrama de pinout i descripció del pin del codificador rotatiu

El diagrama que es mostra a continuació mostra els pins del codificador rotatiu. Aquests pins es descriuen de la següent manera:

Sortida B o CLK



Aquest pin dóna una sortida de quantes vegades ha girat el botó o el codificador rotatiu. Cada vegada que es gira el botó, el CLK completa un cicle d'ALT i BAIX. Es compta com una rotació.

Sortida A o DT

Aquest és el segon pin de sortida del codificador rotatiu que determina la direcció de gir. Es queda 90° per darrere del senyal CLK. Per tant, si el seu estat no és igual a l'estat de CLK, la direcció de gir és en sentit horari, en cas contrari, en sentit antihorari.

Interruptor

El pin de l'interruptor s'utilitza per comprovar si el polsador està premut o no.

Vcc

Aquest pin està connectat a una font de 5 V

GND

Aquest pin està connectat a terra

Diferència entre el potenciòmetre i el codificador rotatiu

Especificació Potenciòmetre Codificador rotatiu
Rotació El potenciòmetre només es pot girar en una direcció, i això també per a tres quartes parts de cercle. El codificador rotatiu és capaç de girar 360° contínuament tant en sentit horari com en sentit contrari.
Dispositiu analògic o digital El potenciòmetre és principalment un dispositiu d'entrada analògic que mesura el canvi de posició mitjançant un canvi en el valor d'una resistència Un codificador rotatiu és un dispositiu d'entrada digital que detecta la posició angular i proporciona valors digitals.

Nombre de posicions d'entrada Un potenciòmetre té un nombre infinit de posicions d'entrada on es poden prendre valors perquè és un dispositiu analògic Els codificadors rotatius tenen un nombre finit de posicions d'entrada.

Configuració del potenciòmetre amb Arduino

El potenciòmetre és més fàcil de configurar amb un Arduino que amb un codificador rotatiu. El potenciòmetre només té tres pins VCC, GND i un pin INPUT connectat a Arduino. A continuació es mostra la interfície del potenciòmetre amb Arduino:

Programar el potenciòmetre a Arduino és més fàcil que el del codificador rotatiu. A continuació es mostren els codis de sintaxi d'exemple per a tots dos.

Exemple de codi per al potenciòmetre

const int pot = A0; // Declara el pin d'entrada
configuració de buit ( ) {
   mode de pin ( pot, ENTRADA ) ; // Valor de configuració extret del potenciòmetre com entrada
Serial.begin ( 9600 ) ;
}
bucle buit ( ) {
int potValue = analogRead ( olla ) ; // Llegir el valor de l'entrada presa pel potenciòmetre
mapa ( potValue, 0 , 1023 , 0 , 255 ) ; // Escala el valor de l'entrada perquè coincideixi 8 - bit
Serial.println ( potValue ) ; // Imprimeix el valor introduït al potenciòmetre
retard ( 100 ) ;
}

El codi del potenciòmetre és molt fàcil i senzill. El pin d'entrada analògic d'Arduino simplement es declara per prendre l'entrada del potenciòmetre, i després s'utilitzen les funcions analogRead() i map() per llegir i donar el valor exacte de la lectura del potenciòmetre.

Interfície de codificador rotatiu amb Arduino

El codificador rotatiu té cinc pins. VCC i GND del codificador rotatiu estan connectats al d'Arduino. Els pins restants CLK, DT i SW estan connectats als pins d'entrada digital d'Arduino.

Codi Arduino per a codificador rotatiu

// Entrades del codificador rotatiu
#definir CLK_PIN 2
#definir DT_PIN 3
#definir SW_PIN 4
int comptador = 0 ;
int currentCLKState;
int lastCLKState;
String currentDirection = '' ;
sense signar llarg lastButtonPressTime = 0 ;
configuració de buit ( ) {
// Estableix els pins del codificador com entrades
    pinMode ( CLK_PIN, ENTRADA ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Configura el monitor sèrie
Serial.begin ( 9600 ) ;
// Llegeix l'estat inicial de CLK
lastCLKState = lectura digital ( CLK_PIN ) ;
}
bucle buit ( ) {
// Llegeix l'estat actual de CLK
currentCLKState = digitalRead ( CLK_PIN ) ;
// Si darrer i l'estat actual de CLK són diferents, aleshores es va produir un pols
// Reacciona només a 1 canvi d'estat per evitar el doble recompte
si ( Estat CLKS actual ! = últimCLKState && currentCLKState == 1 ) {
// Si l'estat DT és diferent de l'estat CLK, aleshores
// el codificador gira en sentit contrari a les agulles del rellotge, així que disminueix
si ( lectura digital ( DT_PIN ) ! = Estat CLKS actual ) {
comptador--;
currentDirection = 'CCW' ;
} altra cosa {
// El codificador gira en sentit horari, així que incrementeu-lo
comptador++;
currentDirection = 'CW' ;
}
Impressió.sèria ( 'Direcció de rotació:' ) ;
Impressió.sèria ( Direcció actual ) ;
Impressió.sèria ( ' | Valor del comptador: ' ) ;
Serial.println ( comptador ) ;
}
// Recordeu el darrer Estat CLK
lastCLKState = estatCLKS actual;
// Llegeix l'estat del botó
int buttonState = digitalRead ( SW_PIN ) ;
// Si detectem un senyal BAIX, es prem el botó
si ( buttonState == BAIX ) {
// Si han passat 50 ms des del darrer Pols BAIX, vol dir que el
// s'ha premut, deixat anar i tornat a prémer el botó
si ( mil·lisos ( ) - LastButtonPressTime > 50 ) {
Serial.println ( 'Botó premut!' ) ;
}
// Recordeu el darrer esdeveniment de premsa de botó temps
lastButtonPressTime = mil·lisos ( ) ;
}
// Posa en un lleuger retard a ajuda desfer la lectura
retard ( 1 ) ;
}

Al codi anterior, l'estat del pin CLK es verifica a la funció loop(). Si no és igual al seu estat anterior, mostra que el botó giratori ha girat. Ara, per comprovar la direcció de gir del botó, es compara l'estat actual de CLK amb l'estat de DT. Si els dos estats són desiguals, mostra que el botó ha girat en sentit horari i el comptador augmenta el seu valor per mostrar la posició del botó giratori. En el cas contrari, el comptador disminueix.

Aplicacions

Els potenciòmetres s'utilitzen principalment quan es requereix una funció de control. S'utilitzen en control de volum, control de brillantor LED. D'altra banda, els codificadors rotatius ofereixen una àmplia gamma d'aplicacions. S'utilitzen en robòtica, equips mèdics, automatització i jocs.

Conclusió

Els potenciòmetres i els codificadors rotatius són dispositius especialment útils en el camp de l'electrònica. Els codificadors rotatius són avançats en comparació amb els potenciòmetres, ja que poden girar contínuament a 360°. De la mateixa manera, tenen més aplicacions en electrònica moderna i són una mica més difícils d'utilitzar que els potenciòmetres. .