Escrito por: Newton C. Braga

Uma das características do microcontrolador MSP430 da Texas Instruments (www.ti.com), que o diferencia dos produtos equivalentes, é sua baixíssima potência consumida, o que o torna ideal para aplicações em que a alimentação é crítica, principalmente aquelas que fazem uso de baterias. Nesse artigo, descrevemos uma aplicação em que o MSP430 é usado para medir a resistência de um sensor resistivo em ponte completa, através de seu conversor A/D sigma-delta, mostrando o valor num display de cristal líquido. O circuito é totalmente portátil, sendo alimentado por uma bateria de 3 V. (*)

(*) Consulte a Texas sobre a disponibilidade do kit de desenvolvimento

 

Nas aplicações em que se deseja medir, força, pressão ou torque sensores resistivos são amplamente utilizados. A maioria dos sensores disponíveis para esse tipo de aplicação exige uma elevada tensão de excitação, chegando tipicamente aos 10 V.

No entanto, as tensões de saída que se obtém quando a sua configuração em ponte é desequilibrada pela ação da força externa, é muito pequena, da ordem de 2 mV/V de excitação, o que exige o uso de amplificadores para instrumentação.

Na aplicação indicada nesse artigo, o sinal obtido que corresponde ao peso, passa por um condicionamento, antes de ser aplicado ao conversor A/D (analógico para digital).

Normalmente, os conversores A/D de alta resolução não são integrados aos microcontroladores, exigindo-se assim componentes adicionais externos. Assim, na abordagem convencional, utiliza-se um sensor do tipo ponte, com uma tensão de excitação de 10 V e um amplificador de instrumentação, para varrer toda a escala de tensões de entrada do conversor analógico-para-digital, (A/D ou ADC), o que significa uma boa complexidade para o circuito, além de um consumo elevado.

Uma solução melhor é justamente a que apresentamos aqui onde se emprega um microcontrolador de baixo consumo que tenha um ADC integrado e, além disso, um amplificador com ganho programado (PGA), tudo isso alimentado por uma tensão de apenas 3 V.

Essa solução pode ser implementada com base no MSP430F42x que possui um ADC de 16 bits do tipo sigma-delta com entradas diferenciais, e um amplificador com ganho programado (PGA) até 32, além dos recursos para excitação direta do mostrador de cristal líquido.

 

O Hardware

Para atender às exigências da aplicação uma solução microcontrolada é a melhor. A série MSP430F42x é formada por microcontroladores com memória flash, vindo com três conversores analógico-para-digiral de 16 bits do tipo sigma-delta.

Além disso, os chips são dotados de amplificadores com ganho programável, o que permite a conexão direta do sensor ao microcontrolador.

Na figura 1 temos o diagrama completo da aplicação que foi desenvolvida pela Texas Instruments para efeito de demonstração. O leitor poderá obter o texto completo em inglês digitando SLAA220 no "search" da própria Texas em www.ti.com.

 

Figura 1
Figura 1

 

A excitação negativa do sensor em ponte é conectada ao pino X1-1, enquanto que a excitação positiva é conectada ao pino X1-4 do sensor. A alimentação para esse sensor também é obtida diretamente do MSP430 através dos pinos P2.0 e P2.1.

Isso permite que a alimentação do sensor seja controlada pelo microcontrolador, sendo cortada nos intervalos entre as leituras, ou ainda quando o circuito entra no modo standby, de modo a se obter menor consumo de energia.

Com uma resistência do sensor de 1 200 ?, e uma tensão de alimentação de 3 V, o consumo do sensor em operação é de 2,5 mA, quando excitado.

O sinal de saída do sensor é obtido nos pinos X1.2 e X1.3, passando por um circuito de condicionamento de sinal, antes de ser aplicado aos canais SD-16 do microcontrolador.

Para a aplicação foi escolhido um sensor que apresenta uma tensão de saída de 2 mV/V à plena escala, correspondendo a um peso máximo de 10 kg. Evidentemente, para outras faixas de pesos o circuito pode ser modificado e escolhido um sensor apropriado.

Com o LCD usado, na faixa de pesos de 0 a 10 kg, pode-se obter uma resolução de 1 g, ou seja, 00000 a 10000.

Como todo o circuito é alimentado com uma tensão de 3 V, essa tensão também é usada na excitação do sensor. Assim, temos uma saída que corresponde a 3 V x 2 mV/V ou seja, 6 mV à plena escala.

Temos então que, se 10 kg corresponde a uma saída de 6 mV, a resolução de 1 g significa uma tensão de 0,6uV. Assim, a tensão do LSB para o ADC usado deve ser pelo menos 4 vezes menor que isso, ou seja, 0,6 uV/4 ou 0,15 uV.

O ADC SD16 Sigma-Delta do MS430 pode operar, tanto usado a referência interna de 1,2 V, como uma tensão de referência externa, como a utilizada nesse exemplo de aplicação.

Com o sensor alimentado pela mesma tensão que alimenta o resto do circuito, a relação entre a tensão de referência e a tensão de saída do sensor se torna independente de Vcc. Em outras palavras, a precisão é pouco afetada pela variação da tensão da bateria que alimenta o circuito.

Se o sensor for alimentado por Vcc, e utilizando a referência interna de tensão para o módulo SD16, as medidas resultantes podem se alterar com a mudança da tensão da bateria durante a sua vida útil.

 

Usando um divisor resistivo para a tensão de referência e uma tensão Vcc de 3 V, a referência será calculada da seguinte forma:

 

A relação entre os componentes do divisor formado por R9 e R10 foi escolhida de modo que a tensão de referência fique na faixa desejada de V(ref), quando a tensão da bateria que alimenta o circuito cai de 3,0 V para 2,7 V. Isso porque a menor tensão de alimentação permitida para o módulo SD16 é de 2,7 V.

Para mais informações sobre as faixas de tensões do módulo SD16 veja o datasheet do MSP430F42x digitando no" search" da Texas Instruments SLAS421.

A tensão de referência do SD16 determina a tensão diferencial de entrada à plena escala que é Vref/2. Como o conversor de dados é bipolar, a tensão LSB do conversor A/D será:

 

Usando o ganho máximo do amplificador programável interno (PGA), que é de 32, a tensão LSB diminui para 0,605 uV. Esse valor é quatro vezes maior do que o desejado para o projeto, que é de0,15 uV. Um amplificador operacional externo pode ser usado para fornecer essa amplificação adicional.

Uma outra abordagem, sem o uso de componentes externos, é a que aproveita os bits adicionais da saída SD16. O módulo SD-16 é de 16 bits, mas ele fornece um acesso a um total de 24 bits do seu filtro interno de decimação.

Acrescentando mais dois desses bits à saída resultante da conversão e filtragem passa-baixas, teremos um sinal de saída de 18 bits, como média dos resultados múltiplos e, com isso, a tensão LSB será reduzida para 0,151 uV.

 

 

Com essa tensão, as exigências de resolução podem ser satisfeitas, mesmo considerando-se que a tensão de fundo de escala do sensor é de apenas 6 mV, e que a escala toda do conversor sigma-delta não é usada.

O driver de LCD on-chip do MSP430F427 permite um interfaceamento direto com módulos LCD, como o SBLCDA4, de 7 1/2 dígitos com 4-mux da SoftBaugh (www.softbaugh.com). Os resistores R5, R7 e R8 fornecem a escada de tensão exigida para o funcionamento do módulo LCD.

Um cristal de relógio de 32 kHz é usado para o clock do sistema, excitando o LCD e proporcionando o acionamento periódico do circuito, durante a operação da aplicação. Um push-button (SW1) é previsto para a operação da escala, sendo conectado ao pino P1.0.


Software

O chip MS430F427 é fornecido tanto com linguagem C (F42x_Weigh_Scale.c) como linguagem assembly (F42x_Weigh_Scale.s43), com a listagem disponível no site da Texas Instruments juntamente com a documentação PDF em que nos baseamos para este artigo.

As duas fontes de código são igualmente funcionais, entretanto, a versão assembly é menor em termos de tamanho do código. No power-on reset, os periféricos do MSP430 são inicializados.

Isso inclui a desabilitação do timer watchdog, configuração do oscilador LFXT1, inicialização do controlador do LCD, do timer básico e do módulo conversor SD16 Sigma-Delta.

O canal 0 do SD16 é configurado para usar o par A0 do canal de entrada, e amplifcar o sinal com um ganho 32, utilizando o amplificador interno PGA. O conversor tem seu clock feito pelo SMCLK, com uma freqüência de 1 048 567 Hz e o modo de conversão contínua é desabilitado. Informação detalhada da operação do módulo SD16 pode ser obtida no documento SLAU056 (digite esse código do documento no search da Texas para obtê-lo no formato PDF).

Na figura 2 temos o fluxograma para o programa utilizado no projeto da balança com o MSP430.

 

Figura 2
Figura 2

 

No código fonte, as duas palavras de 32 bits, CalMin e CalMax são alocadas no segmento A da memória flash de dados do MSP430, para efeito de calibração.

Depois que a alimentação é estabelecida, o software verifica se essas constantes têm valores válidos. Se as duas alocações contiverem os mesmos valores (como Oxffffff depois da programação do dispositivo), o modo de calibração é ativado.

Caso contrário, o modo de medida entra. A variável ProgramMode é usada para acompanhar o estado corrente do programa (modo de medida, modo de calibração e modo power-down), fazendo o ajuste de acordo.

Em seguida, o MSP430 entra no modo de baixo consumo LPM0 com as interrupções habilitadas. O LPM0 é usado ao mesmo tempo em que o SMCLK excita o SD16, e não pode ser desligado enquanto a aplicação estiver rodando e coletanto dados do ADC.

A partir de então, o programa inteiro é interrompido. Três fontes de interrupções são habilitadas. O timer básico ISR é executado a cada 5 s e somente usado para disparar a início do processo de medida.

Na figura 3 temos o fluxograma para esse timer, a porta ISR é usada para manusear os sinais do push-button após cada conversão do A/D, e o ISR do SD16, é chamado para processar os resultados..

 

Figura 3
Figura 3

 

Durante o modo de calibração, dois pontos de dados são obtidos. A variável CalMin é usada para armazenar o resultado do A/D que corresponde ao valor do display 0g, e CalMax que é usada para armazenar o valor do A/D que corresponde o valor 10 000 g. Cal LO ou Cal HI são mostrados para indicar que os pontos de calibração estão sendo usados.

Pressionando o botão, o valor da conversão atual do A/D SD16 é lido e armazenado como uma variável temporária. Depois do procedimento de calibração, os dois pontos de dados são programados no segmento da memória flash INFOA, usado para a auto-programação no sistema. O software entra então no modo de medida.

A partir desse instante o processo de conversão é iniciado a cada 0,5 s, controlado pelo timer básico ISR. Durante as conversões, o sensor é alimentado e o DCO habilitado. O MSP430 opera agora no modo LPM0. Para alcançar a precisão desejada, o software implementa um filtro passa-baixas, pela média da soma de diversos resultados da conversão.

Após cada conversão o ISR do SD16 é executado a uma taxa de 4 kHz. Antes do dado presente ser coletado, a variável VoltageSettleCtr é decrementada de uma unidade até 0, de modo a dar um tempo de 12 ms para que a tensão se fixe, depois da alimentação do sensor.

Quando o ISR do SD16 coletou 256 resultados, a soma é então dividida por 256, de modo a gerar o resultado final de 18 bits. O processo pode ser descrito também como uma decimação de 256 para a dos dados amostrados.

O valor calculado é então comparado com o valor anterior. Somente se o valor mudou, num novo valor é apresentado no display, que é então atualizado. Isso evita que multiplicações de 32 bits precisem ser feitas constantemente.

Pressionando o botão temos a desabilitação das conversões, desligando-se o display e com isso, entra o modo LPm3. Nesse modo, o circuito consome menos de 1 uA quando o oscilador de 32 kHz ainda se mantém em funcionamento. O modo LPM4 pode ser usado para se reduzir ainda mais o consumo de corrente.

Quando o botão é pressionado novamente, a aplicação volta ao modo normal de operação. Nesse modo o SD16 opera durante 75 ms a cada 0,5 s, o novo resultado é calculado e o display se mantém atualizado.

Nesse intervalo de tempo, o consumo do MSP430 é da ordem de 1 mA. Outros 3 mA são usados para a excitação periódica do sensor e a geração da tensão de referência.

Durante as medidas, o MSP430 drena apenas 3 uA, incluindo a corrente usada pelo driver do LCD para mostrar o resultado da medida. Tudo isso resulta num consumo médio de 600 uA para a operação normal da balança.

 

Conclusão

Conforme podemos ver, as características do MSP430 simplificam bastante esse tipo de projeto, além de proporcionarem um consumo extremamente baixo.

O exemplo dado mostra as vantagens do uso dessa família de microcontroladores, o qual pode servir de referência para muitos outros projetos que fazem uso de sensores resistivos como fotômetros, condutímetros, barômetros, etc.