O porquê do sensor de temperatura? A escolha foi por poder ser utilizado em diferentes locais e infra-estruturas, mudando um pouco o seu Hardware ou Software adequadamente com o local a ser aplicado. Esta escolha também foi feita porque necessitava-mos da sua utilização para as mini PAP’s, e também para ver um pouco como trabalha o I2C.
Material Principal para realizar o projecto:
- Arduino UNO;
- Sensor de Temperatura(TC74);
- Ventoinha;
- Placa de Potência.
TC74:
O funcionamento do sensor de temperatura é muito simples. Temos 5 pinos sendo estes VDD, GND, SCL, SDA e o pino NC. O protocolo de comunicação existente neste sensor é o I2C.
O barramento I2C é conhecido por utilizar apenas dois fios para comunicação entre vários dispositivos electrónicos, mas contudo este necessita de 4 fios, dois para comunicação e dois para alimentação.
Os fios são os seguintes:
- VCC (+5V);
- GND (Massa comum entre os equipamentos);
- SDA (Serial DAta Line);
- SCL (Serial CLock).
O Sensor é alimentado a 5V e comunica com o Arduino por I2C, tendo de ligar o pino SDA a entrada analógica 4 e o SCL a entrada analógica 5.
Programação:
//sensor de temperatura v.01
#include "Wire.h" //wire libraria
#define address 0x4A //address do sensor de temperatura
#define baudrate 9600 //baudrate de comunicação
#define Ventoinhas 7 //define ventoinhas como pino 7
int Estado = 0;
void setup()
{
Wire.begin();
Serial.begin(baudrate);
}
void loop()
{
pinMode (Ventoinhas, OUTPUT);
Serial.print("Temperatura em Celsius: "); //sinal que está a receber
int temperatura; //temperature em um byte
Wire.beginTransmission(address); //inicio de transmissao
Wire.send(0x00);
Wire.requestFrom(address, 1);
if (Wire.available())
{
temperatura = Wire.receive();
Serial.println(temperatura); //impressao da temperatura
}
else
{
Serial.println("---");//imprime --- caso não receba nada
}
if(Estado = 1 & temperatura <= 28) //Histerese
{
digitalWrite(Ventoinhas,LOW);
Estado = 0 ;
}
else if(Estado = 1 & temperatura >= 30)
{
digitalWrite(Ventoinhas,HIGH);
Estado = 0 ;
}
Wire.endTransmission();//fim de transmissao com a libraria
delay(1000);
}
#include "Wire.h" //wire libraria
#define address 0x4A //address do sensor de temperatura
#define baudrate 9600 //baudrate de comunicação
#define Ventoinhas 7 //define ventoinhas como pino 7
int Estado = 0;
void setup()
{
Wire.begin();
Serial.begin(baudrate);
}
void loop()
{
pinMode (Ventoinhas, OUTPUT);
Serial.print("Temperatura em Celsius: "); //sinal que está a receber
int temperatura; //temperature em um byte
Wire.beginTransmission(address); //inicio de transmissao
Wire.send(0x00);
Wire.requestFrom(address, 1);
if (Wire.available())
{
temperatura = Wire.receive();
Serial.println(temperatura); //impressao da temperatura
}
else
{
Serial.println("---");//imprime --- caso não receba nada
}
if(Estado = 1 & temperatura <= 28) //Histerese
{
digitalWrite(Ventoinhas,LOW);
Estado = 0 ;
}
else if(Estado = 1 & temperatura >= 30)
{
digitalWrite(Ventoinhas,HIGH);
Estado = 0 ;
}
Wire.endTransmission();//fim de transmissao com a libraria
delay(1000);
}
Placa de Potência:
A placa de potência é muito simples de fazer e de utilizar. Nós desenhamos duas placas, uma com 8 relés e outra com 1 relé. Nós desenvolvemos duas placas distintas a pensar em possíveis utilizações e preço.
A placa de potência é alimentada a 12V e tem de ter o GND em comum com o Arduino, está recebe um sinal do Arduíno que faz com que atraque o relé e possa accionar algo que esteja ligado as saídas do relé, neste caso um cooler de 12V. Estes relés podem trabalhar tanto como contacto aberto ou contacto fechado.
1 Relé:
Circuito de 1 Relé (Placa de Potência)
Lista de Materiais:
o 1 Relé 12V/10A 1 contacto
o 1 Led Vermelho
o 1 Resistência 470Ω
o 1 Resistência 2,2KΩ
o 2 Terminais Blocks de 3 pinos
o 1 Diodo 1N4148
o 1 Transistor BD137 ou BD439
8 Relés:
Circuito de 1 Relé (Placa de Potência)
Lista de Materiais:
o 8 Relés 12V / 0,5A 2 contactos
o 8 Leds Amarelos
o 8 Resistências 470Ω
o 1 C.I. ULN2803A
o 1 Socket 18 pinos
o 1 Single-in-Line 10 pinos
o 8 Single-in Line 3 pinos
Trabalho elaborado por:
Ricardo Nº18
Joel Nº21
Vyacheslav Kolesnyk Nº23