O Projeto Sensor Ultrassônico HC-SR04 Arduino tem como fundamento apresentar de um modo teórico e prático o funcionamento desse pequeno sensor que é amplamente utilizado do desenvolvimento de projetos maker diy, atuando de forma a identificar obstáculos em carrinhos robóticos, por exemplo.
O Sensor Ultrassônico HC-SR04 é ideal para calcular distâncias de objetos ou obstáculos com muita precisão. Neste projeto esta sendo desenvolvida uma simples trena eletrônica, com a função principal de verificar a distancia entre a ponta do sensor e o obstáculo, ideal para paredes em construções, por exemplo. Existem milhares de utilidades para esse Sensor Ultrassônico, tudo vai depender da necessidade e criatividade do projetista.
A forma de comunicação do Sensor Ultrassônico e do Display tem alta velocidade na resposta entre seus componentes, gerando maior precisão nos resultados apresentados no display, melhorando assim também o desempenho do projeto.
Produtos Utilizados no Projeto Sensor Ultrassônico HC-SR04 Arduino
- 1 x Arduino Uno R3;
- 1 xSensor Ultrassônico de Distância HC-SR04;
- 1 x Display LCD 16×2;
- Resistor (100R);
- 1 xKit de Jumpers;
- 1 x Protoboard 830 pontos.
Padrões de comunicação
O Sensor Ultrassônico HC-SR04 Arduino funciona com certa sequencia de pulsos. Ele conta com 4 pinos, dos quais dois são os pinos de alimentação (+ e -), um pino chamado “Trigger”, e o outro de “ECHO”.
O pino “Trigger” (em português: Gatilho) tem a função de disparar uma espécie de onda sonora ultrassônica, a qual colidir com algum obstáculo, retorna para o sensor fazendo o pino “Echo” enviar um pulso para o Arduino, o tempo desse processo será convertido na distancia.
Montagem do Projeto Sensor Ultrassônico HC-SR04 Arduino
Devido ao fato do Display utilizar 12 conexões, para a ligação do Display precisaremos um resistor de 100Ω e um trimpot de 10kΩ ou 100kΩ, o resistor utilizamos para ascender o backligh do display, e o trimpot para regular a intensidade dos caracteres no Display. Conectamos ele da seguinte forma respectivamente:
Display – Arduino; 1 – GND; 2 – 5V; 3 – Trimpot; 4 – 12; 5 – GND; 6 – 11; 11 – 5; 12 – 4; 13 – 3; 14 – 2; 16 – GND. O pino 3 do display é conectado ao terminal central do trimpot, os das laterais serão ligados ao GND e 5V. O resistor de 100Ω é conectado com uma extremidade ao pino 15 e a outra extremidade ao 5V.
O Sensor Ultrassônico é conectado da seguinte forma: Sensor – Arduino: Vcc – 5V; Trig – 10; Echo – 9; GND – GND. Após tudo conectado conforme a figura a seguir, conecte o Arduino a alimentação e regule até o Display aparecer alguns caracteres brancos.
Funcionamento da Biblioteca do Sensor Ultrassônico
O código de programação do Arduino por sua vez tem a finalidade de fazer a leitura do Sensor Ultrassônico e apresentar a distancia no Display a cada 1 segundo. A distância será apresentada em centímetros, mas pode ser convertida para metros ou outras unidades de medida a partir da modificação de uma parte do código.
Download das Bibliotecas Ultrassonico
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <Ultrasonic.h> //Adiciona a biblioteca do ultrassonico #include <LiquidCrystal.h> //Adiciona a biblioteca do display #define trigPin 10 // Declara constante trigPin #define echoPin 9 // Declara constante echoPin Ultrasonic ultrasonic(trigPin, echoPin); //Define os pinos para o ultrassonico LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Define os pinos para o display void setup() { lcd.begin(16, 2); //"avisa" o arduino que o LCD possui 16 linhas e 2 colunas } void loop() { lcd.clear(); //Limpa o LCD lcd.setCursor(0, 0); //Posiciona uma linha no display float cmMsec; //Le as informacoes do sensor em cm long microsec = ultrasonic.timing(); cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); lcd.print("Distancia"); //Escreve no diplay "Distancia" lcd.setCursor(4, 1); //Posiciona uma linha no display lcd.print(cmMsec); //Faz a leitura do sensor e apresenta no display lcd.print("cm"); //Escreve "CM" após o valor do sensor delay(400); //Aguarda 400ms para a proxima leitura } |
Conclusão
O Projeto Sensor Ultrassônico HC-SR04 Arduino apresentou excelentes resultados durante o teste, com ótimo índice de precisão, o que o torna ideal para aplicação nos mais variados projetos, desde sensor de obstáculos para desvio no carro de carrinhos, como também para detecção de objeto estranho para manobras de ataque, ou mesmo para ter medias precisas atuando como uma trena eletrônica.
Vale destacar que podem ser feitas modificações no projeto para integração de outros módulos e sensores de forma a aprimorar as funcionalidades. Nossa sugestão é que sempre faça as ligações com cautela, pois qualquer erro pode causar a queima do display, sensor ultrassônico ou até mesmo o Arduino.
Autor: Leonardo Dalla Porta
Olá tenho algumas dúvidas sobre a aplicação deste sensor.
Está aberto para discussões neste local?
Obrigado
Olá Arthur, quais seriam suas dúvidas?
Olá, gostaria de saber se é possível utilizar o mesmo display lcd para exibir as informações de dois ou mais sensores ultrassônicos?
Olá!
É possível sim, terá somente que adaptar o seu código para realizar tal processo.
Att Equipe Usinainfo
Olá. É possível programar o arduino para que a frequência de leitura seja em tempo menor do que um segundo e que o display mostre apenas a menor distância? Exemplo: medir um objeto móvel que se aproxima do sensor e indicar no display a menor distância alcançada.
Boa Tarde João!
O projeto que deseja pode ser desenvolvido, só terá que realizar as devidas alterações no códigos, e eu recomendaria utilizar pinos de interrupção para isto.
Bom dia. Fantástico esse sensor. Parabéns por isso. Estou tentando desenvolver um projeto para ser utilizado da mesma forma, porém embaixo d’água. Eu gostaria de saber se vocês possuem algum sensor que possibilite a realização deste projeto? Gostaria também de saber se é possível utilizar separadamente o transmissor e o receptor. Em vez do sinal ir e voltar, ele apenas ser transmitido e recebido diretamente de um ao outro.
Boa Tarde Francisco! Infelizmente este produto não pode ser utilizado embaixo d’água e também a Usinainfo não possui nenhum modelo possível no momento. Quanto aos sensores emissores e receptores, neste modelo eles são comercializados juntos, não podem ser utilizados separados.
Tem uns pequenos ‘erros’ no código: os comentários do início e do fim não batem com as linhas do código.
Olá Carlos! Corrigi os itens que citou, muito obrigado pela dica.
Ola testei o codigo mais esta dando esse erro o que devo fazer?
error: ‘unsigned int Ultrasonic::timing()’ is private within this context long microsec = ultrasonic.timing();
Boa tarde!
Utilize a biblioteca disponibilizada em nossa postagem, caso queira utilizar outra mais atualizada é necessário realizar atualização do código.