/
/
Velocímetro com Arduino e Sensor HC-SR04

Velocímetro com Arduino e Sensor HC-SR04

Sumário

Baixe agora a apostila Arduino Iniciante e comece seus projetos

Compartilhe seu conhecimento e receba em dinheiro ou produtos.

blog-eletrogate-velocimetro-capa
5

Introdução ao Velocímetro 

O velocímetro é um dispositivo comumente encontrado em veículos para medir a velocidade do veículo em tempo real. Ele fornece informações sobre a velocidade em quilômetros por hora (km/h) ou milhas por hora (mph), permitindo que o motorista esteja ciente da velocidade do veículo. No entanto, neste tutorial, estaremos construindo um "velocímetro" que medirá a velocidade de um objeto se aproximando ou se afastando de um sensor de distância ultrassônico HC-SR04. Este projeto é uma demonstração simples das capacidades do sensor HC-SR04 e do Arduino na medição de distâncias e cálculo de velocidades. Como Funciona um Velocímetro: Um velocímetro tradicional funciona medindo a rotação das rodas de um veículo e convertendo essa rotação em velocidade linear. No nosso caso, o "velocímetro" medirá a velocidade em relação a um sensor HC-SR04. A fórmula básica para calcular a velocidade é: Velocidade = Distância percorrida / Tempo, em que Distância percorrida = Distancia inicial - Distância final Neste caso, medimos a distância entre o objeto e o sensor HC-SR04 em um intervalo de tempo. A diferença na distância dividida pelo tempo nos dará a velocidade do objeto em relação ao sensor. No nosso caso o tempo é 1 (1 segundo) o que resulta no próprio número dividido, só nos resta calcular a diferença das distâncias (distância percorrida em 1 segundo).

Como Funciona o Sensor HC-SR04 

O sensor HC-SR04 é um sensor de distância ultrassônico que usa ondas sonoras de alta frequência para medir distâncias. Funciona com base no tempo que leva para um pulso ultrassônico ser transmitido e refletido de volta para o sensor. O sensor possui quatro pinos:  - VCC: Alimentação (5 V) - Trig: Pino de transmissão do pulso ultrassônico - Echo: Pino de recepção do pulso ultrassônico - GND: Terra O funcionamento básico do sensor envolve os seguintes passos: 

  1. O pino Trig emite um pulso ultrassônico.
  2. O sensor aguarda a detecção do eco refletido.
  3. O pino Echo recebe o eco refletido e o tempo que leva para isso é registrado.
A distância é calculada com base no tempo que o pulso leva para ir e voltar. Neste projeto, o Arduino lerá as leituras de distância do sensor HC-SR04 e calculará a velocidade com base na diferença entre duas leituras intercaladas pelo intervalo.

Código

Vamos analisar o código e entender cada parte

#include <HCSR04.h>  // Inclui a biblioteca HCSR04 para uso do sensor de distância HC-SR04. 

double distLida;  // Variável para armazenar a distância lida anteriormente. 

double distAtual;  // Variável para armazenar a distância lida atual. 

double veloc;  // Variável para armazenar a velocidade calculada. 

double measure;  // Variável para armazenar a leitura de distância atual do sensor. 

UltraSonicDistanceSensor distanceSensor(2,3);  // Cria uma instância do sensor HC-SR04 no pino 2 (Trig) e 3 (Echo). 

  

void setup() { 

  Serial.begin(9600);  // Inicializa a comunicação serial a 9600 bps para enviar dados para o monitor serial. 

} 

  

void loop() { 

    measure = constrain(distanceSensor.measureDistanceCm(), -0, 300);  // Mede a distância atual e a armazena em "measure" limitando-a entre 0 e 300 cm. 

    distLida = measure;  // Atribui a leitura atual a "distLida". 

  

    delay(500);  // Aguarda 500 milissegundos. 

  

    measure = constrain(distanceSensor.measureDistanceCm(), -0, 300);  // Realiza uma segunda leitura de distância e a armazena em "measure", novamente limitando-a entre 0 e 300 cm. 

    distAtual = measure;  // Atribui a nova leitura a "distAtual". 

  

  veloc = (distLida - distAtual) * 2;  // Calcula a velocidade com base na diferença entre as leituras, multiplicando por 2 (2*500ms = 1s). 

  

  if (distLida < distAtual) {  // Verifica se o objeto está se afastando. 

    Serial.print("distanciando a: "); 

  } else {  // Caso contrário, o objeto está se aproximando. 

    Serial.print("aproximando a: "); 

  } 

  

  Serial.print(veloc);  // Imprime a velocidade calculada. 

  Serial.println("cm/s");  // Imprime a unidade de medida (centímetros por segundo). 

  distAtual = 0;  // Zera a leitura atual. 

  distLida = 0;  // Zera a leitura anterior. 

  measure = 0;  // Zera a leitura atual para a próxima iteração. 

} 

Explicação:  Inclusão de Bibliotecas e Declaração de Variáveis:
  1.   Incluímos a biblioteca HCSR04 para usar o sensor HC-SR04.
  2.   Declaramos variáveis para armazenar a distância lida anteriormente (distLida), a distância lida atualmente (distAtual), a velocidade calculada (veloc), a leitura atual do sensor (measure), e criamos uma instância do sensor HC-SR04 no pino 2 (Trig) e 3 (Echo).
Configuração Inicial (setup):
  •   Inicializamos a comunicação serial a uma taxa de 9600 bps para que possamos enviar dados para o monitor serial e visualizar as leituras.
Loop Principal (loop):
  •   Medimos a distância atual entre o objeto e o sensor HC-SR04 e armazenamos a leitura em "measure". Essa leitura é limitada entre 0 e 300 cm para evitar valores inválidos.
  •   Atribuímos a leitura atual a "distLida".
  •   Aguardamos 500 milissegundos.
  •   Realizamos uma segunda leitura de distância, armazenando-a em "measure" e limitando-a entre 0 e 300 cm.
  •   Atribuímos a nova leitura a "distAtual".
  •   Calculamos a velocidade com base na diferença entre "distLida" e "distAtual", multiplicando por 2 para obter a velocidade em cm/s.
  •   Verificamos se o objeto está se afastando ou se aproximando com base na comparação entre "distLida" e "distAtual".
  •   Imprimimos a velocidade calculada no monitor serial, acompanhada da unidade de medida "cm/s".
  •   Zeramos as variáveis "distAtual", "distLida" e "measure" para a próxima iteração.
Este código realiza medições de distância e calcula uma estimativa de velocidade com base nas leituras do sensor HC-SR04. É importante notar que a precisão das medições pode ser afetada por várias variáveis incluindo a qualidade do sensor, superfície do objeto e o próprio código, que resulta em baixa exatidão. Exemplo de Funcionamento:   

Considerações Finais e Soluções de Problemas

Este projeto simples demonstra como usar o sensor HC-SR04 e o Arduino para criar um "velocímetro" para medir a velocidade de objetos em relação ao sensor. No entanto, é importante estar ciente de algumas limitações e possíveis problemas: - Precisão do código: A precisão desse projeto é limitada principalmente pelo fato de realizar amostras da distância a cada 500ms e não a cada 1s, isso foi feito a fim de diminuir o tempo de resposta do código. Outro limite imposto é o raio de alcance do sensor que foi limitado a 3m para não perder muita precisão. - Precisão do sensor HC-SR04: A precisão pode variar com base em fatores como a superfície do objeto e a qualidade do sensor, o que pode resultar na leitura de movimentos e aceleração mesmo quando está parado, ou fora da medida real, além de que o seu alcance é de aprox. 4 metros. As irregularidades ou convexidades causam imprecisões absurdas. Para aplicações que exigem medições precisas, você pode considerar sensores mais avançados ou até acelerômetros digitais como o chip MPU6050. - Objetos em Movimento: Este projeto assume que os objetos se movem de maneira constante entre as leituras. Se o objeto estiver acelerando ou desacelerando, a estimativa de velocidade será imprecisa. - Este projeto é uma demonstração simples e não deve ser usado em aplicações críticas de segurança ou medições precisas de velocidade.

Sobre o Autor


Daniel Vasconcelos

Tenho 14 anos, meu primeiro contato com eletrônica foi aos 5 anos, e com o Arduino aos 12. Desde então venho explorando mais desse mundo incrível.

Neste tutorial vamos construir um “velocímetro” que medirá a velocidade de um objeto se aproximando ou se afastando de um sensor de distância ultrassônico HC-SR04.

Precisa dos componentes para este projeto?

Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *