Medindo distâncias com Sensor Ultrassônico HC-SR04

Hoje, vamos falar de um dos sensores mais utilizados na área Maker: o Sensor Ultrassonico.
No tutorial em questão, vamos utilizar um Sensor Ultrassonico HC-SR04, e um Arduino Nano para aplicarmos a medição de distâncias com a técnica utilizada pelo sensor.

O Sensor Ultrassonico contém um emissor e um receptor de ondas sonoras e seu funcionamento pode ser comparado com a comunicação das baleias. Elas emitem uma onda sonora e aguardam um retorno para saber sua localização e se comunicarem com outras da mesma espécie. No caso do sensor ultrassonico, as ondas são geradas a uma frequência de 40KHz(40.000 Hz). Essa frequência é alta, comparada com a frequência que o ouvido humano consegue detectar, que é entre 20 e 20.000 Hz. A equação responsável pela medição do tempo é: d = (v * t)/2, onde d é a distância entre o HC-SR04 e o obstáculo; v é a velocidade do som (consideramos 340 m/s); e t é o tempo de ida e volta do sinal das ondas do nosso sensor.

A pinagem do Sensor Ultrassonico HC-SR04 segue abaixo:

  • VCC (5v): Alimentação positiva do sensor;

  • GND(0v): Negativo do sensor;

  • Trigger: Gatilho de disparo de pulso de ondas sonoras;

  • Echo: Dispara um pulso com duração de tempo para retorno da onda recebida pelo sensor.

Os componentes que serão utilizados no tutorial em questão são:

* O Arduino Nano pode ser substituído por qualquer outro da família Arduino

 

 

 

 

 

 

 
 
 
 

Montando o projeto

Vamos aprender a conectar o nosso sensor ao Arduino (e isso é super simples!). A seguir você encontra o esquemático do projeto.

O esquemático do projeto e os códigos fontes estarão em nosso GitHub. Disponível em:

https://github.com/omegacomponenteseletronicos/ultrassonic-sensor

Desenvolvendo o código

Para utilização do sensor, estaremos baixando e adicionando a biblioteca do sensor, disponível em:

Abra a IDE do Arduino, clique em Sketch → Import Library… → Add Library… e selecione o “Ultrassonic.zip”

Após selecionar a biblioteca do sensor, vá em File → Examples → Ultrassonic → UltrassonicDemo

O código exemplo da biblioteca “Ultrassonic.h” será nosso código responsável pela medição da distância entre o sensor e o obstáculo.

#include Ultrassonic.h;
#define TRIGGER_PIN 12
#define ECHO_PIN 13
Ultrassonic ultrassonic(TRIGGER_PIN, ECHO_PIN);
void setup(){
 Serial.begin(9600);
}
void loop(){
float cmMsec, inMsec;
long microsec = ultrassonic.timing();
cmMsec = ultrassonic.convert(microsec, Ultrassonic::CM);
inMsec = ultrassonic.convert(microsec, Ultrassonic::IN);
Serial.print("MS: ");
Serial.print(microsec);
Serial.print(", CM: ");
Serial.print(cmMsec);
Serial.print(", IN: ");
Serial.println(inMsec);
delay(1000);
}

Mergulhando no projeto

Software

Primeiramente incluímos a biblioteca

#include <Ultrassonic.h>

Definimos os pinos trigger e echo

#define TRIGGER_PIN 12
#define ECHO_PIN 13

Instanciamos o objeto da classe da biblioteca do sensor, passando os pinos trigger e echo definidos anteriormente

Ultrassonic ultrassonic(TRIGGER_PIN, ECHO_PIN);

Em nossa função setup() iniciamos o monitor serial da IDE do Arduino

void setup(){
 Serial.begin(9600);
}

Na função loop(), primeiramente, declaramos as variáveis para armazenar centímetros, polegadas e microssegundos

float cmMsec, inMsec;
long microsec = ultrassonic.timing();

Em nossas variáveis de centímetros e polegadas armazenamos a conversão dos microssegundos em centímetros e polegadas, respectivamente, com a função convert();

cmMsec = ultrassonic.convert(microsec, Ultrassonic::CM);
inMsec = ultrassonic.convert(microsec, Ultrassonic::IN);

Após isso, basta mostrarmos os valores no monitor serial com as funções Serial.print() e Serial.println(). A função delay(1000) faz a espera de 1 segundo para a próxima leitura do sensor.

Serial.print("MS: ");
Serial.print(microsec);
Serial.print(", CM: ");
Serial.print(cmMsec);
Serial.print(", IN: ");
Serial.prinln(inMsec);
delay(1000);

Hardware

Algumas considerações são importantes quanto ao funcionamento do sensor. O objeto a ser usado como obstáculo é uma delas. Dependendo do tamanho do obstáculo, o sensor pode enfrentar dificuldades na medição devido a onda de retorno não ser suficiente para detecção. O posicionamento do objeto também deve ser levado em conta. Além disso, quando posicionado um objeto entre 2cm e 4cm, o Sensor Ultrassonico apresenta falhas na medição. Essas falhas são comuns e podem variar de acordo com o sensor utilizado.

Conclusão

Esse é um tutorial básico para iniciantes da área, e, por isso utilizamos o próprio exemplo da biblioteca do Sensor Ultrassonico HC-SR04 para fazer a medição de distâncias. Porém, o sensor pode ser usado em diversas aplicações como radar de objetos para um robô se localizar em um ambiente controlado. Qualquer dúvida relacionada ao tutorial e afins podem comentar nesse post ou entrar em contato. 😀

Sobre Lucas Soares Gomes 5 artigos
Bacharelando em Ciência da Computação | UFV Campus Florestal (31) 9 9820-1535 l.u.c.a.s.21 - Skype lucas.s.gomes@ufv.br

2 Comentários

  1. Estou com um projeto e preciso de um sensor em que faça leituras milimétricas de movimento e aproximação, gostaria de saber se com esse sensor ultrassônico HC-SR04 eu poderia colocar ele para funcionar onde assim que fosse detectada a aproximação, o equipamento em questão faria o trabalho, sem a necessidade de um acionamento manual. Grato pela atenção.

    • Olá, o sensor HC-SR04 tem precisão de 3mm. É possível sim fazer o que você citou, muitos dispensadores automáticos de álcool que foram instalados durante a pandemia, utilizavam o HC-SR04.

1 Trackback / Pingback

  1. Robô Autônomo Básico com Sensor Ultrassônico HC-SR04 - Portal do Arduino

Deixe uma resposta

O seu endereço de email não será publicado.


*