Olá pessoal, quero compartilhar com vcs um projeto de termostato ajustavel via potenciometro para controlar a temperatura de ambientes diversos.

  esse projeto foi baseado num skech do cookbook onde era necessário configurar a temperatura de referencia via pc.  O funcionamento é  seguinte:

 ao configurar a temperatura pelo potenciometro, em 27ºc por exemplo, toda vez que a temperatura lida pelo LM35 chegar a 27ºc ou menos, a saida 9 será habilitada e o pino 13 acenderá para mostrar o estado do aquecedor, aquecedor este que deve ser ligado através de um transistor ao pino 9.

 sketch abaixo.

/*termostato ajustavel via potenciometro utilizando LM35, as saidas
* 9 e 13 são habilitadas quando a leitura feita pelo sensor é inferior
* ou igual a temperatura setada pelo potenciometro. o pino 13 deve
* ser ligado a um led para monitorar o estado do aquecedor e o pino 9
* deve ser ligado a um aquecedor através de um transistor.
*/

#include <LiquidCrystal.h>
const int numRows = 2;
const int numCols = 16;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int inPin = 0; // LM35 conectado no pino 0
const int potPin = 1; // potenciometro no pino 1
const int aquecePin = 9; // aquecedor ligado ao pino 9
const int ledPin = 13; // saida para aquecedor

void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(aquecePin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
int value = analogRead(inPin); //valor lido no LM35
long celsius = (value * 500L) /1024; // OBS; caso precise calibrar o LM35 alterar o valor entre parenteses
lcd.setCursor(0,0);
Serial.print(celsius);
lcd.print(celsius);
Serial.print(" graus Celsius: ");
lcd.print((char)223);
lcd.print("C");

/* OBS nas linhas abaixo está escrito "celsius1" porque trata-se do
* valor regulado no potenciometro, caso seja retirado o numero 1
* a leitura mostrada na segunda linha do display será apenas repetição
* da leitura obtida pelo LM35.
*/

value = analogRead(potPin); //valor regulado no potenciometro
long celsius1 = (value * 500L) /1024; // 10 mV por graus C.
Serial.print(celsius1);
lcd.setCursor(0,1);
lcd.print(celsius1);
Serial.print(" graus Celsius: ");
lcd.print((char)223);
lcd.print("C");

if(celsius <= celsius1) //se celsius menor ou igual a celsius1 ligar pinos 13 e 9
{
lcd.setCursor(5,1);
digitalWrite(aquecePin, HIGH); // aquecedor no pino 9
digitalWrite(ledPin, HIGH); // led no pino 13
Serial.println("pino on");
lcd.print("On ");
}
else
{
lcd.setCursor(5,1);
digitalWrite(aquecePin, LOW); // aquecedor no pino 9
digitalWrite(ledPin, LOW); // led no pino 13
Serial.println("pino off");
lcd.print("Off");
}
delay(1000);
}

 pessoal, espero ter alguma serventia para alguem, resolvi postar aqui pq procurei por toda a rede e não encontrei nada que pudesse me atender, apenas termometros que faziam apenas leitura.

agradeço aos manos marcelo mosc e marcos daniel pela ajuda com os caracters estranhos que apareciam antes.

abraço a todos.

Exibições: 11998

Responder esta

Respostas a este tópico

 vlw edson pela moral, no link a seguir eu encontrei umas páginas falando sobre LCD 16x4, parece que em todas é usado I2C, dá uma olhada com calma, link por link. o cara que tava procurando parece ter resolvido o problema dele, poerque não perguntou mais a respeito.

abraço.

Olá Erick. Trabalho com chocadeiras e gostaria de saber se há como colocarmos uma resistência para que, passados de 37ºC o arduino desligue e baixando de 37ºC o arduino aumente voltagem para aquecer melhor. Abraços!

Matheus,

Da pra fazer sim, com algumas adaptações no código do Erick. No caso da chocadeira, vc pode controlar inclusive outros parâmetros, como a umidade relativa. Da para colocar um LM35 e uma resistência (ou lampada incandescente) e um DHT11 ou DHT22 com um dispensador de água.

Eu tenho a intenção se fazer uma chocadeira caseira automatizada tb. Sou Zootecnista e isso me interessa muito. hehehehe

Olá Leonardo.
Eu tenho 3 chocadeiras aqui, feitas por mim.
Uma de madeira e duas de isopor.

Com o termostato (ou dimmer/timer segundo conversas ontem) eu consigo regular a tensão para uma resistência de niquel cromo.

Queria que o arduino pudesse fazer isso e outras coisas, como você mesmo disse.
Pretendo colocar um ethernet shield para controlar e verificar o andamento da chocadeira via mobile ou pc!

Com o ethernet shield da até pra fazer a chocadeira twittar quando os pintinhos/aves começarem a nascer.

Te adicionei ai como amigo. Vamos conversando e te ajudo no que precisar e eu souber.

Erick,

Acho que da pra usar um if else para resolver o problema da frequência com que a resistência é ligada.

Tipo

if(celsius <= celsius1) //se celsius menor ou igual a celsius1 ligar pinos 13 e 9
{
lcd.setCursor(5,1);
digitalWrite(aquecePin, HIGH); // aquecedor no pino 9
digitalWrite(ledPin, HIGH); // led no pino 13
Serial.println("pino on");
lcd.print("On ");
}

if else (celsius >= (celsius1+1) { 

lcd.setCursor(5,1);
digitalWrite(aquecePin, LOW); // aquecedor no pino 9
digitalWrite(ledPin, LOW); // led no pino 13
Serial.println("pino off");
lcd.print("Off");

}

else {}

Se vc setar a temperatura para 25ºC ele ligaria a resistência nos 25 e desligaria nos 26 e voltaria a ligar quando a água chegasse nos 25 novamente.

Acho que pode ser algo assim. Talvez tenha só que ver a programação correta.

 fala sergio, gostaria muito de montar este circuito ,para usar em uma chocadeira teria como vc min mandar o desenho das ligações do circuito, o meu email genildoaraujocrz@gmail.com

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço