terça-feira, 9 de fevereiro de 2016

Construção de um termómetro

Há já algum tempo que tinha a ideia de construir um termómetro cujos valores medidos fossem indicados através de um servo motor.

Porque era o que cá tinha em casa, usei como sensor de temperatura um TMP36. Através da análise da respetiva datasheet, é possível obter a respetiva pinagem (o meu sensor é do tipo TO-92) e as curvas caraterísticas:


Da análise das figuras 5 e 6, apercebemo-nos que o TMP36 é linear entre os 0ºC e os 100ºC (aproximadamente). Eu decidi escolher como valores limites do meu termómetro os 0ºC e os 50ºC.

Liguei então o TMP36 à entrada analógica A0, o servo motor à saída D8 e os LED verde e vermelho às saídas D12 e D11, respetivamente. Sem que consiga explicar porquê, a minha experiência diz-me que, com servo motores ligados, a saída D13 deixa de funcionar devidamente e por isso evito usá-la em projetos com servo motores.

A primeira versão do projeto mostrou-se muito instável, com o sensor a saltar repentinamente para valores incoerentes. Tentei estabilizar o seu funcionamento, ligando dois condensadores na alimentação tanto do sensor como do motor, mas não obtive bons resultados. A estabilização deu-se quando tornei a alimentação do servo motor independente do arduino, ligando-a a uma entrada USB do computador. Estou certa que foi essa a solução que estabilizou o funcionamento do circuito; ainda assim, optei por deixar os condensadores.

Em termos de programação, comecei por transformar o valor da entrada analógica (0-1023) em valores de tensão (0 - 5V):


Depois, houve que, a partir do gráfico da figura 6 da datasheet do TMP36, transformar esse valor em temperatura (em ºC):


Sendo o valor 105,3 o declive da reta b) da figura 6:


A partir do valor da temperatura obtido, tive de definir o ângulo com que o servo motor devia rodar. Como entre os limites que escolhi existe um intervalo de 50ºC, achei que um ângulo de 100 graus seria adequado, com cada ºC a fazer o motor rodar 2 graus. Centrei a atuação do motor entre os 40 graus e os 140 graus. Assim, o ângulo definido pelo motor para cada valor da temperatura é dado por (em graus):


Para que o motor não andasse aos solavancos, o valor da temperatura indicado na equação anterior foi arredondada às unidades.

Caso o valor da temperatura desça abaixo dos 0ºC ou suba acima dos 50ºC, fiz ligar o LED vermelho e "congelei" a posição do motor nos 40 graus e 140 graus, respetivamente.

Deixo a minha proposta de trabalho para o circuito de eletrónica e o programa em Scratch...



...o circuito esquemático...



...e um pequeno vídeo com o termómetro em funcionamento:

Sem comentários:

Enviar um comentário