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:
Segue o arquivo 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!!!
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,,,,
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
Olar Amigo Claudio, o uso desse controle seria para aumentar e diminuir a velocidade
por potenciomentro, e a voltagem desse motor é de 12v esse motor brushless não sei se vc já fez algum rodar eu não conseguir por que eu não entendo de microcontroladores, eu estou iniciando os estudos de linguagen c agora,
olhe o link e veja as fotos desse motor de 3 fios
https://www.google.com.br/search?psj=1&bav=on.2,or.r_qf.&bvm=bv.47883778,d.dmQ&biw=1366&bih=667&um=1&ie=UTF-8&hl=pt-BR&tbm=isch&source=og&sa=N&tab=wi&ei=yCLBUbGcGoSZ0QGyxYHACw&q=motor%20brushless#facrc=_&imgrc=wkQYJYwTBy5QXM%3A%3BqZtBXhtj1yYlgM%3Bhttp%253A%252F%252Fhobbylivre.com%252Fweb%252Fmedia%252Fcatalog%252Fproduct%252Fcache%252F1%252Fimage%252F9df78eab33525d08d6e5fb8d27136e95%252Ft%252Fu%252Fturnigy-d3536-6-1250kv-brushless-outrunner-motor-304-p.jpg%3Bhttp%253A%252F%252Fhobbylivre.com%252Fweb%252Fmotor-turnigy-d3536-6-1250kv-brushless-outrunner.html%3B1478%3B1109
Te enviei um e-mail agora com o projeto para postar no blog. abraço.
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.
Olá Deivid! Quem sabe seja possível, pelo menos, em parte!!!
Claudio
Ah, fiz o projeto do controle remoto on/off com o ht6p20b, daí depois, vou enviar no seu e-mail para você postar no blog
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?
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