Hoje apresento o circuito de um medidor de distância com sensor ultrassônico HC-SR04, o display LCD 16×2 Winstar WH1602A e claro, uma placa Arduino.
O sensor ultrassônico HC-SR04 pode ser usado para medir distâncias de até 4m com precisão de 3mm (dados do datasheet do produto) e identificar a presença de objetos ou captar movimentos.
Isso nos permite criar alarmes, sensores de presença, sistemas de escuta e sensores de estacionamento. Também é um ótimo sensor para utilização em projetos de robótica e aplicações industriais.
Resumindo o funcionamento do sensor ultrassônico: é enviado um sinal ultrassônico pelo módulo, o mesmo detecta o retorno deste sinal (eco), e com base no tempo entre esses dois eventos, gera um sinal que permite medir a distância até o objeto.
Circuito medidor de distância com sensor ultrassônico
O circuito é praticamente idêntico ao que usei nos outros projetos usando o WH1602A. A diferença é que no pino 15 (backlight, ou luz de fundo) eu coloquei uma pequena resistência para limitar a corrente.
O sensor ultrassônico HC-SR04 será conectado nas portas digitais 11 e 13. O potenciômetro é de 10 K ohms e serve para regular o contraste do display. Podem ser usados outros valores de potenciômetro ou até mesmo uma resistência para essa regulagem, ok?
O programa usa a biblioteca Ultrasonic, que você pode baixar neste link. O programa faz a leitura dos dados do sensor, calcula a distancia em centímetros e polegadas, e apresenta os dados no LCD 16×2.
Se você não tem um display LCD 16×2, não tem problema: os dados do medidor de distância são enviados para o serial monitor.
//Programa : Medidor de distancia com HC-SR04 //Autor : Arduino e Cia #include <Ultrasonic.h> //Carrega a biblioteca Ultrasonic #include <LiquidCrystal.h> //Carrega a biblioteca LCD //Define o pino do Arduino a ser utilizado com o pino Trigger do sensor #define PINO_TRIGGER 13 //Define o pino do Arduino a ser utilizado com o pino Echo do sensor #define PINO_ECHO 10 //Inicializa o sensor ultrasonico Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO); //Define os pinos que serão ligados ao LCD LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { Serial.begin(9600); //Inicializa a serial lcd.begin(16,2); //Inicializa LCD lcd.clear(); //Limpa o LCD } void loop() { float cmMsec, inMsec; //Le os dados do sensor, com o tempo de retorno do sinal long microsec = ultrasonic.timing(); //Calcula a distancia em centimetros cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); //Calcula a distancia em polegadas inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); //Apresenta os dados, em centimetros, no LCD e na Serial lcd.setCursor(0,0); lcd.print("Cent.: "); lcd.print(" "); lcd.setCursor(7,0); lcd.print(cmMsec); Serial.print("Cent: "); Serial.print(cmMsec); //Apresenta os dados, em polegadas, no LCD e na Serial lcd.setCursor(0,1); lcd.print("Pol. : "); lcd.print(" "); lcd.setCursor(7,1); lcd.print(inMsec); Serial.print(", Pol. : "); Serial.println(inMsec); delay(1000); }
Abaixo você confere o vídeo do circuito em funcionamento:
Recomendo também a leitura do artigo Controle de vagas de estacionamento com o sensor HC-SR04, onde utilizo a biblioteca NewPing para controlar vários sensores ultrassônicos ao mesmo tempo.
Se você gostou deste post do medidor de distância com sensor ultrassônico HC-SR04, confira outros posts utilizando sensor ultrassônico, aqui mesmo no Arduino e Cia!