Pages: [1]   Go Down
Author Topic: DS18B20 problem  (Read 681 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buenas comañeros despues e tener el proyecto casi terminado me encuentro con que la sonda DS18B20 me da una temperatura -127 cuando esta conectada la sonda .trabajo con la version 0023 con sus respectivas librerias ,onwire y dallastemperature.
que creeis que esta pasamdome?
Quote
#include <OneWire.h>
#include <LiquidCrystal.h>
#include <DallasTemperature.h>
#include <Wire.h>   //
#define DS1307_I2C_ADDRESS 0x68
LiquidCrystal lcd(26, 27, 45, 47, 49, 51);
#define ONE_WIRE_BUS 41//temperatura, pin de entrada
OneWire oneWire(ONE_WIRE_BUS);//temperatura
DallasTemperature sensores(&oneWire);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
int PinVentilador =29;//rele 1-ventilador  disipador
int PinCentilador =30;//rele 2-ventilador  disipador
int PinCalentador = 34;
int EstadoCentil=0;
int EstadoVentil=0;
int EstadoCalent=0;
int Retraso=5000;
}
void setup()
{ pinMode(PinCentilador, OUTPUT);
  pinMode(PinVentilador, OUTPUT);
 pinMode(PinCalentador, OUTPUT);
}
void loop() {  
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Obtenemos la hora
sensores.requestTemperatures();
Temperatura(minute, hour);
lcd.noBlink();
if (minute < 2)  Retraso=1000;
else if (hour < 5) Retraso=10000;
else Retraso=10000;
}

void Temperatura(int minutos, int horas)
{
  float T1;
  float T2;
  float T3;
  sensores.requestTemperatures();
  T1=sensores.getTempCByIndex(0)+1;
  T2=sensores.getTempCByIndex(1)+1;
  T3=sensores.getTempCByIndex(2)+1;  
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TEMPERATURA");
   lcd.print("   ");
  if (hour < 10) lcd.print("0");
  lcd.print(hour, DEC);
  lcd.print(":");  
  if (minute < 10) lcd.print("0");
  lcd.print(minute, DEC);
  
  lcd.setCursor(0, 1);
  lcd.print("TACEN-T1:");
  lcd.print(T1);
  lcd.print((char)223);
  lcd.setCursor(0, 2);
  lcd.print("TACEN-T2:");
  lcd.print(T2);
  lcd.print((char)223);
  lcd.setCursor(0, 3);
  lcd.print("WATER-T3:");
  lcd.print(T3);
  lcd.print((char)223);
  if (T2 < 25) EstadoCalent=1;
  if (T2 > 26) EstadoCalent=0;
  if (T1 < 25) EstadoVentil=0;
  if (T1 > 30) EstadoVentil=1;  
  if (T3 < 25) EstadoCentil=0;
  if (T3 > 30) EstadoCentil=1;
  
  lcd.setCursor(16, 3);
    if(EstadoCalent==1 ){
    digitalWrite(PinCalentador, LOW);
    lcd.write(6);
  }
  else
  {
    digitalWrite(PinCalentador, HIGH);
    lcd.write(6);
  }
  lcd.setCursor(16, 1);
  if(EstadoVentil==1 )//decimos al rele el encendido y apagado//
  {
    digitalWrite(PinVentilador, LOW);
    lcd.write(6);lcd.write(5);lcd.write(5);
  }
  else
  {
    digitalWrite(PinVentilador, HIGH);
    lcd.write(6);
  }
  lcd.setCursor(16, 2);
   if(EstadoCentil==1 )//decimos al rele el encendido y apagado//
  {
    digitalWrite(PinCentilador, LOW);
    lcd.write(6);lcd.write(5);lcd.write(5);
  }
  else
  {
    digitalWrite(PinCentilador, HIGH);
     lcd.write(6);
    
  }
  delay(Retraso);
}


ademas compañeros  al abrir el serial monitor despues de copilar el sketch "simple" me dice :

temperature for the device 1 ( index 0) is: -127.00
requesting temperature .......done

* may led v.o2.zip (5.07 KB - downloaded 4 times.)
« Last Edit: June 05, 2012, 01:49:10 am by medina » Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

El resultado que te está devolviendo no es una temperatura. La librería OneWire te está diciendo que no encuentra el sensor (#define DEVICE_DISCONNECTED -127). ¿Has puesto la resistencia de pull-up en la línea?

Prueba primero con un solo sensor y el ejemplo simple de la librería, y cuando te funcione, pasa a tu código. Por cierto, envías dos veces el comando sensores.requestTemperatures(), una en el loop() y otra en la función Temperatura().

Revisa el montaje y si quieres que te echemos una mano, pon un esquema de las conexiones y/o alguna foto.
Logged

Pages: [1]   Go Up
Jump to: