Termômetro binário com Arduino Pro Mini (ATMEGA328P)

   Bom dia leitores, e um ótimo ano novo á todos!. Com este calor que tem feito no verão (e sabendo que tem muito mais por vir) eu decidi que queria ter um termômetro barato e simples sempre á mão; e o melhor: feito por mim!. Por isso decidi fazer um termômetro somente com led's e o chip do Arduino Pro Mini ou UNO (ATMEGA328P), para que fique barato e ainda me lembre do sistemas de numeração binária, toda vez que eu olhar para ele. 
   Porque um termômetro binário? por dois motivos: é muito legal ter um equipamento feito por você mesmo, e que funciona! e também porque eu já havia feito um projeto similar para um concurso da SeeedStudio láaá em 2014: veja aqui. Uma imagem do protótipo de relógio binário que fiz naquela época está abaixo.


   Desta vez eu resolvi ensinar a montagem deste termômetro utilizando um Arduino Pro Mini, pois é bem menor que o UNO (só em tamanho, mas não em capacidade), perfeito para esta pequena montagem. 
   O circuito completo deste artigo pode ser visto na imagem abaixo, e contém 6 LED's (conectados ao Port B do Arduino) com um resistor em série com cada LED e um sensor de temperatura KTY81-110 com um resistor de 1k ohm em série. Obviamente qualquer outro sensor de temperatura pode ser utilizado (LM35, DHT11, DS18B20, LM75AD), bastando  para isso adaptar a parte do código que faz a leitura analógica do sensor. 


   Como o Arduino Pro Mini não tem conversor USB para Serial embutido,  vou utilizar um Arduino UNO (sem o chip) para fazer a gravação do Pro mini. Veja imagem abaixo a forma de conexão para gravação do código.


   A pinagem utilizada na imagem acima foi a seguinte: 
- Fio Vermelho: 5V do UNO  para o 5V do Pro mini
- Fio Preto: GND do UNO para o GND do Pro mini
- Fio Verde: Reset do UNO para o Reset do Pro mini
- Fio Amarelo: TX(1) do UNO para o TX0 do Pro mini
- Fio Laranja: RX(0) do UNO para o RX1 do Pro Mini

   O processo de  gravação do código não tem segredo, basta escolher a placa "Arduino Pro Mini" na IDE do Arduino  (ao invés de escolher Arduino UNO). Lembre de retirar o chip ATMEGA328P da placa do Arduino UNO antes de ligar a placa, conforme a imagem acima. O código é pequeno e simples, pois faz uso de manipulação direta das portas do portB do Arduino.

 #include <avr/io.h>  
 #include <avr/interrupt.h>  
    
 int sensorPin = A0;  // Porta analogica para conexao do sensor KTY81  
 int sensorValue = 0;  // Variavele para calculo da temperatura ambiente  
 byte binaryValue= B00000000; // Valor binario que sera passado aos leds  
   
 void setup()  
 {  
    
   Serial.begin(9600); // inicia comunicacao serial com o PC, para debugging  
   DDRB = DDRB | B00111111; // seta 6 portas do portB como saida  
 }  
   
 void loop()  
 {  
  sensorValue = (analogRead(sensorPin)*0.0048875*111.2)-256.025; // equacao para calculo da temperatura do KTY81  
  binaryValue= byte(sensorValue);  
  PORTB = binaryValue;   
  Serial.println(sensorValue); // visualiza temperatura na porta serial  
  delay(2000); // espera 2 segundos  
   
 }  

   Explicando o código: 
- A linha "DDRB = DDRB | B00111111;" defique que os ultimos 6  pinos do portB são saídas, onde vamos conectar os LED's.
- A linha "sensorValue = (analogRead(sensorPin)*0.0048875*111.2)-256.025;" calcula a temperatura em graus Celsius, a partir da leitura da tensão sobre o sensor KTY81.
- A linha "binaryValue= byte(sensorValue);" transforma o valor da temperatura em informação binário (0's e 1's).
- A linha "PORTB = binaryValue;" é a parte mais importante do programa, pois joga o valor da temperaratura (já em binário) nos LED's.

   Funcionamento do circuito: cada LED aceso tem um "peso" em binário, sendo: 
- 1 para o primeiro LED
- 2 para o segundo LED
- 4 para o terceiro LED
- 8 para o quarto LED
- 16  para o quinto LED
- 32 para o sexto LED

   Sendo assim, a temperatura do ambiente será a soma dos valores atribuídos aos LED's ACESOS.  Exemplos: 



   Para resumir a experiência de hoje:  utilizando apenas um sensor de temperatura (KTY81), 6 LED's e um Arduino Pro Mini é possível criar um simpres termômetro binário. Um ótimo projeto para feiras de ciências ou até mesmo para ter na mesa ou  na bancada!. 

- Para comprar o Arduino Pro Mini em nosso Parceiro ICStation (da China), clique no texto: ICStation ATmega328 Pro Mini Compatible Arduino
- Para comprar os cabinhos coloridos (jumpers) em nosso Parceiro ICStation (da China), clique no texto: 1pcs Dupont Wire 10CM 2.54MM Female to Male 1P-1P Jumper Cable For Arduino

Marcadores: , , , , , , ,