Sensor HC-SR04 é um módulo que consiste na emissão de sinais ultrassônicos onde a medição da distância é obtida com base no tempo de emissão do sinal com o tempo de retorno desse mesmo sinal refletido pelo objeto.
Como ouvido humano só consegue identificar ondas mecânicas até a frequência de 20KHz, os sinais emitidos pelo sensor Ultrassônico não podem ser escutados por nós, pois o sensor trabalha na faixa de 40KHz.
Estruturação do Sensor HC-SR04
-
- Transmissor Ultrassônico – Emite as ondas ultrassônicas que serão refletidas pelos obstáculos
- Um receptor – Identifica o eco do sinal emitido pelo transmissor
- Circuito de controle – Controla o conjunto transmissor/receptor, calcula o tempo entre a emissão e recepção do sinal
Especificações
-
- Alimentação: 5V DC
- Corrente de Operação: 2mA
- Ângulo de Efeito: 15°
- Alcance: 2cm ~ 4m
- Precisão: 3mm
Operação do Sensor Ultrassônico HC-SR04
Primeiramente, o circuito externo (Arduino) envia um pulso Trigger de pelo menos 10us em nível alto. Em seguida, ao receber o sinal Trigger, o sensor HC-SR04 envia 8 pulsos de 40khz e detecta se há ou não algum sinal de retorno. Então, se algum sinal de retorno for identificado pelo receptor, o sensor HC-SR04 gera um sinal de nível alto no pino de saída cujo tempo de duração é igual ao tempo calculado entre o envio e o retorno do sinal ultrassônico.
Através do pulso de saída, onde a emissão e recepção tem o mesmo tempo, calcula-se a distância entre o sensor e o obstáculo por meio de uma simples equação:
O tempo de duração do sinal é o tempo em que o pino Echo permaneceu em nível alto após o pino Trigger ter sido colocado em nível alto.
Simples Projeto com o HC-SR04
Primeiramente, faça a conexão do sensor HC-SR04 com o Arduino conforme o esquema:
Em seguida, inclua a biblioteca “NewPing.h”. Feito isso, percebe-se que essa biblioteca é de muito fácil aplicação com vários exemplos, incluindo códigos com utilização de vários sensores simultaneamente.
Então, escolheremos o exemplo NewPingExemple e faremos somente duas alterações (nas portas digitais e no tempo entre os pings). Finalmente, agora é só carregar o código:
1 #include <NewPing.h>
2
3 #define TRIGGER_PIN 4 // Pino Trigger do sensor
4 #define ECHO_PIN 5 // Pino Echo do sensor
5 #define MAX_DISTANCE 300 // Distancia maxima requerida para fazer ping (Maxima 400-500cm)
6
7 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Configuracao NewPing de pinos e distancia maxima
8
9 void setup() {
10 Serial.begin(115200); // Abrir o monitor serial a 115200 ver os resultados do ping
11 }
12
13 void loop() {
14 delay(100); // Aguarde 100ms entre pings. Nao pode ser menor que 29ms entre os pings.
15 Serial.print("Ping: ");
16 Serial.print(sonar.ping_cm()); // Envie ping, obtenha distancia em cm e imprima o resultado (0 = fora da faixa de distancia definida)
17 Serial.println("cm");
18 }
Então, agora é só abrir o Monitor Serial e acompanhar a variação de distância sendo impressa na tela.