fbpx
ArduinoNovidade

Como utilizar o sensor de velocidade encoder com o Arduino

O sensor de velocidade encoder é um dispositivo eletrônico que pode ser utilizado para realizar a contagem do número de rotações de um encoder acoplado a motor. Com base nessa informação, será possível determinar a velocidade do motor. É um dispositivo muito utilizado em projetos de robótica móvel, sistemas autônomos e sistemas de controle de velocidade.

Imagem ilustrativa do sensor de velocidade encoder
Figura 1: Sensor de velocidade encoder

O sensor de velocidade encoder possui em sua extremidade um LED infravermelho e um fototransistor, separados por um pequeno corredor. Ao ser ligado, o feixe de luz infravermelho é detectado pelo fototransistor. Quando um objeto é colocado entre o infravermelho e o fototransistor, a percepção do feixe de luz é interrompida e o sensor envia um sinal de detecção ao microcontrolador.

Para a detecção da velocidade de um motor, contagem de pulsos ou limite de posição, um disco de encoder é usado em conjunto com o sensor de velocidade encoder. O disco de encoder deve ser acoplado ao eixo do motor e seus furos entre o infravermelho e o fototransistor do sensor de velocidade, conforme a Figura 2.

Imagem ilustrativa do disco encoder acoplado ao eixo do motor para uso com o sensor de velocidade encoder
Figura 2: Disco encoder acoplado ao eixo do motor para uso com o sensor de velocidade encoder

Quando o motor girar, o disco do encoder gera interrupções no feixe de luz infravermelha que serão percebidas pelo fototransistor, gerando uma variação de tensão de saída do sensor de velocidade encoder. O sinal de saída gerado será parecido com uma onda quadrada.

Quando o motor girar mais rápido ocorrem mais interrupções no feixe de luz infravermelho e quando girar mais devagar acontecem menos interrupções. Dessa forma, será possível determinar a velocidade do motor.

O sensor de velocidade encoder conta com um comparador de tensão LM393 integrado para fornecer a saída digital e LEDs indicativos. A Figura 3 detalha os pinos e componentes do sensor.

Imagem ilustrativa dos componentes e pinos do sensor de velocidade encoder
Figura 3: Componentes e pinos do sensor de velocidade encoder

Cada pino possui a seguinte função:

  • VCC: Alimentação do sensor (entre 3,3 e 5V);
  • GND: Aterramento do sensor;
  • D0: Saída digital do sensor;
  • A0: Saída analógica do sensor.

Neste tutorial, aprenderemos a utilizar o sensor de velocidade/módulo Encoder para contar o número de vez que um objeto passou entre o infravermelho e o fototransistor.


MATERIAIS NECESSÁRIOS


ESQUEMÁTICO DE LIGAÇÃO

Inicialmente, certifique-se de que a sua placa Arduino esteja desligada. Em seguida, monte o circuito da Figura 4.

Imagem ilustrativa do circuito de ligação do sensor de velocidade encoder com o Arduino.
Figura 4: Circuito de ligação do sensor de velocidade encoder com o Arduino.

Ao montar o circuito observe os seguintes pontos:

  • O pino VCC do sensor deve ser conectado ao 5V do Arduino;
  • O pino GND do sensor deve ser conectado ao GND do Arduino;
  • O pino D0 do sensor deve ser ligado ao pino digital 2 do Arduino.


ELABORANDO O CÓDIGO

Após a montagem do circuito, vamos programação do Sketch no Arduino IDE. A proposta deste projeto é contar o número de vez que um objeto passou entre o infravermelho e o fototransistor do sensor de velocidade encoder.

Vamos entender a lógica de programação desse projeto a partir dos seguintes passos:

1. Declarar as variáveis

Iniciamos o código declarando as variáveis que serão utilizadas no código. A variável sensorPin será usada para representar o pino digital 2 do Arduino, ao qual o pino D0 do sensor de velocidade encoder encontra-se conectado.

As variáveis leituraSensor e contagem serão utilizadas para armazenas a leitura do sensor e o número de vezes que um objeto foi detectado, respectivamente.

2. Inicializar a comunicação serial e definir pino do sensor como entrada

Na função setup() inicializamos a comunicação serial com taxa de transmissão em 9600 e definimos a variável sensorPin como entrada (INPUT).

3. Realizar a leitura digital do sensor de velocidade encoder

Iniciamos o loop() realizando a leitura do sensor de velocidade encoder. Para isso, utilizaremos a função digitalRead(sensorPin) e armazenamos esse valor na variável leituraSensor.

4. Verificar a detecção do objeto e adicionar ao contador

O sensor de velocidade encoder retorna nível lógico alto (1) quando detecta um objeto. De forma contrária, retorna nível lógico baixo (0) quando não detecta.

Para verificar se o sensor está ou não detectando usamos a estrutura condicional if…else, em que comparamos se o valor armazenado em leitraSensor é igual a 1. Satisfazendo a condição, a variável contador será incrementada em 1 e o número de detecções impresso no monitor serial.

Ao final, o Sketch deste projeto ficará da seguinte maneira:

/*
  -  SENSOR DE VELOCIDADE ENCODER COM ARDUINO   -
  ===============================================
  == BLOG DA ROBOTICA - www.blogdarobotica.com ==
  ===============================================
  Autor: Carol Correia 
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  ===============================================
*/

int sensorPin = 2; //Pino D0 do sensor conectado a porta digital 2 do Arduino
int leituraSensor; //Váriavel que irá armazenar os valores de leitura do sensor (0 ou 1)
int contagem = 0; //Variável para armazenar o número de vezes que um objeto foi detectado

void setup() {
  Serial.begin(9600); //Inicia a comunicação serial
  pinMode(sensorPin, INPUT);
}

void loop() {
  leituraSensor = digitalRead(sensorPin); //Leitura digital do sensor

  if ( leituraSensor == 1) { //Se o valor digital for igual a 1....
    contagem++; //Soma o valor de 1 na contagem
    Serial.print("Numero de deteccoes: ");
    Serial.println(contagem); //valor da contagem no monitor serial
    delay(500); //espera de 0,5 segundos
  }
}

O número de detecções será impresso no monitor serial conforme a Figura 5.

Imagem ilustrativa do número de detecções pelo sensor de velocidade encoder impresso no monitor serial do Arduino IDE
Figura 5: Número de detecções pelo sensor de velocidade encoder impresso no monitor serial do Arduino IDE

Espero ter ajudado,

Obrigada a todos e, em caso de dúvidas, deixe seu comentário abaixo!

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.

Carol Correia Viana

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.