Introdução
Nessa aula você entenderá o funcionamento de um sensor Ultrassônico HC-SR04 e como usá-lo. Através da emissão de frequências sonoras ultrassônicas (acima de 20000 Hz), ele consegue medir distâncias de forma simples e precisa. É importante lembrar que esse som emitido por ele é imperceptível para nós humanos.
Muito usado em projetos de robótica em que se necessita obter a distância de um objeto ou o mapeamento de uma área. Devido ao seu baixo custo e fácil implementação, se tornou popular entre a comunidade e, por isso, existem diversas bibliotecas que tornam mais fácil o seu uso.
Como funciona?
Para obter as medidas o sensor possui dois “tambores” o Trig e o Echo. O Trig é o responsável por emitir o sinal sonoro, já o Echo possui a função de captar as ondas sonoras refletidas, desse modo, o sensor envia uma frequência ultrassônica do Trig que após encontrar um objeto reflete e é detectado pelo Echo, veja:
Como usar?
Primeiro, vamos fazer o hardware:
Agora vamos gerar uma onda ultrassônica, para isso temos que mandar um sinal com duração de 10μs (10 microssegundos, 10-6segundos) para o pino onde o Trig(Emissor) está conectado. Para descobrir a distância, precisamos do tempo que a onda levou para ser detectada(ou seja, o tempo em que a onda levou para sair do Trig, bater em algum objeto e voltar) pelo Echo(receptor) e fazer os cálculos, veja:
para descobrir a distância, utilizamos a seguinte fórmula:
Onde D é a distância a ser descoberta, V a velocidade da onda sonora e T o tempo que a onda sonora levou para sair do Trig e ser captada pelo Echo. Queremos descobrir a distância em cm, então precisamos da velocidade em cm/s (centímetros por segundo) e o tempo em s (segundos). T nos retorna um valor em μs (microssegundos, 10-6), então precisamos convertê-lo para segundos, ou seja, dividi-lo por 1000000. V está em m/s(metros por segundo), então precisamos convertê-la para cm/s, basta apenas multiplicar por 100. Por fim, T marca o tempo de ida e volta da onda sonora, quando precisamos apenas de um dos dois valores, como são iguais, basta apenas dividir por 2 o valor obtido. Então a equação fica dessa forma:
OBS.: Velocidade do som 343m/s
Código
Vamos transcrever isso para o Arduino:
#define Trig 10 | |
#define Echo 11 | |
float espaco = 0; | |
float distancia = 0; | |
float tempo_micro = 0; | |
float tempo = 0; | |
float vel_som_cm = 34300; /* Velocidade do Som = 343 m/s | |
para convertemos para cm/s, | |
multiplicamos 343 por 100, | |
então vel_som_cm = 34300 cm/s */ | |
float distancia_em_cm()//Funçao onde calculamos a distancia em cm | |
{ | |
digitalWrite(Trig,LOW);//Desligamos o pino do Trig durante 3 microssegundos para evitar qualquer conflito | |
delayMicroseconds(3); | |
digitalWrite(Trig,HIGH);//Ligamos o pino do Trig por 10us para gerar uma onda ultrassonica | |
delayMicroseconds(10); | |
digitalWrite(Trig,LOW); | |
tempo_micro = pulseIn(Echo,HIGH);//Estamos atribuindo a variavel tempo_micro, o valor do tempo em microssegundos que a onda sonora demorou para sair do Trig e chegar no Echo | |
tempo = ((tempo_micro/1000.0)/1000.0);//Estamos atribuindo a variavel tempo o valor da conversao do tempo de microssegundos para segundos | |
espaco = ((vel_som_cm*tempo)/2); //esta atribuindo a variavel espaco o valor da distancia em cm | |
return (espaco); | |
} | |
void setup() | |
{ | |
pinMode(Trig,OUTPUT);//estamos declarando o pino do Trig como saida | |
pinMode(Echo,INPUT);//estamos declarando o pino do Echo como entrada | |
Serial.begin(9600);//estamos abrindo a serial | |
} | |
void loop() | |
{ | |
distancia = distancia_em_cm();// estamos atribuindo a variavel distancia o valor retornado na funcao distancia_em_cm() | |
Serial.print(distancia); | |
Serial.println("cm"); | |
delay(800); | |
} |
HC-SR04 com biblioteca
Outra maneira, mais simples, de se usar o sensor de distância é através do uso de uma biblioteca externa que já faz de maneira automática todos os cálculos necessários. Existem várias bibliotecas dedicadas para esse sensor mas iremos abordar a HCSR04, feita pelo Martin Šošić. Para instalá-la você possui 2 opções, instalar manualmente ou baixá-la pela IDE da Arduino.
Como usar a biblioteca?
Para usar a biblioteca primeiro é necessário instalá-la, veja a seguir duas maneiras de fazer isso:
Instalar manualmente
Para instalar manualmente, primeiro você deve baixar a biblioteca, depois basta seguir o passo a passo:
1. Vá em “Sketch/Incluir Biblioteca” e clique em “Adicionar biblioteca .ZIP”:
2. Procure pelo arquivo da biblioteca .ZIP que você baixou e clique em “Abrir”:
Instalar através da IDE
Para instalar a biblioteca através da IDE, basta seguir o passo a passo:
1. Vá em “Ferramentas” e clique em “Gerenciar Bibliotecas”:
2. Pesquise por “HC-SR04”, depois selecione a biblioteca do Martin Sosic e instale:
Código com biblioteca
Após isso basta entender o seguinte código:
#include <HCSR04.h> //Inclui a biblioteca em nosso programa | |
UltraSonicDistanceSensor SensorDeDistancia(10, 11); /* Estamos declarando o nosso sensor, entenda a estrutura: | |
UltraSonicDistanceSensor *Nome do sensor*(Pino do Trigger, Pino do Echo)*/ | |
void setup () | |
{ | |
Serial.begin(9600); //Inicializa a Serial | |
} | |
void loop () | |
{ | |
// A cada meio segundo lê o sensor e printa a distância em centimetros: | |
Serial.println(SensorDeDistancia.measureDistanceCm()); | |
delay(500); | |
} |