INICIANDO EXPERIMENTOS COM ULTRASSOM – LENDO DISTÂNCIAS COM MODULO ULTRASSÔNICO HC-SR04 E PIC16F628A

Gostaria de medir distâncias com o uso do módulo ultrassônico HC-SR04? Veja mais…

Veja o esquema abaixo:

Atualmente, está relativamente fácil obter componentes prontos para montagens experimentais. Um deles é o emissor/receptor de ultrassom HC-SR04, que contém em uma única plaquinha de circuito impresso de 20×45 mm, um emissor e um receptor ultrassônico, junto com circuitos integrados SMD para a lógica de funcionamento. Apenas 4 terminais são necessários para sua ligação, denominados de : ‘Vcc, Gnd, Trigger e Echo’. Em princípio, basta disparar com um breve pulso de 10 microsegundos em nível ‘1’, no terminal ‘Trigger’ e aguardar em ‘Echo’ até que ele vá para nível ‘1’. Deveremos então, medir o tempo que este terminal permanecer em nível ‘1’. Usamos o Timer 1 para esta medição. Como obter a distância? Basta usar um pouco de matemática para calcular a distância que se encontra o objeto posicionado a frente do módulo HC-SR04. Lembre-se que o som viaja no ar a aproximadamente 340 metros por segundo. É digno de nota que o tempo a ser medido, será o dobro, pois o som terá de viajar até o objeto e retornar pelo mesmo caminho, após ser refletido por ele.
Como fazer estes cálculos no PIC? Com a boa e eficiente ‘Biblioteca de Ponto Flutuante’. Ela já foi acrescentada ao ASM, para facilitar a compreensão do funcionamento. Geralmente, ela seria chamada, via ‘includes’, no início do programa.
Para usa-la temos que primeiro transformar os dados em ‘ponto flutuante’.
Como fazemos isto? Carregamos os registradores AARGB0..B3 com o valor a transformar e depois chamamos a rotina ‘CALL FLO2424’. Ela retornará em ‘AEXP, AARGB0, AARGB1’, o valor em ‘ponto flutuante’ de 24 bits.
A cada operação feita com a rotina de ponto flutuante, devemos tomar o cuidado de salvar os resultados nos bancos de registradores. Para facilitar a manipulação, temos 3 bancos diferentes (A,B e C), além de rotinas para trocar entre sí, o conteúdo dos bancos ( swapA_B) e para copiar (copiarA_C, copiarA_B, copiarC_A). Apenas, temos de estudar como fazer a rotina para torna-la mais eficiente, ordenando os passos de forma correta e mais lógica possível.
Qual foi o cálculo realizado para obtermos a medida da distância?
Para melhorar os cálculos, o valor de 340 metros/segundo foi convertido em 3.400.000 décimos de milímetros/ 1.000.000 de microsegundos. Como no final da conta, temos de dividir por 2, fazemos então a divisão por 2.000.000 de microsegundos, eliminando, assim, uma etapa de multiplicação. Basta, agora, multiplicar este resultado pelo tempo medido, ou seja, o valor que temos no Timer 1, usado para medir a duração do pino ‘Echo’ em nível ‘1’. Voltamos a converter para ‘inteiros’ com a rotina ‘CALL INT2424’. Convertemos de hexa para decimal com a rotina ‘CALL CONV_DEC’, e finalmente, apresentamos no LCD o valor obtido.

Fórmula: Distância (cm)= 3400000 /2000000 * Timer 1

Como estamos usando um cristal de 4 mhz, cada incremento no Timer 1 corresponde a 1 microsegundo.
O uso de ultra-som para medições de distâncias tem suas restrições. Superfícies rugosas e macias, como tecido, algodão,etc, tendem a absorver a emissão ultrassônica, impossibilitando o retorno do eco. Formatos irregulares, orifícios, tamanhos reduzidos, etc, tendem a causar instabilidade nas medidas. Isto deve ser levado em conta ao iniciar um projeto com esta tecnologia. Entre os possíveis usos: pequenos robôs (como ‘olhos ultrassônicos’, que se desvie de objetos), uma alarme de passagem, sensor de proximidade para carros, alarmes por proximidade, etc. Mais detalhes do componente, consulte o datasheet do componente para saber mais sobre seu funcionamento e suas limitações.
Obs. Este material é de uso didático apenas, sendo montado em protoboard, sujeito a bugs ainda não identificados. Esta sendo fornecido o arquivo ASM, que poderá ser alterado conforme as necessidades do hobista.

Segue o arquivo ASM:

le_distancia_asm

Segue o arquivo HEX:

le_distancia_hex

Manuais:
Pic16f628a
HC-SR04

Curiosidades:
Como uma música se torna um sucesso?
Proteja sua audição!
O segredo de um ouvido em miniatura
“A máquina de aprender mais potente do Universo”
Como lidar com problemas da próstata
Mapeamento do céu: no passado e no presente
Alimentos nutritivos ao seu alcance
Tomar chá à moda chinesa
Como é viver acima das nuvens
Gota — causas e fatores de risco
O projeto maravilhoso da molécula de hemoglobina
O que fazer para dormir melhor
Pressão alta: prevenção e controle
Quem criou as leis que governam o Universo?
Como o árabe tornou-se a lingua dos instruidos

Outros assuntos:
Como disciplinar seu filho adolescente
Por que eu me corto?
Desempenhem bem o papel de pais
Como fazer seu segundo casamento dar certo
O que acontece quando morremos?
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

Clique aqui para comentarios/sugestões fora deste tópico

16 comments on “INICIANDO EXPERIMENTOS COM ULTRASSOM – LENDO DISTÂNCIAS COM MODULO ULTRASSÔNICO HC-SR04 E PIC16F628A

  1. Bom dia Larios, venho acompanhando os seua post a tempos até fiz o ckt so sensor de presença por rx/tx. mas não ficou tão bom, mas gostaria de saber se voce poderia me ajudar num ckt que usaria o HC-sr04 e um pic para automatizar dispositivos, ate acheu um post de um amigo nosso que é +/- que tenho em mente, só que ele usou um arduino e eu gostaria de usar um PIC, segue link: http://arduinolivre.wordpress.com/2012/08/01/desligando-tv-utilizando-sensor-ultrasonico-hc-sr04/, só que usar um relay no lugar do led IR

    1. Olá Cleber!
      Você pensa em usar para ‘automatizar’ dispositivos? Leve em conta, que para cada processo existe sensores diferentes que serão mais eficientes em uma ‘automação’. O sensor ultrasônico pode não ser a melhor escolha. Existe os indutivos, capacitivos, ópticos, piroelétricos, etc. Poderia compartilhar a sua ideia de ‘automatismo?
      Cláudio

      1. Olá Claudio, o que tenho em mente seria para automatizar residencia, Imagina voce na sala vendo TV e ela fica ligada o tempo que vc estiver no ambiente, e quando passar um tempo (5 min) que vc sai da sala a tv desliga o receptor de tv tambem desliga, seria +/- oque a sony tem hj nas tvs. ajudatia até na economia de eletricidade.

  2. Boa noite Claudio.
    Tentei fazer o circuito LENDO DISTÂNCIAS COM MODULO ULTRASSÔNICO HC-SR04 E PIC16F628A e meu display não exibe nada, o que pode haver de errado com o projeto?

    1. Olá Luckstrikerhlm!
      Primeiramente, certifique de ter gravado o pic antes de usar no circuito. Certifique de estar usando o hex correto, fornecido no artigo. Também, verifique todas as ligações. Inversões dos pinos são fáceis de acontecer. Verifique pino a pino se cada ligação está certa. Alguns displays tem posições diferentes nas pinagens. Veja o datasheet do display para se certificar. Também, alguns displays não funcionam bem com o resistor de 1k ao gnd no pino ‘VO”. Substitua por um trimpot de 10k, com um extremo ao vcc e o outro extremo ao gnd, ligando o cursor no pino ‘VO’. Você irá ajustar o ‘contraste’ para a melhor apresentação.
      Cláudio

  3. Claudio, bom dia! Os projetos postados por voce sao de extrema simplicidade e alta aplicabilidade em varios outros projetos. Gostei muito. A 3 anos fui fazer um curso de assembly. O professor me mostrou o CCS C e eu desisti do assembly. Me formei em algo parecido com a mecatronica de hoje. Oficial de Maquinas da Marinha Mercante. Estudei aletrica, pneumatica, mecanica, hidraulica, “eletronica em 1979 (imagina!)”e outras. Na apresentação do curso, fui o unico que nao tinha jamais visto um pic. Claro! Teve um sacaninha (meu professor) que me apresentou o 877A. De la para ca, fiz o software e hardware de um dosador eletronico para minha empresa. Nao existe no mercado nada parecido. Este dosador nao e vendido, e utilizado com nossos produtos. Apos todo este bla, bla, bla… Pergunto: Voce nao posta esses projetos em C? Ou seja, em portugues? rsrsrs…..
    Nao pego projetos na internet, porque os comentarios sao sem fim, porque o projeto nao esta certo ou vem em .hex que nao posso mexer. De qualquer forma, os comentarios dos outros usuarios mostram a qualidade dos seus projetos em assembly(linguagem do além)rsrsrs….. Obrigado.

    1. Olá Mauro!
      Obrigado por seus comentários apreciativos pelo site. Infelizmente, programar em “C” não é ‘minha praia’. Mas aindo persisto em ‘tentar’ programar nesta linguagem, em vista de muitas vantagens advindas. Mas o ‘assembly’ ainda me é ‘muito agradável’, como um gosto adquirido. Se dispuser de projetos seus mesmo em “C”. que desejar disponibilizar para postar, fique a vontade. Serão bem recebidos.
      Claudio

Comments are closed.

Back To Top