Olá boa tarte amigos estou com o seguinte pau nesse controlador ele não aciona o rele no momento determinado.
Ele deve disparar, o rele quando, a temp for maior que 27°, para acionar, o refrigerador. Como faço isso funcionar?
Meu Arduíno e um mega 2560
antes de passar o código gostaria de dizer que.
ele nao da os 5v nos pinos de saida
#include <LiquidCrystal.h>
#include <Limits.h>
#include <OneWire.h>
#include <DallasTemperature.h>
int chiller = 23;
int aquecedor = 24;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Cria um objeto LCD e atribui os pinos
// Conectar o pino central dos sensores ao pino 10 do Arduino
#define ONE_WIRE_BUS 3
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { 0x28, 0xFF, 0xBC, 0x19, 0x63, 0x14, 0x03, 0xF9 };
void setup(void)
{
pinMode(chiller, OUTPUT);
pinMode(aquecedor, OUTPUT);
// start serial port
lcd.begin(16, 2);
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?)
sensors.setResolution(insideThermometer, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00)
if (tempC > 27) // Indica condição para acionamento do cooler
{
lcd.setCursor(0, 1); // Define a coluna 0 e linha 1 do LCD onde será impresso a string
lcd.write("chiller on"); // Imprime no LCD
digitalWrite(chiller, HIGH); // Quando condição verdadeira, liga o cooler
}
else
{
lcd.setCursor(0, 1);
lcd.write("aquecedor on");
digitalWrite(aquecedor, HIGH);
}
{
lcd.setCursor(0, 0);
lcd.print(tempC);
}
}
void loop(void)
{
delay(1000);
sensors.requestTemperatures();
lcd.print("Temp aqua ");
printTemperature(insideThermometer);
lcd.print(" C: ");
}
Dês de já agradeço a ajuda dos mais intelectuais.
Tags:
Oi Jean, boa tadre.
Voce pose disponibilizar a biblioteca "onewire.h"?
Eu quero testar o seu sketch com a sua biblioteca.
Rui
Oi Jean,
este sketch foi escrito por voce ou voce copiou de algum site?
Se for de um site, por favor post o link.
Rui
copiei a parte da temp deste site
http://www.arduinoecia.com.br/2013/04/sensor-de-temperatura-ds18b20...
e o acionador do rele peguei deste
http://www.facacomarduino.info/projeto-10-controle-de-temperatura-c...
a biblioteca ta no primeiro site
Oi Jean, bom dia.
Fiz uma revisão no seu código e no código do site que voce indicou, e não encontrei como ele faz a leitura e conversão da temperatura.
Então pequei o exemplo que existe no onewire.h e o modifiquei para sua necessidade.
A grande vantagem deste código do exemplo, é que ao usar um único sensor, voce não precisa colocar o valor da ROM "calibrador".
Eu deixei as linhas Serial.begin(9600); e as linhas Serial.print, caso voce queira ver o resultado das leituras na serial.
Teste e depois nos conte o resultado.
Rui
um amigo do face mandou eu add esse codigo ao meu mas nao deu
#define pin_aquecedor 10
#define pin_resfriador 11
#define temperatura_alta 27
#define temperatura_baixa 10
unsigned long tempo = -60000; //para executar medida da primeira vez e no aguardar o primeiro clico de tempo
float tempC = 0;
void setup() {
Serial.begin(9600); //para ve dados pela porta serial
pinMode( pin_aquecedor, OUTPUT );
digitalWrite( pin_aquecedor, LOW );
pinMode( pin_resfriador, OUTPUT );
digitalWrite( pin_resfriador, LOW );
}
void loop() {
if ( millis() - tempo >= 60000 ) { //a verificaço feita a cada minuto (60 segundos)
tempo = millis();
//leia a temperatura aqui
//mostre a temperatura no display
if ( tempC >= temperatura_alta ) {
digitalWrite( pin_resfriador, HIGH ); //liga resfriador
//descreva no display que foi ligado o resfriador
} else if ( tempC <= temperatura_baixa ) {
digitalWrite( pin_aquecedor, HIGH ); //liga aquecedor
//descreva no display que foi ligado o aquecedor
} else {
//Se a temperatura no estiver nem alta nem baixa desliga tanto o aquecedor quanto o resfriador
digitalWrite( pin_aquecedor, LOW );
digitalWrite( pin_resfriador, LOW );
//pode ligar o display ou escrever que esta em reposuto
}
}
Serial.print( "Temperatura " );
Serial.println( tempC );
delay(1000); // espera um segundo, apenas para ter menos dados enviados pela porta serial
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por