A Fairchild (www.fairchild.com) em seu Application Note 2003 descreve a construção de um termostato com base no microcontrolador ACE1101. O circuito também pode operar como um termômetro. Este artigo é de 2008.
O microcontrolador indicado se caracteriza pelo seu tamanho reduzido já queé fornecido em invólucro TSSOP8 e toda a informação necessária a operação e calibração está armazenada na EEPROM on-chip.
O termômetro suporta diversos formatos de saída digital (dois limiares, PWM, NRZ, etc.), podendo ser conectado a uma porta serial de PC para a leitura ou gravação da EEPROM interna e realizar as conversões de temperatura. O sensor usado é um NTC. Na figura 1 temos o diagrama básico do termostato proposto.
Conforme podemos ver por essa figura, o microcontrolador pode implementar todas as funções necessárias a elaboração do termostato.
Nesse circuito o valor da temperatura, que consiste numa resistência é comparado com o valor de um resistor de referência. Para iniciar a primeira parte da conversão, o capacitor C1 é descarregado pela ida da saída G0 ao nível baixo. Uma vez que C1 esteja totalmente descarregado, a saída G0 é configurada como uma entrada . G3 é então colocada no estado de alta impedância.
G4 é alimentada pelo Vcc e C1 carrega-se via Rref. O timer interno de 16 bits parte ajustado para o valor máximo de contagem. Quando a tensão no capacitor alcança a tensão limiar G0, o timer para e o valor é armazenado para cálculos posteriores.
Na segunda parte da conversão, esse processo se repete para Rntc, exceto pelo fato de que G4 agora está colocado no estado de alta impedância e G3 ao Vcc, Na figura 2 temos o circuito para a leitura de referência.
Na figura 3 temos o circuito para a leitura do NTC.
R2 é necessário para suavizar a curva do NTC nas baixas temperaturas e manter o tempo de conversão dentro da faixa do timer de 16 bits. O valor de R2 é escolhido de acordo com o tipo de termistor usado.
O resistor R3 é usado para garantir um offset ao termistor nas temperaturas muito altas mantendo a conversão num valor razoável. Isso também reduz a carga no pino I/O.
Outra forma de se fazer a leitura da resistência do NTC que depende da temperatura, é utilizando um processo PWM. Nesse modo de operação G2 gera um sinal PWM com um ciclo ativo dependente da temperatura. Nesse caso, o microcontrolador é programado para medir o tempo do ciclo ativo convertendo-o para um valor de temperatura.
Os valores dos componentes não são críticos. Uma conversão numa única varredura é tolerante às variações de valor do capacitor, limiar e Vcc como foi demonstrado no application note original. No entanto, para se obter maior confiabilidade para o projeto é conveniente utilizar um capacitor de boa qualidade.
Um capacitor multi-camadas com valores entre 47 nF e 1 µF é o recomendado. O valor exato depende da resolução, da resistência nominal do NTC, do clock do sistema e do setor da curva de resposta do capacitor em que se deseja fazer as conversões de temperatura.
No projeto, o resistor de referência foi escolhido para se casar com a resistência nominal do NTC (25º C) que corresponde mais ou menos ao centro de sua curva de temperaturas. No entanto, se o circuito for operar em outra faixa, o valor desse componente pode ser modificado de acordo com as necessidades do projeto.
Na figura 4 temos um circuito de interface com o PC para aquisição de temperaturas ou para ser usado no controle termostático de algum dispositivo externo.
No Application Note AN-2003 pode ser encontrada a listagem completa do programa a ser usado para que o ACE1101 funcione como um termostato na configuração indicada e nas demais que daremos como exemplo nesse mesmo artigo.
O primeiro passo para se estabelecer a comunicação entre o PC e o termostato é interligar as duas placas através de J1. Esse procedimento vai alimentar as placas (Vcc é derivado da UART do PC e regulado por U1) o que leva os pinos G1 e G2 ao nível alto.
Como foi indicado ao se analisar o funcionamento, isso faz com que o termostato espere pelos comandos do PC. O primeiro byte enviado deve ser uma mensagem de calibração (0x55), usado pelo programa ACE para ajustar a taxa de Bauds em 4800.
Se esse procedimento for feito corretamente, o termostato retorna com um caractere de reconhecimento BAUDOK=0x80 o qual é usado pelo PC para validar ou modificar a taxa de bauds. Nesse momento, o PC enviará as mensagens que levam o circuito a enviar informações sobre a temperatura registrada pelo NTC. Cada pacote de mensagem é formado por um Opcode e dois operandos.
A figura 5 mostra um primeiro circuito prático que consiste num termômetro alimentado pela porta serial de um PC.
Esse termômetro possui um software específico para o PC, o qual permite a leitura da temperatura ambiente e apresentá-la na tela do PC. O termistor pode ser instalado longe da placa, dependendo do tipo de aplicação desejada. Por exemplo, ele pode ser posicionado de modo a monitorar a temperatura do disco-rígido da CPU ou de outro dispositivo.
Deve-se ficar atento para o fato de que a alimentação para o circuito pode não ser fornecida adequadamente por todos os tipos de PC, pois nem todas as portas seriais têm a capacidade de corrente suficiente para a aplicação. Veja que são usadas as linhas DTR e RTS para essa finalidade. Nos casos em que isso ocorrer, deve ser usada uma fonte externa.
O circuito da figura 6 usa a opção de baixo consumo (low power) o que permite que o circuito seja alimentado por uma bateria de lítio de 3,6 V.
O baixo consumo permite que o termômetro opere por longos intervalos de tempo. Para se garantir maior autonomia a programação deve prever a utilização de ciclos de conversão curtos em intervalos não muito pequenos. Os circuitos apresentados possuem uma precisão da ordem de 1,3%, o que é mais do que suficiente para a maioria das aplicações, dependendo da calibração, já que a maioria dos NTCs têm uma precisão na faixa de 5% a 10%.
É interessante também observar que o exemplo de aplicação dado pela Fairchild para o caso de um NTC pode ser estendido para outros tipos de sensores resistivos como, por exemplo, um sensor de posição, um LDR, etc.