Índice:

Tutorial do Codificador Rotativo com Arduino: 6 etapas
Tutorial do Codificador Rotativo com Arduino: 6 etapas

Vídeo: Tutorial do Codificador Rotativo com Arduino: 6 etapas

Vídeo: Tutorial do Codificador Rotativo com Arduino: 6 etapas
Vídeo: Cómo Utilizar Un Encoder Rotativo Con Arduino 2024, Novembro
Anonim
Tutorial de Codificador Rotativo com Arduino
Tutorial de Codificador Rotativo com Arduino

O codificador giratório é um componente eletrônico capaz de monitorar o movimento e a posição ao girar. O codificador giratório utiliza sensores óticos que podem gerar pulsos quando o codificador giratório gira. A aplicação do codificador rotativo, geralmente como um monitor de movimento mecânico ou robótico, também pode ser usada para a seleção do menu na tela. O codificador rotativo tem duas saídas para que possa distinguir entre rotação negativa (CW) e positiva (CCW) e também possui um único botão.

Etapa 1: Fluxo de pulso do codificador giratório

Fluxo de pulso do codificador giratório
Fluxo de pulso do codificador giratório

O fluxo de pulso gerado pelo codificador rotativo a seguir é como a imagem acima.

Etapa 2: Pinagem do Codificador Rotativo

Pinagem do Codificador Rotativo
Pinagem do Codificador Rotativo

Explicação:

  • GND GND
  • + + 5V
  • Botão SW do codificador rotativo quando pressionado
  • Dados DT
  • Dados CLK 2

Um dos pinos DT ou CLK deve ser conectado ao pé de interrupção do Arduino Uno, ou ambos DT e CLK estão conectados ao pino de interrupção.

Etapa 3: esquemático

Esquemático
Esquemático
  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Etapa 4: Código

Código
Código

No tutorial a seguir, que será usado como uma interrupção é o PIN 2 do Arduino Uno, enquanto o PIN 3 é usado apenas como uma entrada regular.

# define encoder0PinA 2 # define encoder0PinB 3 # define encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); atraso (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = encoder0Pos / 2.5; }

Na linha 10 do sketch acima é usado para habilitar a interrupção do pino 2 do Arduino Uno. No "doEncoder" a função é calculada a partir do codificador rotativo. Se o valor de DT e CLK (interrupção de pino do Arduino Uno) for o mesmo, então a variável "encoder0Pos" será incrementada / adicionada, além dessa condição, a variável "encoder0Pos" será diminuída.

Etapa 5: Explicação

O valor ValRotary é o valor do número de etapas que foram executadas. O valor ValRotary é obtido a partir do valor de leitura do codificador do sensor rotativo dividido por 2,5. Um valor de 2,5 é obtido a partir do teste, uma vez que uma etapa do codificador rotativo pode exceder 1, então divida por 2,5 para seu valor de acordo com a etapa e também a adição do retardo de leitura.

Enquanto na linha 19-25 está um programa para determinar se o codificador rotativo rotativo está no sentido horário ou anti-horário. A explicação das linhas 19-25 é quando a leitura do codificador rotativo atual é maior do que os dados rotativos anteriores, então expressos como CW. Ao passo que, se a leitura atual for menor do que a leitura anterior, ela será declarada no sentido anti-horário.

Etapa 6: Saída

Saída
Saída

1 = o valor do botão inicial do rotativo quando não foi pressionado

Recomendado: