As características de ultra-baixo consumo do MSP430 permitem e implementação de um termômetro capaz de operar durante até 10 anos com uma única bateria de 3 V. Veja nesse artigo como montar esse termômetro, usando como sensor o TMP100 da Texas Instruments. O artigo foi baseado no Application Report SLAA151.

O TMP100 da Texas Instruments consiste num sensor digital de temperatura com interface I2C capaz de comunicar-se diretamente com o MSP430F413.  Assim, usando esses dois componentes, mais um display VI-302-DP-8 é possível implementar um termômetro para temperaturas em graus centígrados com um consumo extremamente baixo. O termômetro é de 3.5 dígitos, e sua tensão de alimentação é de 3 V e com o modo de operação intermitente, o consumo é de apenas 2 uA (tip), o que garante uma enorme durabilidade para a bateria.

É claro que, aproveitando as capacidades do MSP430 com dispositivos  I2C pode-se implementar indicadores para outros tipos de sensores. Na figura 1 temos o diagrama completo do Termômetro Digital com o MSP430F414.

 

Para aplicações menos críticas, como em termostatos, a resolução do termômetro é de 1º C. Nessa aplicação o segundo byte (8 LSB) do resultado pode ser ignorado. Dessa forma, o segundo byte pode ser lido e manuseado pelo MSP430 pelo software ou simplesmente não lido. Isso é acompanhado por simplesmente não se reconhecendo a transferência do primeiro byte de dados.

Apesar desse método resultar numa operação em 8 bits, isso não reduz o tempo ativo tanto do MSP430 como do TMP100 como uma diminuição da corrente total e a apresentação dos dados com 1º C de resolução. Depois de capturar o resultado da conversão do TMP100, o MSP430 manuseia os dados de modo a apresentar no display LCD a temperatura correspondentes. Esse processo envolve em manusear o MSB para poder apresentar também temperaturas negativas, fazer a conversão binário para BCD e atualizar os registradores do LCD para acionar o display. Cada vez que os dados são manuseados e levados ao display e este atualizado, o MSP430 retorna ao estado de baixo consumo LPM3, consumindo apenas 2,0 uA da alimentação total.

Usando uma interrupção que dure 5 segundos, a CPU "acorda" e começa de novo o processo. No exemplo de software dado, o módulo Basic Timer é ajustado para intervalos de 2 segundos, o que resulta numa corrente média de 3,55 uA. Com isso, a duração estimada para a bateria é da ordem de 7 anos e meio! Com interrupções em intervalos maiores pode-se obter uma duração ainda mais longa para a vida da bateria, chegando facilmente aos 10 anos com 6 segundos.

 

 

O projeto

O sensoriamento de temperatura pode ser de diversas formas. No caso a opção foi o TMP100 por se casar muito bem com as características desejadas para esse projeto. No entanto existem outras opções que fazem uso de transistores, termistores, etc. e que podem ser adotadas com sucesso desde que o interfaceamento apropriado seja previsto.

A idéia básica desse projeto é um circuito que funcione com o menor consumo de energia possível, ao mesmo tempo que forneça indicações de temperatura em tempo real. O TMP100, quando operando no modo "one-shot" vai ao modo shutdown após cada conversão, consumindo uma corrente típica de 0,1 uA entre as conversões. Por outro lado, o MSP430 no modo stand-by pode consumir apenas 0,9 uA (LPM3), excitando um um LCD de 3,5 dígitos que resulta num consumo total de 2,45 uA. Na figura 2 mostramos o perfil de consumo de corrente do sistema.

A alimentação sugerida é uma bateria de lítio tipo moeda de 3 V CR-2032, a qual está especificada para fornecer uma autonomia de 220 mA-horas de operação. Com o consumo médio de 2,45 uA  que mostramos na figura, temos uma autonomia de:

 

220 mAh/2,45 uA = 89 796 horas = 10,25 anos

 

Para se obter a corrente média baixa é preciso tomar cuidado com o software o qual deve usar um mínimo de ciclos ativos de clock. MSP430 possui um tempo de "wake-up" muito rápido, da ordem de 6 us,  Por outro lado, a operação do TMP100 no modo one-shot permitem a criação de um software que atenda a essas exigências.

Na figura 3 mostramos os blocos que correspondem a esse software.

 

Minimizando o tempo ativo do MSP430 para 1,6 ms por conversão, é possível controlar o consumo de energia.

 

 

Hardware da Inteface

O sistema de interfaceamento entre o MSP430 e o TMP100, como mostrado na figura 1, exige poucos componentes e conexão. A energia para o sistema vem da bateria de lítio e é recomendado o uso de um capacitor de 100 nF de desacoplamento. O resistor de pull-up 68 k ohms é recomendado na entrada reset (RST).

Para fornecer o clock no modo sleep, é usado um cristal de 32,768 kHz. Dois resistores adicionais de pull-up são usados para a entrada de clock (SLC) e SDA (data I/O) do TMP100, como exigido pelo padrão Philips I2C. A apresentação da temperatura é fornecido por um LCD estático de 3,5 dígitos. O MSP430 possui um driver para LCDs que pode alimentar até 24 segmentos e 4 saídas comuns dando uma combinação máxima possível de 96 segmentos.

A implementação usa uma linha comum e 24 segmentos. Veja que esse exemplo usa o MSP430F413 mas o mesmo modo de implementação de segmentos pode ser aplicada a qualquer dos microcontroladores 4xxx da série MSP430.

 

 

Funcionamento

A comunicação I2C com o TMP100 é feita inteiramente por software usando dois pinos I/O de uso geral do MSP430. A configuração de endereçamento do TMP100 suporta até 8 dispositivos individuais num único barramento I2C usando dois pinos de endereçamento.

Nessa aplicação essas duas entradas são aterradas, fixando os 7 bits de endereço do TMP100 em 1001000. O acesso do TMP100 inicialmente exige que o endereçamento apropriado (7 bits + WR) sejam enviados seguido dos 8 bits de endereçamento do ponteiro.

O endereço do ponteiro especifica um dos três registros a ser atualizado pelo controlador principal. Nessa aplicação, a configuração do registro do TMP100 é atualizada cada vez que o loop principal do software inicia uma nova conversão, usando o modo one-shot. Os mesmos métodos podem ser usados para gravar nos registradores restantes do sensor.

A comunicação exige que os dados da conversão da temperatura sejam lidos no mesmo instante em que ocorra o ciclo de gravação das instruções. Primeiro, o dispositivo precisa mandar endereço e dados ao TMP100. Novamente, o ponteiro de 8 bips especifica o registro que deve ser lido pelo MSP430. Isso é seguido por uma condição repetida de start e re-sending do endereço do TMP100. Durante a transmissão desse segundo endereço, o bit RD/WR é levado ao nível alto, indicando um comando de leitura do registro.

A leitura dos dados convertidos da temperatura do TMP100 exige 16-bits de dados. Tuas transferências de 8 bits são enviadas, primeiro o MSB. O resultado da conversão é dependente da resolução desejada, a qual pode ser configurada entre 9 e 12 bits em incrementos de 1 bits. Uma conversão de 9 bits resulta numa resolução de 0,5º C/LSB. Essa é a implementação usada nesse exemplo de projeto.

O software para implementar esse projeto pode ser baixado a partir do site da Texas Instruments (www.ti.com) digitando-se no search o documento original SLAA151.