Aprenda a utilizar o Sensor de Distância Ultrassônico HC-SR04 com Arduino
Nosso post de hoje é sobre a utilização do sensor ultrassônico HC-SR04, o sensor ultrassônico mais utilizado pela comunidade maker devido ao seu baixo custo, eficiência e disponibilidade de documentação. Nesse post falaremos sobre o funcionamento teórico do sensor de ultrassom e para finalizar, faremos a integração do sensor com o Arduino Uno. Então, está preparado? Mãos à obra!
Como funciona o sensor ultrassônico?
Os sensores ultrassônicos possuem um emissor e um receptor de ondas sonoras, onde seu funcionamento baseia-se na emissão de uma onda sonora de alta frequência, algo na faixa de 40khz, essa onda sonora é imperceptível ao ouvido humano, nós conseguimos perceber sons na faixa de 20 a 20khz variando de indivíduo para indivíduo.
Ao emitir essa onda sonora, é acionado uma espécie de relógio de alta precisão que cronometra o tempo entre a onda sonora colidir com um obstáculo e refletir de volta ao receptor do sensor. Uma vez que a velocidade do som no ar é conhecida(340 m/s), é possível, através do tempo que o sinal levou para colidir com o obstáculo e retornar, saber qual a distância percorrida entre sensor e obstáculo.
O cálculo para chegar até essa distância é bem simples, sendo ele:
d = (V*t)/2
onde:
d = distância percorrida entre o sensor e o obstáculo (medição que queremos saber)
V = velocidade do som no ar (340 m/s)
t = tempo percorrido entre a emissão do sinal sonoro e o seu retorno (tempo medido pelo sensor ultrassônico)
A divisão por 2 deve existir, uma vez que, o sensor mede o tempo total de ida e volta, ou seja, duas vezes o tempo que queremos.
Temos abaixo uma imagem que ilustra bem o funcionamento do sensor ultrassônico.
Figura 01: Princípio de funcionamento do sensor ultrassônico
Fonte: tecnologiasinterativas.wordpress.com
Quais as aplicações dos sensores ultrassônicos?
Os sensores ultrassônicos são vastamente utilizados em diversas áreas, principalmente na automação e na indústria, uma vez que ele é muito utilizado na medição de distâncias e níveis sem contato, na contagem de objetos cujo material é transparente, entre outros. Além das áreas de indústria e automação, o uso do sensor ultrassônico vêm nos últimos anos ganhando força na área da robótica, esse tipo de sensor é o mais utilizado na construção de robôs que desviam de obstáculos.
Figura 02: Robô utilizando sensor ultrassônico
Fonte: www.botmag.com
Conhecendo o sensor ultrassônico HC-SR04
O sensor ultrassônico HC-SR04 possui 4 pinos, são eles:
- VCC: Esse pino deve ser ligado em uma fonte de tensão de 5V;
- TRIG: Sinal responsável por disparar o pulso ultrassônico, para dispará-lo, é necessário que esse pino fique em HIGH por pelo menos 10us;
- ECHO: Sinal responsável por gerar um pulso com o mesmo tempo necessário para o eco ser recebido pelo sensor;
- GND: Deve ser ligado ao terminal negativo da fonte de alimentação.
Outras informações técnicas do HC-SR04 podem ser verificadas em seu datasheet, clicando em datasheet-hc-sr04 .
Em relação à sua faixa de medição, o HC-SR04 mede distâncias de 2 a 4m, essa faixa pode variar de sensor para sensor. É importante ressaltar que caso o obstáculo a frente do sensor seja muito pequeno ou não esteja a frente do sensor, pode ocorrer do sensor não detectar esse obstáculo.
Funcionamento do sensor HC-SR04
Aplicando o funcionamento básico de um sensor ultrassônico, o HC-SR04 envia sinais ultrassônicos e aguarda o echo, ou seja, o retorno do sinal. Primeiramente ele envia um sinal com duração de 10us indicando o início da transmissão de dados e logo depois envia 8 pulsos de 40khz, após esse envio, o sensor fica aguardando o retorno do sinal em nível alto(HIGH) para então calcular a distância entre o sensor e o obstáculo utilizando a equação antes mencionada d = (V*t)/2.
Aplicação do sensor ultrassônico com Arduino
Agora que nós já conhecemos como funciona um sensor ultrassônico e sobre o sensor HC-SR04, nós podemos desenvolver uma aplicação básica integrado o sensor ao Arduino, vamos lá!
Material Necessário
01x Arduino Uno R3 Compatível + Cabo Usb
01x Sensor de Distância Ultrassônico HC-SR04
04x Jumpers MxM
Montagem do Circuito
Figura 03: Ligações do arduino com sensor ultrassônico
Fonte: Próprio Autor
Código
Inicialmente, você deve baixar a biblioteca Ultrasonic.h, essa biblioteca está disponível para download clicando aqui, após realizar o download da biblioteca, você deve descompactar o arquivo e adicionar à pasta libraries da IDE Arduino. Após instalar a biblioteca Ultrasonic.h, você irá criar um novo sketch e utilizará o código abaixo.
#include <Ultrasonic.h> //Inclui a biblioteca Ultrasonic.h #define trigger 5 // Definição do pino digital 5 para o sinal de trigger #define echo 6 // Definição do pino digital 6 para o sinal echo Ultrasonic ultrasonic(trigger, echo); //Inicializa o sensor nos pinos definidos void setup() { Serial.begin(9600); Serial.println("Começando a leitura de dados do sensor..."); } void loop() { //Leitura de informações do sensor em cm float cmMsec; long microsec = ultrasonic.timing(); cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); Serial.print("Distância em cm: "); Serial.print(cmMsec); delay(1000); }
Resultados
Temos na figura 04 os dados exibidos no monitor serial, os dados mostrados são as distâncias de determinado objeto sendo aproximado ou afastado do sensor ultrasônico.
Figura 04: Monitor serial mostrando os dados recebidos do sensor
Fonte: Próprio Autor
Conclusão
O sensor ultrassônico HC-SR04 é um sensor que lhe permite utilizá-lo em várias aplicações por um baixo custo sem pecar pela ineficiência, sua programação é simples, possui uma vasta documentação na internet, o que faz dele o sensor ultrassônico mais querido do mundo maker, com certeza este sensor lhe proporcionará uma infinidade de possibilidades. No tutorial aqui apresentado, nós pudemos ver a sua eficiência e a gama de aplicações em que ele pode ser inserido.
E aí, galera? Curtiram? Não deixe de nos dar o feedback sobre o que você achou, seu feedback é muito importante para nós! Sugiro que você dê uma olhada no nosso post de uma régua eletrônica onde o sensor hc-sr04 é utilizado, basta você clicar aqui! Não deixe de nos acompanhar nas redes sociais, te espero lá!
Só corrigindo algo superficial que vi… Se o sensor Ultrassonico é 40khz e no post fala que é imperceptível ao ouvido e depois fala que conseguimos ouvir frequência a partir de 20khz… Então podemos ouvir sim o som do sensor, e eu consigo ouvir meu sensor. Observação inútil, mas resolvi corrigir assim mesmo kkk
Obrigada pelo seu feedback!
Verdade, e meu filho que percebeu isso. dá mesmo para ouvir.
Estou montando um contador de pessoas com esse sensor. Mas nem sempre ele identifica… to labutando com isso não sei se é inprecissão do sensor
Quando abro monitor serial, não aparece nenhuma informação, apenas um monte de quadradinhos o que pode estar acontecendo ?
Boa tarde,
verifique se o baudrate configurado do seu monitor serial é o mesmo do seu código.
OI, obrigado pelo conteúdo. Pergunto, porque a distancia medida fica variando mesmo que o objeto à frente, esteja parado?
Olá Edenilson,
Muitos fatores podem estar ocorrendo:
– Mal contato na Protoboard
– Precisão do sensor que pode ser tão alta que qualquer coisa no ar pode variar a medida
– Distância do objeto ao sensor, mesmo ele estando parado, caso seja uma distância alta, acaba variando a medição.
– Suporte onde o sensor está pode estar tremendo ou desalinhado com o objeto a ser medido.
Caso o problema persistir, procure aumentar o tempo de leitura, por exemplo a cada 1 ou 2 segundos.
Abraços!
na hora de compilar o codigo o arduino diz (‘class Ultrasonic’ has no member named ‘convert’)
como resolvo isso ?
Olá Pedro, tudo bem?
Olha sem ver o seu código eu pressuponho que seja algum erro na sua biblioteca!
Essa é a mesma que nós utilizamos? Se for, tenta baixar essa nova e verifica se roda. Vale dizer que essa biblioteca possui comandos diferentes (olhe o exemplo que ela tem para ver como calcular a distância)
Só clicar [aqui] para baixar. Se ainda tiver erros, posta ele aqui junto com o código beleza?
Grande Abraço e bons projetos!
Olá, na minha programação aparece o seguinte: ‘class Ultrasonic’ has no member named ‘timing’; did you mean ‘Timing’?
O que eu faço?
Olá Matheus tudo bem?
Possivelmente deve ser problema com a classe que está utilizando. Ou ela não foi instalada corretamente ou deu erro de compatibilidade.
Peço que tente instalar ela novamente ou instalar uma outra biblioteca tudo bem?
Qualquer coisa só enviar mensagem!
Abraços!