Descrevemos a montagem de um medidor de distância ou trena eletrônica ultrassônica, utilizando um MSP430F413, microcontrolador de ultra baixo consumo. O sistema emite uma salva de ondas ultrassônicas em direção ao objeto e recebe um eco correspondente. A partir do processamento desse eco, o MSP430 pode computar a distância até o objeto. Na versão apresentada a distância é apresentada em polegadas com uma precisão de +/- 1 polegada, mas podem ser feitas modificações para a apresentação da distância em centímetros. O artigo que levamos ao leitor é uma adaptação do Application Report SLAA136 da Texas Instruments (www.ti.com).


Ferramenta de desenvolvimento para o MSP<span class=
Ferramenta de desenvolvimento para o MSP430

 

Um Medidor Ultrassônico de Distância ou Ranger Finder, também conhecido por Trena Eletrônica é um instrumento que começa a ganhar popularidade entre engenheiros civis, arquitetos e outros que precisam realizar medidas em ambientes de forma rápida e precisa.

O princípio de funcionamento é simples de entender. Um transdutor emite uma série de pulsos ultrassônicos de curta duração os quais refletem no objeto cuja distância se deseja medir. A quantidade de sinal refletido no objeto é importante, dependendo do tamanho do objeto, já que um objeto menor pode ter como conseqüência a redução desse alcance.

Se um eco muito pequeno obtido de um objeto de reduzidas dimensões, a intensidade do sinal que ele induz no transdutor receptor pode não ser suficiente para excitar os circuitos.

Se isso ocorrer, o circuito conta com um recurso que é avisar que o objeto está "fora do alcance", produzindo a mensagem E no display.

Veja que o dispositivo opera a partir de ondas sonoras que são ondas mecânicas de compressão e descompressão do ar. Deve-se ser levado em conta que a velocidade de propagação dessas ondas pode variar sensivelmente sob diferentes condições de temperatura e pressão, se bem que não o suficiente para afetar a precisão atribuída ao circuito.

Assim, o que o circuito faz é computar o tempo que o sinal ultrassônico leva para ir e voltar até o objeto, levando em conta a velocidade de propagação no ar, fornecendo então um resultado numérico que é apresentado num display.

Evidentemente, modificando-se o algoritmo de cálculo usado no programa do microcontrolador pode-se colocar a velocidade do som, que no original é 1100 pés por segundo, em metros ou 340 m/s e com isso obter-se a indicação da distância em centímetros (ou metros).

 

O Circuito

O circuito usa um par de transdutores cerâmicos de 40 kHz. O MSP430 excita o transdutor usado como transmissor com uma salva de 12 ciclos de um sinal retangular de 40 kHz, obtido do próprio oscilador à cristal do microcontrolador.

O transdutor receptor recebe o eco produzido pelo objeto cuja distância se deseja saber. O timer A do MSP430 é configurado para contar a freqüência do oscilador a cristal de tal forma a se obter uma resolução de tempo de 24 us, o que é apropriado para a aplicação. A base de tempo para a medida é muito estável já que ela é derivada de um oscilador controlado por cristal.

O eco recebido pelo transdutor receptor é amplificado por um amplificador operacional e entregue a entrada A do comparador. O comparador A sensoria a presença do sinal de eco em sua entrada, disparando a captura do sinal timer A. O valor da contagem é então levado ao registro CCR1.

A captura é feita exatamente no instante em que o eco chega ao sistema. Assim, a contagem capturada é numericamente igual a medida do tempo que a salva de sinal leva para ir e voltar até objeto sensoriado.

Feita a computação desse tempo pelo microcontrolador, o resultado é enviado a um display de cristal líquido (LCD) de dois dígitos.

Imediatamente após a atualização do display o MSP430 entra no modo LPm3 seleed, para economizar energia. O Basic Timer1 é programado para interromper o MSP430 a cada 205 milisegundos. Esse sinal do Basic Timer1 acorda o MSP430 para que um novo ciclo de medida seja realizado e o display atualizado.

Na figura 1 temos o diagrama completo do aparelho.

 

Diagrama completo da trena ultrasasônica.
Diagrama completo da trena ultrasasônica.

 

Conforme podemos ver o MSP430F413 (U1) é o coração do sistema. LCD1 é um display de cristal liquido estático de 2 dígitos excitado diretamente elo driver de LCD integrado. R03 é ligado ao VSS enquanto que R13 e R23 são deixados em aberto para a operação do drive LCD no modo estático assim como de seus periféricos.

Um cristal de 40 kHz foi escolhido para a aplicação de modo a se obter a freqüência de ressonância dos transdutores usados. R12 serve como pull-up para a linha de reset .

O capacitor C9 tem por finalidade fazer o desacoplamento da alimentação do MSP430 devendo ser instalado o mais próximo possível do pino de alimentação. Um conector de 14 pinos possibilita o interfaceamento JTAG do dispositivo com a ferramenta de programação de debugging.

O LED1 é usado para indicar os ciclos de medida. O pino P1.5 de porta é configurado para fornecer a saída do sinal retangular de 40 kHz, usado para excitar o transmissor ultrassônico.

O circuito drive do transdutor é alimentado diretamente pela bateria de 9 V fornecendo um sinal de 18 Vpp para o emissor. Os 18 Vpp são conseguidos por uma configuração em ponte usando o circuito integrado U4 CD4049 que consiste em seis inversores.

Uma das portas do inversor é excitada diretamente pelo sinal em fase, invertendo a fase do sinal para excitar o outro conjunto de portas. Essa configuração dobra a tensão de excitação de saída, obtendo-se então os 18 Vpp.

Como o MSP430 opera com 3,6 V e o CD4049 com 9 V, existe um descasamento lógico entre esses componentes. O transistor Q1 serve para casar os níveis lógicos dos dois circuitos de modo a possibilitar o interfaceamento dessas etapas.

Para amplificação do sinal do transdutor foi usado o amplificador operacional da Texas TLV2771 de 5 pinos, que possui um elevado ganho na freqüência de 40 kHz. Esse amplificador é configurado como inversor com R5 e R7 fixando seu ganho. R3 e R4 polarizam a entrada não inversora de modo a se obter um terra virtual.

A saída do amplificador operacional é ligada ao comparador Comparator_A CAO do MSP430 através do pino P1,6. Esse comparador tem uma referência interna selecionada para ser 0,5 Vcc.

Quando nenhum eco é recebido, o nível de tensão em CAO é ligeiramente menor do que a referência em CA1. Quando um eco é recebido, a tensão aumenta ultrapassando o nível de referência e com isso o comparador é disparado.

O MSP430 e o amplificador de sinais ultrassônicos são alimentados por uma fonte regulada de 3,6 V derivada da bateria de 9 V via o LDO TPS7701. Os resistores R1 e R2 programam a tensão de saída em 3,6 V.

C1 e C2 são recomendados para corrigir o funcionamento do regulador. O driver do transmissor é alimentado diretamente pela bateria de 9 V. A chave S1 é o interruptor geral.

Na figura 2 temos o sinal de 12 ciclos de 40 Hz visto num osciloscópio. Observe que a excursão da tensão de saída. A oscilação senoidal após a salva é devida à ressonância do transdutor.

 

Forma de onda de 12 ciclos de 40 Hz.
Forma de onda de 12 ciclos de 40 Hz.

 

Na figura 3 temos os sinais no osciloscópio para um ciclo completo de medida. O traço 1 mostra a salva de 12 ciclos de 40 kHz na saída do transdutor.

 

Onda exibida no osciloscópio.
Onda exibida no osciloscópio.

 

O traço 2 mostra o sinal amplificado do transdutor receptor no pino do amplificador operacional. O primeiro sinal de salva no traço representa o sinal diretamente recebido pelo transdutor e ignorado pelo MSP430. A salva seguinte na forma apresentada representa um eco refletido pelo objeto e esse sinal é usado pelo MSP430 para a medida.

O traço 3 mostra o tamanho do intervalo medido pelo MSP430. Essa largura representa o tempo que ele demora para que a salva viaje ela distância no sistema medido, até o objeto e depois de volta.

 

SOFTWARE

A listagem para o software de programação pode ser baixada juntamente com o application note completo no site da Texas Instruments no arquivo SLAA136A.

 

Init_Device

Essa sub-rotina tem por função inicializar e configurar os periféricos usados. Inicialmente, o timer Watchdog é desabilitado. Um retardo de software é produzido para permitir que o oscilador de baixa freqüência se estabilize. O multiplicador FLL+ é fixado em 64 para gerar uma freqüência MC LK de 2,56 MHz. P1.0 é configurada como uma saída para o LED.

Os pinos de porta não usados são configurados como saída e o pino P1.5 é configurado para gerar um sinal de 150 Hz para o LCD e uma interrupção da CPU a cada 205 ms, de modo a iniciar o ciclo de medidas. O Comparador -A é configurado com 0,5 Vcc de referência interna e os bits CAPD são fixados para desabilitar os buffers de entrada para os pinos de entrada do comparador.

O módulo LCD é ligado e configurado no modo estático de operação de modo a excitar o display de dois dígitos. A locações de memória do LCD são limpas de tal modo que o valor apresentado inicialmente no LCD seja 00.A interrupção do Basic Timer 1 e a interrupção global são habilitados de modo que o Basic Tiumer 1 interrompa a CPU periodicamente.

 

Loop Principal

Esse bloco atualiza o LCD com o valor armazenado no buffer DIGITS e então coloca o MSP30 no modo sleep LPm3. O MSP430 permanece nesse modo sleep até que o Basic Timer 1 produza uma interrupção e BT_ISR retorna ao seu modo ativo.

Nesse momento um ciclo de medida é iniciado. O Timer_A é configurado para o modo de 16 bits e ACLK é selecionado como fonte de clock para o Timer_A. CCR1 é fixado para o modo de comparação com um valor 12, assim a salva de saída de 12 ciclos de 40 kHz aparece em P1.5.

Um retardo de 36 ciclos em ACLK segue para permitir que o transdutor seja ativado. Isso é realizado pela colocação CCR1 no modo de comparação com um valor 36. O MSP430 fica em LPMO durante esse estado de espera de comparação de CCR1.

Com isso o sistema está pronto para receber o eco através do transdutor receptor. O comparador _A é configurado para esperar pelo eco fornecendo uma interrupção de captura no momento em que o eco chega. A contagem do Timer_A é então capturada e comparada no registro CCR1.

Esse valor é medido através do tempo que demora para o eco atravessar a distância até o objeto visado e votar. O valor é contado sendo acionado o valor 48 de modo a compensar as perdas na salva de 12 ciclos e os 36 ciclos do ajuste do transdutor.

Em seguida, a sub-rotina matemática é chamada para computar a distância real e retornar com o resultado. Se o sistema monitorado estiver fora do alcance, o sinal de eco não será recebido e o comparador _A não realizará a captura da interrupção.

O MSP430 permanecerá no modo LPMO até a interrupção seguinte do Basic Timer 1 que o "acordará:. O bit CAIFG no registro de controle CCTL1 é então testado de modo a se assegurar que o eco não foi recebido. Para indicar essa condição, um valor de 0xBE é armazenado em DIGITS de modo a mostrar um "E" no LCD.

O programa finalmente volta ao loop principal para atualizar o LCD e ir novamente ao modo sleep LPM3. A interrupção seguinte do Basic Timer 1 retorna ao modo ativo do MSP430 para que a execução da seqüência ocorra novamente.

 

Math_calc

A finalidade dessa sub-rotina é realizar os cálculos matemáticos que levem à distância até o objeto visado. Para isso, o valor de 16 bits obtido do CCR1 é armazenado na variável Result. Esse valor é a representação do tempo que a salva ultrassônica leva para ir e voltar até o objeto.

Partindo então do fato de que o Timer-A conta em passos de 25 microsegundos, o valor equivalente em tempo será Result x 25 us. Assumindo a velocidade do som como 1 100 pés por segundo na temperatura ambiente, o Result da contagem do Timer_A será seis pulsos por polegada de distância. Então dividindo Result por 6 temos o valor correspondente em polegadas. Evidentemente, teremos um quociente diferente para ser programado nesse ponto se quisermos a distância apresentada em centímetros, por exemplo.

Para alcançar a precisão necessária com a matemática disponível no MSP430, o Result de 16 bits é inicialmente multiplicado por 100 para depois ser dividido por 6. Essa multiplicação de 16 x 16 bits é feita pela sub-rotina Mul100. O resultado de 32 bits é então armazenado na variável DIGITS no formato hexadecimal.

Temos então a sub-rotina hex2bcd que converte o valor hexadecimal em BCD sendo os dois últimos dígitos do valor número BCD descartados para compensar a multiplicação por 100 feita inicialmente.

O resultado será um valor de dois dígitos que retorna para a variável DIGITS.

 

BT_ISR

A sub-rotina de interrupção do Basic Timer 1 BT_ISR manipula os bits no registro de status SR que estão na pilha de tal modo que o MSP430 retorne ao modo ativo na volta desse ISR. Isso permite que o MSP430 continue a executar o código que segue a instrução LPm3 no loop principal.

 

Display

Essa sub-rotina atualiza o display LCD de dois dígitos com o valor da variável DIGITS. O segmento de dados para o display estático é armazenado na tabela LCD_Tab. A memória do LCD é carregada com o segmento de dados pela correlação entre os números em DIGITs e o índice para a locação necessária na tabela LCD_Tab.

 

Delay

Essa sub-rotina adicional um retardo de software de 16 bits. Nenhum registro é afetado já que a variável a ser contada pelo software está no topo da pilha (TOS). Depois que o retardo é feito retardo, o ponteiro da pilha (SP) é incrementado de volta ao valor original antes de retornar dessa sub-rotina.

 

Conclusão

Os recursos do MSP430 simplificam bastante um projeto desse tipo. A corrente média consumida pela aplicação é de 1,3 mA durante um ciclo de medida de 15 polegadas. Isso inclui a corrente quiescente do LDO U2, amplificador operacional U3 e o inversor sextuplo U4. O amplificador operacional sozinho tem uma corrente quiescente de 1 mA e o resto do circuito um consumo de 300 uA.

O LED consome 3 mA quando aceso. O MSP430 consome uma corrente média de 2,1 uA com o LCD continuamente ativo. Isso é possível tomando-se vantagem das características de ultra-baixa corrente do MSP430.

Lembramos que a velocidade do som varia com a temperatura, assim a precisão do aparelho é afetada quando as medidas são feitas em locais com temperaturas muito diferentes da ambiente tomada como referência. Uma possibilidade consiste em se utilizar um sistema de compensação usando termistor.

Da mesma forma, o circuito também pode ter mais dígitos no LCD com modificações no projeto.