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 entradaanular 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. .