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. Gostaria de agradecer muito a vc amigo Claudio,
    por seus projetos, Já montei varios projetos seus,
    gostaria de perguntar a vc amigo Claudio ou a todos que compartilham ideias nesse Blog Maravilhoso,,
    gostaria que alguém já viu ou já montou um controle de velocidade com potenciometro para motores Brulhess
    de 3 fios, fico no aguardo de todos que poder me dar uma força,,,,

    1. Olá Neto! Qual seria o uso deste controle? Qual a tensão do motor? Qual a rotação máxima e minima? Tem necessidade de reversão?
      Claudio

  2. Porque a verdade é que já está ficando mais fácil encontrar o PIC do que o LM567, hehehe, e a questão é que se for possível, já temos essa segunda opção na falta do LM567. Outra possibilidade que poderia ser analisada, e de fazer um programa que ao invés do trimpot, colocamos dois botões para incrementar e decrementar a frequencia, indo de 0 a 500khz, como se fosse ajuntando com o trimpot, e daí teríamos um pino, no qual, colocamos um multimetro para medir a frequencia que ele está sendo ajustado, ou seja a frequencia que o pic vai decodificar né. Lembrando que esse ajuste vai ter que no final ficar salvo na eeprom, para quando desligar e o pic o valor do ultimo ajuste fique armazenado.

  3. Boa tarde Claudio. Gostaria de saber se é possível fazer um programa para o PIC 12F675 que simule o LM567? Você já fez um programa que decodificava uma determinada frequencia, mas o LM567 decodifica de 0 a 500khz ajustando um trimpot. Seria possível já que o pic 12f675 possui um conversor ad, colocar um trimpot, que conforme o ajuste o pic decodifique a frequencia ajustada de 0 a 500khz?

    1. Olá Deivid! Porque não usar o próprio LM567? Haverá alguma vantagem para uso, e em que aplicações que você tem em mente?
      Claudio

Comments are closed.

Back To Top