Qual é a diferença entre o potenciômetro do Arduino e o codificador rotativo

Qual E A Diferenca Entre O Potenciometro Do Arduino E O Codificador Rotativo



Potenciômetros e codificadores rotativos são usados ​​para detectar rotação ou posição de detecção. São dispositivos eletromecânicos utilizados com diversas aplicações na área da eletrônica. Eles também podem ser interfaceados com o Arduino para fazer projetos diferentes. Este artigo é para demonstrar as diferenças fundamentais entre um potenciômetro e um codificador rotativo.

O que é um potenciômetro

Um potenciômetro é um reostato, ou podemos chamá-lo de resistor variável. O valor da resistência varia de acordo com a rotação do eixo do potenciômetro. Os potenciômetros só podem girar até uma distância definida. Existem potenciômetros analógicos e digitais, mas são quase semelhantes. Os potenciômetros analógicos podem ser conectados com microcontroladores no Arduino, Raspberry Pi e outros dispositivos. Um potenciômetro possui três pinos que são o pino de tensão de entrada Vcc, o pino de aterramento GND e o pino de sinal de entrada. O pino de sinal fornece entrada para o Arduino.









O que é um Codificador Rotativo

Os codificadores rotativos detectam a posição angular do botão giratório e enviam um sinal ao microcontrolador ou a qualquer outro dispositivo ao qual estejam conectados. Possui um disco com áreas de contato uniformemente espaçadas que são conectadas a um pino comum. Os codificadores rotativos também possuem um botão de pressão ou chave rotativa integrado que fornece sinais de LIGAR e DESLIGAR de acordo com requisitos específicos.







Diagrama de Pinagem e Descrição de Pino do Codificador Rotativo

O diagrama abaixo mostra os pinos do codificador rotativo. Esses pinos são descritos a seguir:

Saída B ou CLK



Este pino fornece uma saída de quantas vezes o botão ou o codificador rotativo girou. Cada vez que o botão é girado, o CLK completa um ciclo de HIGH e LOW. É contado como uma rotação.

Saída A ou DT

Este é o segundo pino de saída do codificador rotativo que determina a direção da rotação. Ele fica 90° atrás do sinal CLK. Portanto, se o seu estado não for igual ao estado do CLK então o sentido de rotação é horário, caso contrário, anti-horário.

Trocar

O pino do interruptor é usado para verificar se o botão de pressão está pressionado ou não.

Vcc

Este pino está conectado a uma fonte de 5V

GND

Este pino é conectado ao terra

Diferença entre potenciômetro e codificador rotativo

Especificação Potenciômetro Codificador rotativo
Rotação O potenciômetro pode ser girado apenas em uma direção, e isso também por três quartos de um círculo. O Rotary Encoder é capaz de girar 360° continuamente tanto no sentido horário quanto no anti-horário.
Dispositivo analógico ou digital O potenciômetro é principalmente um dispositivo de entrada analógica que mede a mudança na posição através de uma mudança no valor de um resistor Um codificador rotativo é um dispositivo de entrada digital que detecta a posição angular e fornece valores digitais.

Número de posições de entrada Um potenciômetro tem um número infinito de posições de entrada nas quais os valores podem ser obtidos porque é um dispositivo analógico Os codificadores rotativos têm um número finito de posições de entrada.

Configurando potenciômetro com Arduino

O potenciômetro é mais fácil de configurar com um Arduino do que com um codificador rotativo. O potenciômetro possui apenas três pinos VCC, GND e um pino INPUT que está conectado ao Arduino. A interface do potenciômetro com o Arduino é mostrada abaixo:

A programação do potenciômetro no Arduino é mais fácil do que a do codificador rotativo. Abaixo estão os códigos de sintaxe de amostra para ambos.

Exemplo de código para potenciômetro

const int pote = A0; // Declarar pino de entrada
anular configuração ( ) {
   pinMode ( pote, ENTRADA ) ; // Valor de configuração obtido do potenciômetro como entrada
Serial.begin ( 9600 ) ;
}
loop vazio ( ) {
int potValue = analogRead ( Panela ) ; // Leia o valor da entrada tomada pelo potenciômetro
mapa ( valor do pote, 0 , 1023 , 0 , 255 ) ; // Dimensionando o valor da entrada para corresponder 8 -pedaço
Serial.println ( potValue ) ; // Imprime o valor que foi inserido no potenciômetro
atraso ( 100 ) ;
}

O código do potenciômetro é muito fácil e simples. O pino de entrada analógica do Arduino é simplesmente declarado para receber a entrada do potenciômetro e, em seguida, as funções analogRead() e map() são usadas para ler e fornecer o valor exato da leitura do potenciômetro.

Interface do Rotary Encoder com o Arduino

O codificador rotativo tem cinco pinos. VCC e GND do codificador rotativo são conectados ao do Arduino. Os pinos restantes CLK, DT e SW são conectados aos pinos de entrada digital do Arduino.

Código Arduino para codificador rotativo

// Entradas do Codificador Rotativo
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
contador int = 0 ;
int currentCLKState;
int últimoCLKState;
String currentDirection = '' ;
unsigned long lastButtonPressTime = 0 ;
anular configuração ( ) {
// Definir pinos do codificador como entradas
    pinMode ( CLK_PIN, ENTRADA ) ;
    pinMode ( DT_PIN, ENTRADA ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Configurar monitor serial
Serial.begin ( 9600 ) ;
// Leia o estado inicial de CLK
últimoCLKState = digitalRead ( CLK_PIN ) ;
}
loop vazio ( ) {
// Leia o estado atual do CLK
currentCLKState = digitalRead ( CLK_PIN ) ;
// Se durar e o estado atual do CLK são diferentes, então um pulso ocorreu
// Reagir apenas a 1 mudança de estado para evitar contagem dupla
se ( estadoCLKatual ! = últimoCLKState && estadoCLK atual == 1 ) {
// Se o estado DT for diferente do estado CLK, então
// o codificador está girando no sentido anti-horário, então diminua
se ( leitura digital ( DT_PIN ) ! = estadoCLKatual ) {
contador--;
currentDirection = 'CCW' ;
} outro {
// O codificador está girando no sentido horário, então incremente
contador++;
currentDirection = 'CW' ;
}
Serial.print ( 'Sentido de Rotação: ' ) ;
Serial.print ( currentDirection ) ;
Serial.print ( ' | Valor do contador: ' ) ;
Serial.println ( contador ) ;
}
// Lembre o durar estado CLK
últimoCLKState = currentCLKState;
// Leia o estado do botão
int buttonState = digitalRead ( SW_PIN ) ;
// Se detectarmos um sinal BAIXO, o botão é pressionado
se ( estado do botão == BAIXO ) {
// Se 50ms se passaram desde o durar Pulso BAIXO, significa que o
// botão foi pressionado, solto e pressionado novamente
se ( mililitros ( ) - lastButtonPressTime > cinquenta ) {
Serial.println ( 'Botão pressionado!' ) ;
}
// Lembre o durar evento de pressionamento de botão tempo
lastButtonPressTime = milissegundos ( ) ;
}
// Colocar em um pequeno atraso para ajuda rebater a leitura
atraso ( 1 ) ;
}

No código acima, o estado do pino CLK é verificado na função loop(). Se não for igual ao estado anterior, indica que o botão rotativo girou. Agora, para verificar a direção de rotação do botão, o estado atual de CLK é comparado com o estado de DT. Se ambos os estados forem desiguais, isso mostra que o botão girou no sentido horário e o contador incrementa seu valor para mostrar a posição do botão rotativo. No caso oposto, o contador decrementa.

Formulários

Os potenciômetros são usados ​​principalmente onde uma função de controle é necessária. Eles são usados ​​no controle de volume, controle de brilho do LED. Por outro lado, os leitores rotativos oferecem uma ampla gama de aplicações. Eles são usados ​​em robótica, equipamentos médicos, automação e jogos.

Conclusão

Potenciômetros e codificadores rotativos são dispositivos particularmente úteis no campo da eletrônica. Os codificadores rotativos são avançados em comparação com os potenciômetros, pois podem girar continuamente em 360°. Da mesma forma, eles têm mais aplicações na eletrônica moderna e são um pouco mais difíceis de usar do que os potenciômetros. .