Medindo distância com FRDM-KL05Z e Sensor HC-SR04 - MakerHero

Medindo distância com FRDM-KL05Z e Sensor HC-SR04 2

Olá caro leitor, tudo bem? Continuando com a série de artigos sobre a NXP Freedom Board KL05Z. Neste artigo apresentarei o princípio de funcionamento do Sensor de Distância Ultrassônico HC-SR04 e a biblioteca de software que desenvolvi para realizar a medida de distância com FRDM-KL05Z e Sensor HC-SR04.

Material necessário para o FRDM-KL05Z e Sensor HC-SR04

NXP Freedom board KL05Z
Sensor de Distância Ultrassônico HC-SR04

Princípio de funcionamento do FRDM-KL05Z

O sensor ultrassônico consiste em detectar objetos e medir distância. O seu funcionamento parte da emissão de um pulso sonoro de alta frequência, que por sua vez propaga pelo meio na velocidade do som. Quando esse pulso sonoro atinge um determinado objeto, o sinal sonoro é ecoado e retornando o sensor. O cálculo da distância entre o sensor e objeto é feito a partir do tempo da emissão e a recepção do sinal ( 𝚫t ).

Característica do sensor HC-SR04

O Sensor de Distância Ultrassônico HC-SR04 possui o seguinte pinout:

VCC – Pino de alimentação
Trig – Pino disparo do pulso sonoro (Input)
Echo – Pino resposta do sensor (Output)
GND – Pino de alimentação

Na figura a seguir temos figura ilustrando os sinais do sensor HC-SR04, onde é possível observar o pulso de 10 microssegundos no sinal do “Trigger”. O sinal do transmissor ultrassônico com a frequência de 400 KHz utilizada para detectar o objeto. E por fim o sinal do Echo com a resposta do tempo que o sinal ultrassônico levou para chegar até o objeto e retornar para o sensor.

Biblioteca de Software

O algoritmo desenvolvido é simples, possui duas funções; a primeira é para inicializar os periféricos do microcontrolador para gerenciar a leitura do sensor. A segunda é a função de leitura do sensor.

A função “hcsr04_Init” inicializa os pinos de interface do sensor HC-SR04 e temporizador. O pino do microcontrolador conectado ao “Trig” é configurado como saída, o pino conectado ao “Echo” é configurado com entrada. Para o temporizador é utilizado o periférico PIT (Periodic Interrupt Timer). O Timer é configurado para gerar interrupções a cada 10 microssegundos.

A segunda função é ”hcsr04_GetDistance” responsável por disparar a leitura do sensor e calcular a distância. O algoritmo inicia gerando o pulso no pino “Trig” de 10 microssegundos. Em seguida inicia a leitura do sinal “Echo” do sensor, a etapa seguinte é aguardar a borda de subida. Após detectar a borda de subida é disparado o timer e o algoritmo passa a aguardar a borda de descida do sinal. Depois de detectar a borda de descida é encerrada a contagem do timer. O algoritmo conta com um mecanismo de “timeout” para as detecções das bordas no sinal “Echo”. Esse mecanismo é importante para que o software não fique preso nesta rotina na ausência ou falha do sensor HC-SR04.

Por fim, resta calcular a distância. Então é verificado se não houve nenhum “timeout” nos processo de detecção de borda. Caso não haja, é calculado a distância do objeto. O cálculo da distância é feito a partir do valor da velocidade som, que é 340,29 m/s.

Velocidade som = 340,29 m/s = 𝚫s / 𝚫t

a equação para calcular a distância fica assim:

340,29 = 𝚫s / 𝚫t -> 340,29 = 𝚫s /𝚫t

340,29 = 𝚫s * (1 / 𝚫t) -> 320,29 * 𝚫t = 𝚫s -> 320,29 * 𝚫t = m

Código Fonte

https://github.com/evandro-teixeira/ThirdpartKL05Z/blob/master/HCSR04/hcsr04.h
https://github.com/evandro-teixeira/ThirdpartKL05Z/blob/master/HCSR04/hcsr04.c

Aplicação de demonstração

A aplicação desenvolvida é bem simples, consistem no algoritmo de inicialização e leitura da distância através do Sensor de Distância Ultrassônico HC-SR04. E para visualizar o valor da leitura do sensor a aplicação UART (serial) para imprimir o valor.

Conclusão

O Sensor de Distância Ultrassônico HC-SR04 é uma ótima opção para projetos que necessitam medir pequenas distâncias. E como demonstrado neste artigo a sua implementação é simples.

A biblioteca de software apresentada neste artigo está no meu Github disponível para todos. Além de utilizar, você também pode contribuir com o projeto, ajudando no seu desenvolvimento. Pode fazer isso testando, avaliando, corrigindo falhas e implementando novas funcionalidades.

Referências

Fonte Imagem
https://i2.wp.com/portal.vidadesilicio.com.br/wp-content/uploads/2017/05/sensor-ultrassonico-funcionamento-1.png?resize=400%2C203&ssl=1

Fonte Imagem
https://image.slidesharecdn.com/sensordistanciaultrasom-190124101126/95/sensor-de-distncia-ultrasom-com-arduino-11-638.jpg?cb=1548325044

PIT – Periodic Interrupt Timer
https://www.embarcados.com.br/pit-periodic-interrupt-timer-para-frdm-kl25z/

Faça seu comentário

Acesse sua conta e participe

2 Comentários

  1. Muito obrigado, ficou fácil de entender. 👍

    1. Muito obrigado pelo retorno. Fico feliz em saber que te ajudou a compreender o funcionamento do sensor.
      Não deixe de conferir no repositório do Github a implementação desse sensor e dos demais itens.
      https://github.com/evandro-teixeira/ThirdpartKL05Z
      https://github.com/evandro-teixeira/KL05Z_Libraries