Portal de construção - Casa. Aquecedores de água. Chaminés. Instalação de aquecimento. Aquecedores. Equipamento

Telêmetro laser de fase caseiro. Principais razões para montar um medidor de distância a laser

Saudações a todos. Recentemente, coloquei em mãos um sensor ultrassônico que mede a distância até um objeto - US-100. Este item pode ser adquirido em sites de compras online. Nos mercados de sua cidade não havia tais brinquedos à venda. Decidiu-se construir um circuito baseado em tal sensor em um microcontrolador AVR ATmega8 comum. O objetivo do dispositivo é medir a distância até o objeto, bem como medir a temperatura. Falando em temperatura. O modelo US-100 é um transdutor ultrassônico com compensação de temperatura. A velocidade de propagação de uma onda sonora (ultrassônica) em diferentes temperaturas será diferente. A medição do sensor é baseada no tempo de viagem da onda sonora do objeto até o receptor do sensor. A compensação de temperatura, provavelmente não completamente, eliminará o erro causado pela temperatura ambiente.

Ao considerar uma placa de circuito impresso, podemos concluir sobre a fonte de medição de temperatura: o termômetro está localizado no microcircuito ou a medição da temperatura é feita por meio de um diodo localizado na borda da placa. Ao medir a temperatura com um diodo, sua junção PN é usada e isso se deve ao coeficiente de condutividade da temperatura. Com muita confiança, esta é a segunda opção, pois ao trabalhar com o circuito abaixo, ao tocar neste diodo com os dedos, a temperatura muda. Portanto, ao medir, é melhor tentar não tocar no sensor com as mãos para obter dados de distância mais precisos.

Para medição, o sensor utiliza 2 cabeças, lembrando um microfone grande ou um alto-falante pequeno. Em essência, são ambos. Uma das cabeças emite uma onda ultrassônica, a segunda recebe o sinal refletido da onda ultrassônica. A distância percorrida é determinada pelo tempo de viagem. Aparentemente, a limitação da distância medida de 4,5 metros se deve à potência do emissor.

Quanto à comunicação do sensor com o microcontrolador, o modelo US-100 possui duas interfaces possíveis, selecionadas por um jumper na parte traseira da placa do sensor. Se o jumper estiver ativado, a interface UART será selecionada; se o jumper for removido, a interface ou o modo GPIO será usado. No primeiro caso, o hardware ou software do microcontrolador é usado para se comunicar com o microcontrolador. No segundo caso, você terá que receber e transmitir dados apenas manualmente. No diagrama do dispositivo, usamos um modo de operação mais simples usando a interface UART.

É necessário esclarecer as nuances da pinagem e conexão do sensor ao microcontrolador. Normalmente, ao transmitir dados via UART, as linhas Rx e Tx são conectadas transversalmente - Rx a Tx e Tx a Rx. Este sensor ultrassônico deve ser conectado de acordo com os contatos assinados na placa de circuito impresso Rx para Rx e Tx para Tx. Os chineses recozeram, eu concordo. Antes de ser determinado, tive que sofrer muito e finalmente chegar a esse ponto. Assim, ao trabalhar via UART, para inicializar uma medição de distância, o sensor ultrassônico US-100 precisa transferir o valor 0x55 para o pino Trig/Tx, que corresponde ao símbolo “U”. Em resposta, o sensor enviará dois bytes de informações sobre a distância até a saída Echo/Rx - o primeiro byte são os 8 bits altos, o segundo byte são os 8 bits baixos. As unidades de distância são milímetros. Para converter dois bytes em um valor de distância, você precisa multiplicar o primeiro byte por 256 e adicionar o segundo byte. Você precisa fazer desta forma, porque quando o byte baixo transborda, o byte alto é incrementado. Para visualizar o valor atual da temperatura ambiente deve-se passar o valor 0x50, que corresponde ao caracter “P”. Em resposta, o sensor transmitirá o valor da temperatura. O valor real da temperatura será igual ao valor recebido do sensor menos 45.

Parâmetros do sensor ultrassônico US-100:

  • tensão de alimentação - 2,4 - 5,5 volts CC
  • consumo de corrente em modo de espera - 2 mA
  • temperatura operacional - menos 20 - mais 70 C
  • ângulo de visão - 15 graus
  • interface - GPIO ou UART
  • distância medida - de 2 cm a 450 cm
  • erro - mais menos 3 mm + 1%

Configuração UART do sensor: taxa de transmissão de 9600, 8 bits de dados, paridade: nenhuma, 1 bit de parada.

Vamos passar para o diagrama do dispositivo.

O circuito telêmetro ultrassônico é baseado no microcontrolador Atmega8 e no sensor ultrassônico US-100. A alimentação do circuito é retirada do regulador de tensão linear L7805, pode ser substituído pelo analógico doméstico KR142EN5A, são necessários capacitores na tubulação estabilizadora, embora possa funcionar sem eles. Alguns reguladores simplesmente não iniciam sem capacitores. Um regulador linear pode ser substituído por um regulador de comutação, por exemplo MC34063 ou LM2576, mas será necessário alterar um pouco o circuito de acordo com a conexão dos reguladores de comutação no circuito. Os capacitores C5-C7 são necessários para garantir a estabilidade do microcontrolador e do sensor. As classificações de todos os capacitores podem variar dentro de limites razoáveis. O resistor R2 é necessário para evitar a reinicialização espontânea do microcontrolador e serve como um aumento de energia positiva para o pino de reinicialização. O resistor R1 ajusta o contraste do LCD. Como painel de informações, foi utilizada uma tela de cristal líquido (LCD ou LCD) SC1602, 2 linhas de 16 caracteres baseada no controlador HD44780. Você pode substituir o display LCD por qualquer outro modelo baseado no controlador HD44780 com o mesmo número de linhas e caracteres por linha ou mais. Na placa de circuito impresso do display LCD, é possível utilizar a retroiluminação da tela de duas maneiras - seja soldando um resistor e um jumper na própria placa da tela ou utilizando pinos especiais, geralmente marcados como "A" e " K". Ânodo e cátodo, respectivamente. Uma tensão de alimentação de 5 volts é conectada a eles através de um resistor limitador de corrente. Neste esquema, o primeiro método está envolvido, portanto não está indicado no diagrama. Em vez dos botões táteis S1 - S5, você pode usar qualquer outro botão. O LED LED1 pode ser usado em qualquer cor adequada ou substituí-lo por um transistor e controlar algum outro circuito dependendo da distância excessiva do sensor. Dependendo do tipo de transistor utilizado (P-N-P ou N-P-N), caso a distância ou limite de distância seja ultrapassado, a saída terá tensão positiva ou negativa, ou seja, com sinal lógico alto do microcontrolador, o transistor N-P-N ficará aberto , e o transistor PNP será fechado. O firmware do microcontrolador possui um parâmetro no qual, caso o limite de distância indicado seja ultrapassado, um alto nível de tensão lógica será aplicado ao pino PB0. Neste circuito, o LED simplesmente sinaliza o excesso. Este sinal é duplicado no display LCD sublinhando a informação sobre o limite de distância. Este parâmetro pode ser ajustado através dos botões S1, S2. Quando pressionado, aumenta ou diminui 10 mm. As informações de distância também são exibidas em milímetros. As informações sobre a temperatura ambiente são exibidas em graus Celsius. Duas versões do firmware estão anexadas ao artigo: 1) medição contínua dos parâmetros de distância e temperatura (intervalo de aproximadamente 0,2 segundos), enquanto os botões S4, S5 não estão ativados, 2) quando os botões S4, S5 são pressionados , é feita uma única solicitação ao sensor para medir a temperatura e as distâncias. O vídeo do artigo foi feito com firmware número 1. Para programar o microcontrolador, é necessário piscar os bits do fusível:

Para iniciantes, recomendo usar os valores hexadecimais dos bits de fusível HIGH e LOW para não atrapalhar as caixas de seleção. Captura de tela do AVRstudio (há diferenças em relação ao pipe, sina prog e outros programas para microcontroladores flash). Se você usar programas para atualizar microcontroladores AVR, nos quais não há entrada de parâmetros de fusíveis, poderá usar calculadoras de fusíveis para converter marcas de seleção para o formato hexadecimal e vice-versa.

O circuito foi montado e testado em uma protoboard para Atmega8:

Estruturalmente, o circuito pode ser projetado, por exemplo, na forma de uma pistola com um indicador de direção a laser do sensor ultrassônico. O único limite é a distância medida, acima da qual o erro aumenta acentuadamente. A limitação também diz respeito à posição e ao tamanho do objeto ao qual a distância é medida - a distância até objetos muito pequenos ou em grande ângulo será distorcida. A combinação ideal são objetos suficientemente grandes que sejam perpendiculares à direção do sensor. O erro de medição corresponde aproximadamente ao declarado pelo fabricante. Este dispositivo, com maior desenvolvimento, pode ser utilizado como detector de obstáculos, como sensor de estacionamento em condições ambientes, pois na rua as cabeças ultrassônicas deste sensor ficarão entupidas de sujeira.

Ofereça suas ideias e aplicações, as ideias mais interessantes no futuro poderão ser implementadas.

Anexados ao artigo estão 2 versões de firmware HEX para MK, um projeto em (versão 7.7, não há sensor ultrassônico US-100 no banco de dados Proteus, mas um depurador UART está envolvido), bem como um pequeno vídeo demonstrando a operação do circuito.

Lista de elementos de rádio

Designação Tipo Denominação Quantidade ObservaçãoComprarMeu bloco de notas
IC1 AVR MK 8 bits

ATmega8

1 Para o bloco de notas
VR1 Regulador Linear

L7805AB

1 Para o bloco de notas
HG1 tela de LCDSC16021 Baseado em HD44780 Para o bloco de notas
U1 sensor ultrasônicoEUA-1001 Para o bloco de notas
R1 Resistor de ajuste10 kOhm1 3296W-1-103LF Para o bloco de notas
R2 Resistor

10 kOhm

1 0,25 W Para o bloco de notas
R3 Resistor

390 ohms

1 0,25 W

Bruno Gavand

O projeto, que considera uma solução de sensor de distância ultrassônico simples e de baixo custo, é baseado no microcontrolador PIC16F877A da empresa, mas o código-fonte pode ser adaptado pelos usuários para outros microcontroladores. O sensor pode ser incorporado em designs e dispositivos personalizados: detectores de presença, robôs, sistemas de estacionamento, dispositivos de medição de distância, etc.

Características distintas:

  • um pequeno número de componentes externos;
  • tamanho do código 200 bytes;
  • faixa de distâncias de trabalho: 30 cm - 200 cm;
  • precisão de medição ±1 cm;
  • indicação quando estiver fora dos limites de medição.

Como você sabe, a velocidade do som no ar é de cerca de 340 m/s. Assim, o princípio de um sensor ultrassônico é enviar um pulso ultrassônico com frequência de 40 kHz e rastrear o sinal refletido (eco). Claro, você não ouvirá o som, mas o sensor ultrassônico é capaz de determinar o pulso refletido. Portanto, conhecendo o tempo de trânsito do pulso e o sinal ultrassônico refletido, podemos obter a distância. Dividindo por dois, obtemos a distância do sensor ultrassônico ao primeiro obstáculo de onde o sinal foi refletido.

O dispositivo usa um emissor ultrassônico piezocerâmico MA40B8S e um sensor ultrassônico piezocerâmico MA40B8R do tipo aberto. Os principais parâmetros são mostrados na tabela abaixo.

Dispositivo Propósito Frequência Orientação,
saudação
Capacidade,
pF
Região
detecção,
eu
entrada
tensão,
máximo, V
MA40B8S Emissor 40 kHz 50 (simétrico) 2000 0.2 … 6 40
MA40B8R Sensor 40 kHz 50 (simétrico) 2000 0.2 … 6

A plataforma de depuração da empresa foi utilizada para testes.

Porém, o usuário pode usar qualquer microcontrolador PIC que possua pelo menos um canal ADC e um canal PWM.

Diagrama esquemático do sensor ultrassônico

O emissor é controlado por um transistor BD135. O diodo 1N4007 serve para proteger o transistor da tensão reversa. Devido à utilização de um transistor e de um circuito ressonante, que é formado pela conexão paralela de uma bobina L1 de 330 μH e um capacitor formado pelo próprio emissor, a tensão de alimentação do emissor será de cerca de 20 V, o que proporciona uma detecção alcance de até 200 cm, vale ressaltar que é possível controlar o emissor diretamente da saída do microcontrolador, porém, neste caso, o alcance de distâncias não ultrapassa 50 cm.

O sensor é conectado diretamente ao ADC do microcontrolador (ao utilizar PIC16F877A - canal 1 do ADC), é necessário um resistor conectado em paralelo com o sensor para igualar a impedância.

Primeiro você precisa enviar um pulso ultrassônico. Um sinal com frequência de 40 kHz é facilmente obtido usando um microcontrolador PWM de hardware. O sinal refletido do sensor entra no ADC, a resolução do ADC é de 4 mV, o que é suficiente para ler os dados do sensor, e nenhum componente adicional é necessário.

Aparência da placa de ensaio do sensor ultrassônico


Este sensor é a solução mais simples e, portanto, tem várias desvantagens: uma leve vibração do receptor ultrassônico pode levar a medições incorretas. Como o pulso transmitido não é modulado ou codificado, fontes estranhas de frequência ultrassônica podem interferir na medição e tudo isso pode levar a resultados incorretos (fora dos limites de medição).

Legendas na imagem:

explosão ultrassônica - explosão ultrassônica;
eco mecânico (removido por software) - eco mecânico (excluído por software);
onda ultrassônica refletida por um objeto remoto - onda ultrassônica refletida por um objeto remoto.

O valor da divisão do osciloscópio: horizontalmente - 1 ms/div, verticalmente - 5 mV/div.

O eco mecânico é eliminado pelo software através da introdução de um atraso. A onda refletida, que tem amplitude de cerca de 40 mV, foi recebida 9,5 ms após o pulso enviado. Dado que a velocidade do som é 340 m/s, obtemos:

0,0095 / 2×340 = 1,615m.

Na verdade, era o teto da sala a uma distância de 172 cm do sensor, o valor de 170 cm era exibido no display LCD instalado na placa de depuração.

Transferências

O código-fonte do projeto no microcontrolador PIC16F877A (compilador mikroC) -

HC-SR04 é um dos telêmetros mais comuns e baratos em robótica. Ele permite medir distâncias de 2 cm a 4 m (talvez mais) com uma precisão decente de 0,3-1 cm. A saída é um sinal digital cuja duração é proporcional à distância até os obstáculos.

telêmetro ultrassônico

Este sensor foi comprado por mim há muito tempo e estava quase esquecido em sua caixa. Mas, no âmbito de um projeto, um telêmetro bastante compacto foi construído com base nele e na placa do voltímetro para revisão.

Telêmetro ultrassônico HC-SR04

Características do sensor:

Potência - 5V
Consumo atual - menos de 2mA
Ângulo de visão efetivo - 15g
Distância medida — 2cm - 5m
Precisão - 3mm
Retirado da documentação do sensor

Princípio de funcionamento do HC-SR04

Princípio da Operação

O módulo possui 4 saídas, sendo duas de alimentação - terra e + 5V, e mais duas são de dados. O módulo é pollado da seguinte forma: um pulso com duração de 10 μs é enviado para a saída Trig. O telêmetro gera um pacote de 8 pulsos ultrassônicos de 40 kHz. Que, refletidos na maioria das superfícies, retornam se não desaparecerem ao longo do caminho. Imediatamente após enviar um sinal para Trig, começamos a esperar um sinal de resposta positiva na saída Echo, com duração de 150 µs a 25 ms, que é proporcional à distância ao objeto. Mais precisamente, o tempo de trânsito do sensor até o obstáculo e vice-versa. Se não houver resposta (o sensor não ouvirá seu eco), o sinal retornará com duração de 38 ms. A distância até um objeto (obstáculo) é calculada usando a seguinte fórmula simples:

Onde: L é a distância em centímetros do objeto e F é o comprimento do pulso no pino Echo.
O tempo de pesquisa do sensor recomendado é de 50 ms ou 20 Hz.

Os primeiros testes deste módulo foram realizados utilizando um osciloscópio digital, que captou a resposta do módulo e manualmente, fechando rapidamente o Trig para + potência, tentou obter um pulso inicial de 10 µs. Em metade dos casos aconteceu [:)] .

Projeto

O sensor foi conectado a uma placa de voltímetro com ânodo comum, ligeiramente modificado para funcionar com ele (foram removidos divisores desnecessários com capacitor e adicionada uma saída do RA3). Foi utilizado um microcontrolador da 5ª versão do voltímetro - PIC16F688, com firmware redesenhado para o telêmetro ultrassônico.

No artigo falarei sobre como fiz um telêmetro a laser e o princípio de seu funcionamento. Observo imediatamente que o design é uma maquete e não pode ser usado para uso prático. Isso foi feito apenas para garantir que o telêmetro de fase possa realmente ser montado por você mesmo.

Teoria

Muitas vezes surge a opinião de que, com a ajuda de um laser, a distância é medida apenas medindo diretamente o tempo de “vôo” do pulso de laser do laser até o objeto refletor e vice-versa. Na verdade, este método (denominado impulso ou tempo de voo, TOF) é utilizado principalmente nos casos em que as distâncias ao objeto desejado são grandes o suficiente (> 100m). Como a velocidade da luz é muito alta, é muito difícil medir o tempo de voo da luz e, portanto, a distância, com grande precisão em um pulso de laser. A luz viaja 1 metro em cerca de 3,3 ns, portanto a precisão da medição do tempo deve ser de nanossegundos, embora a precisão da medição da distância ainda seja de dezenas de centímetros. Para medir intervalos de tempo com tanta precisão, são utilizados FPGAs e microcircuitos especializados.

Vídeo do telêmetro:

O alcance operacional do telêmetro resultante foi bastante pequeno: 1,5-2 m, dependendo do coeficiente de reflexão do objeto.
Para aumentar o alcance, você pode usar um refletor especial, que precisará direcionar o feixe de laser.
Para experimentos, fiz um refletor de lente, composto por uma lente com papel fosco no foco. Este desenho reflete a luz para o mesmo ponto de onde foi emitida, porém, o diâmetro do feixe aumenta.
Foto do refletor:

Uso do refletor:


Como você pode ver, a distância até o refletor é de 6,4 metros (na realidade era cerca de 6,3). Neste caso, o sinal aumenta tanto que deve ser atenuado direcionando o feixe de laser para a borda do refletor.

A precisão do telêmetro resultante é de 1 a 2 centímetros, o que corresponde à precisão da medição da mudança de fase - 0,2 a 0,5 graus. Ao mesmo tempo, para atingir tal precisão, a média dos dados precisa ser calculada por muito tempo - leva 0,5 segundos para uma medição. Talvez isso se deva ao uso de um PLL para condicionamento de sinal - ele apresenta bastante jitter. Embora eu ache que para uma placa de ensaio caseira, cuja parte analógica é feita de maneira um tanto desajeitada, na qual existem fios bastante longos, mesmo essa precisão é muito boa.
Observo que não consegui encontrar um único projeto de telêmetro de fase existente na Internet (pelo menos com um diagrama de projeto), razão pela qual escrevi este artigo.

Tag:

  • telêmetro a laser
  • stm32
  • stm32f4discovery
Adicionar tags

Na ocasião, comprei um telêmetro ultrassônico HC-SR04. O dispositivo é um módulo com dois emissores piezoelétricos, um dos quais serve como emissor e o segundo como receptor de onda ultrassônica; além de eletrônica de controle para controlar o emissor e o receptor. Para conexão, o módulo possui um conector de 4 pinos: sendo dois para alimentação (requer 5 volts), e mais dois para comunicação com o microcontrolador.

A interface de comunicação aqui é organizada de forma muito simples: damos um pulso curto com duração de 10 a 15 microssegundos na entrada e aguardamos o pulso na saída. Assim que a onda refletida atingir o receptor, o próprio módulo calculará a distância e emitirá um pulso de alto nível de até 25 ms de duração para a perna do eco. A duração do pulso de saída será proporcional à distância até o obstáculo no qual a onda ultrassônica foi refletida. Só temos que captar esse impulso, calcular seu comprimento e traduzir esse valor em distância.

Especificações:

  • Tensão de alimentação: 5V
  • Corrente quiescente:< 2 мА
  • Ângulo de visão eficaz:< 15 °
  • Faixa de distância: 2 cm - 500 cm
  • Resolução: 0,3cm

As características são retiradas da documentação do módulo. Além disso, o fabricante fornece uma fórmula para calcular a distância dependendo da duração do pulso.

S=F/58 ; onde S é a distância em centímetros, F é a duração do pulso em microssegundos

Como você pode ver, mesmo sabendo a velocidade do som não é necessário.

Para teste, montei o seguinte esquema:

O módulo se conecta diretamente ao microcontrolador. Não é necessário instalar resistores pull-up, eles já estão na placa do módulo.

E assim, precisamos de captar apenas um impulso e depois calcular o seu comprimento. A princípio, eu queria colocar uma das interrupções externas do microcontrolador neste negócio, enquanto a interrupção deveria ter ocorrido tanto na borda ascendente (transição do estado baixo para o alto) quanto na borda final (do alto para o baixo). Ou seja, você terá que alterar a configuração dessa interrupção na hora. Além disso, você precisa usar um dos temporizadores, que deve medir a duração do pulso. Muito complicado para uma operação de trava de sinal pequeno. Bascom-AVR possui um comando especial para este caso Pulseína . Aqui está um exemplo de como capturar um sinal com este comando:

Pulseína A, Pinar, 5 , 1

Aqui em uma variável A o valor do comprimento do pulso é escrito em dezenas de microssegundos tirado da perna Pino.5. A unidade no final do comando diz que você precisa captar um sinal de alto nível. Se alterado para 0, o controlador captará o sinal de baixo nível.

Este comando não utiliza interrupções ou temporizador de hardware, mas é capaz de detectar a ocorrência de um pulso e capturar sua duração com resolução de 10 µs. O comando usa um tipo variável de 2 bytes para armazenar o comprimento do pulso, de modo que o comprimento máximo do sinal recebido pode ser 655,35 ms. Isso é suficiente para a tarefa, mas se necessário, você pode editar o arquivo da biblioteca mcs.lib e alterar a duração máxima do pulso registrado.

A listagem completa do programa é mostrada abaixo.

$regfile = "m8def.dat"

$cristal = 8000000

"configuração para conectar o display às portas MK

Configuração lcd = 16 * 2

Configuração lcdpin= Alfinete, R$= porto. 5 , E= porto. 4 , Db4= porto. 3 , Db5= porto. 2 , Db6= porto. 1 , Db7= porto. 0

Configuração portad. 4 = Saída "saída para conectar o gatilho da perna

acionarAlias portad. 4

acionar= 0

Configuração portad. 5 = Entrada "entrada para eco de pulso

Configuração portad. 7 = Saída "configuração para conectar LED

LideradoAlias portad. 7

Liderado= 0

Escurecer AComo Palavra "o valor do comprimento do sinal é copiado aqui

Escurecer SComo Solteiro "variável para armazenar distância

Const. K= 0 . 1725 "fator para converter o comprimento do pulso em distância

Aguarde 50

Cursor Desligado

Cls

lcd Sonar HC-SR04

Localizar 2 , 1

lcd "local na rede Internet"

Liderado= 1

Aguarde 100

Liderado= 0

Espere 3

Fazer

acionar= 1 "damos um impulso à perna Portd.4 com duração de 15 μs

Espere 15

acionar= 0

Espere 10

Pulseína A, Pinar, 5 , 1 "capturamos um impulso de alto nível no PinD.5

Postagens semelhantes