LOJA FÍSICA
Praça Mauá, 4541 - Sala 22
09580-050 - São Caetano do Sul / SP
CENTRAL DE ATENDIMENTO
(11) 3522-7626
info@robocore.net
HORÁRIO DE FUNCIONAMENTO
De segunda à sexta das 9:00 às 18:30
Retornar
ao topo
Primeiros Passos com Sensor Ultrassônico


Este tutorial tem como objetivo explicar o funcionamento do sensor HC-SR04 e mostrar sua aplicação básica.

Materiais usados:
  • BlackBoard V1.0
  • Sensor Ultrassonico HC-SR04
  • Display de LCD 16x2 I2C
  • Pacote com 10 Jumper Premium de 20 cm M/F
  • Funcionamento

  • O HC-SR04 tem seu funcionamento baseado no envio (trigger) e recebimento (echo) de ondas ultrassônicas, ou seja, o sensor não envia nenhuma medida para o controlador, apenas sinaliza quando o pulso enviado é recebido. Neste caso o Arduino é responsável por medir o tempo e calcular as distâncias, tomando como referência o tempo que a onda ultrassônica demora para atingir um objeto e voltar.
    No gif abaixo é possível observar o efeito citado anteriormente. Quando medimos o pino echo do sensor com auxílio do osciloscópio verificamos a variação da largura do pulso (tempo) quando a distância sofre variação.


    Depois de medir o tempo da onda ultrassônica, o Arduino também se encarrega em calcular a distância que o sensor está do objeto, utilizando a equação abaixo, presente na biblioteca Ultrasonic.

  • Aplicação

    1. Monte o sensor na Blackboard/Arduino seguindo o esquemático apresentado no começo do tutorial. Ligando os pinos de alimentação do sensor (5V e GND), o pino de echo ao pino 13 e trig ao pino 12.

    2. Instale a biblioteca do sensor. Caso não saiba como instalar uma biblioteca vide o tutorial "Adicionando Bibliotecas na IDE Arduino".

    3. Faça o upload do código abaixo.


    4. Com este código é possível configurar quais pinos seram usados pelo sensor e envia ao LCD, a distância que o sensor esta do objeto.




Para fazer comentários é necessário estar logado. Efetuar login.

Você ainda nao é cadastrado? Cadastre-se agora!


Emanuelf
date Enviado: 2018-09-09 13:30:50
Boa tarde, estou montando um projeto de sensor de estacionamento, de modo que conforme a distancia seja apresentada num LCD aciona-se o buzzer em diferentes intervalos e acendem-se leds para indicar as faixas de proximidade com o obstaculo. Porém tenho me deparado com uma grande variação de leitura das medidas de modo que tem atrapalhado no acionamento dos leds e buzzer. Estou tentando coletar amostras de medidas, tirando a media entre elas mas o me programa não tem funcionado corretamente. Existem funções ou outras maneiras de coletar amostras mais confiaveis desse sensor?

Francois
date Enviado: 2018-09-10 16:13:14
Emanuelf
Este sensor é indicado para esse tipo de aplicação. Além da média móvel das leituras, é recomendado que você faça leituras com pelo menos 100 ms de intervalo entre elas. Esse tempo impede que uma leitura interfira na próxima. Verifique também as conexões, pois um mau contato pode prejudicar a leitura.

tonyf.eng
date Enviado: 2018-09-03 19:30:36
Boa noite!
Gostaria de saber se é possível calcular a quantidade de ML /Litros em uma caixa dágua, se sim...tem como enviar um sketch de exemplo? Obrigado.

ViniDj
date Enviado: 2018-09-04 09:54:21
tonyf.eng
Uma vez que você consegue relacionar a altura do líquido com o volume interno, fazendo uma regra de três simples você consegue saber quanto ele está cheio. Não temos um código pronto para isso, de toda forma com o estudo adequado você consegue chegar nesse código facilmente.

nicolygabricuch
date Enviado: 2018-08-29 09:48:32
Bom dia, estou fazendo um protótipo que tem como objetivo acionar o buzzer quando 1 dos sensores ultrassônicos for acionado, porém esta dando erro. O código que estou utilizando é esse:


#include <Ultrasonic.h>

//Define os pinos para o trigger e echo
#define pino_trigger1 4
#define pino_echo1 5
#define pino_trigger2 8
#define pino_echo2 9
#define buzzer 13
 
 
//Inicializa o sensor nos pinos definidos acima
Ultrasonic ultrasonic1(pino_trigger1, pino_echo1);
Ultrasonic ultrasonic2(pino_trigger2, pino_echo2);

void setup()
{
  Serial.begin(9600);
  Serial.println("Lendo dados do sensor...");
  pinMode(buzzer,OUTPUT); //Pino do buzzer
}
 
void loop()
{
  float cm1, cm2;
  //Le as informacoes do sensor 1
  long microsec1 = ultrasonic1.timing();
  cm1 = ultrasonic1.convert(microsec1, Ultrasonic::CM);
  //Le as informacoes do sensor 2
  long microsec2 = ultrasonic2.timing();
  cm2 = ultrasonic2.convert(microsec2, Ultrasonic::CM);  
  
    //Exibe informacoes no serial monitor
  Serial.print("Distancia em cm sensor1: ");
  Serial.println (cm1);

    //Exibe informacoes no serial monitor
  Serial.print("Distancia em cm sensor2: ");
  Serial.println (cm2);
  if (cm1 < 30)  { 
    tone (buzzer,300,50 );

  }
    else {
      noTone(buzzer);
    }  
  delay(200);
}

e esta dando erro nesta linha: cm2 = ultrasonic2.convert(microsec2, Ultrasonic::CM);
alguém poderia me auxiliar?

Francois
date Enviado: 2018-08-29 11:55:46
nicolygabricuch
Verifique as conexões dos seus sensores e adicione um intervalo de tempo entre cada leitura (~100 ms), pois um sensor pode influenciar no outro.

lxaraujo
date Enviado: 2018-07-12 10:30:01
Bom dia. Estou desenvolvendo um AGV para funcionar em uma área industrial e vou precisar colocar 6 sensores ultrasonicos nele. Eu posso utilizar um pino apenas para fazer o trigger dos 6 simultaneamente e 6 pinos independentes para identificar o echo? Estou projetando o circuito para usar uma mega. Obrigado

ViniDj
date Enviado: 2018-07-12 12:13:39
lxaraujo
Talvez se puder usar mais pinos para trigger seja melhor, de toda forma, se conseguir fazer um software robusto talvez dê certo. Lembre-se que o HC-SR04 não é um sensor padrão industrial, portanto dependendo do ambiente pode ser necessário usar um sensor industrial.

Josecarlosbueno
date Enviado: 2018-03-06 16:16:11
Boa tarde , estou tendo problema  para ligar o buzzer, sera que pode me ajudar, eu tirei o LCD e coloque ele no lugar para apitada quando tiver um obstaculo x cm, mas o mesmo não esta funcionando...  Obrigado pela ajuda...

Francois
date Enviado: 2018-03-06 19:30:39
Josecarlosbueno
O primeiro passo é verificar o circuito que você montou. Em seguida você pode adicionar uma rotina <if> para acionar o buzzer quando a distância lida for menor do que um valor predefinido, e desligá-lo quando for maior. Você também pode usar o monitor serial da IDE do Arduino para verificar se o seu código está funcionando conforme previsto.

Josecarlosbueno
date Enviado: 2018-02-15 17:39:21
Boa tarde, tem como colocar no lugar do LCD, um mine caixa de som para apitar quando tiver obstaculo?

MarceloFarias
date Enviado: 2018-02-15 17:48:46
Josecarlosbueno
Sim. Você pode por exemplo utilizar um Buzzer (https://www.robocore.net/loja/produtos/buzzer-5v-passivo.html) que pode emitir um som quando o obstáculo for detectado. Ou se preferir, pode até mesmo usar um Shield MP3 Player (https://www.robocore.net/loja/produtos/arduino-shield-mp3-player.html) e tocar um som mais personalizado, ou até mesmo uma música.

odecamm
date Enviado: 2018-02-12 22:29:05
O HC-SR04 envia 8 pulsos de 40 kHz e depois que esses pulsos batem em um obstáculo ele realiza a medida da distância. A minha dúvida é se ele só finaliza a medida da distância quando os 8 pulsos são retornados (detectados) pelo encho?

Francois
date Enviado: 2018-02-14 12:53:06
odecamm
Se o sinal não retornar para o sensor, ele não acusará a detecção de um objeto. Mas a função pulseIn() utilizada para medir a distância com o Arduino retorna para o código principal caso não tenha recebido nenhum sinal (timeout).

helder.hlo
date Enviado: 2017-11-08 10:31:22
Opa... não encontrei a ligação no display? Quais finos usamos?

MarceloFarias
date Enviado: 2017-11-08 11:18:09
helder.hlo
O LCD utilizado contém um Módulo I2C, portanto deve ser conectado aos pinos A4 e A5 do Arduino UNO. Para maiores informações sobre como utilizar esse LCD, veja: https://www.robocore.net/tutoriais/primeiros-passos-com-modulo-i2c.html

tobisd
date Enviado: 2017-06-18 19:28:53
A equação é dividida por 2 para compensar o tempo de volta do som?



MarceloFarias
date Enviado: 2017-06-19 09:51:33
tobisd
Sim, o tempo contabiliza o tempo e ida e volta da onda sonora, por esse motivo divide-se por 2 para saber a distância até o objeto.