ds1820 problem

jorgepl este es el esquema por el que lo he montado siempre

Uploaded with ImageShack.us
y este es el montaje

Uploaded with ImageShack.us
no se que ha pasado con el otro post no puedo postear ,perdonad las molestias
pero me sigue dando lo mismo -127 .............

Por lo que creo intuir en la foto, tienes conectado el bus onewire al pin 7-8, y en el código pones el 41, revisa eso.

#define ONE_WIRE_BUS 41//temperatura, pin de entrada
OneWire oneWire(ONE_WIRE_BUS);//temperatura

Sino es ese el problema...¿Has probado las otras modificaciones que te comentaba en el otro post? Si tienes varios sensores iguales, prueba con cada uno de ellos individualmente (desconecta todo lo demás) para asegurarte de que funcionan correctamente.

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().

esa foto esta tomada con el sketch simple y el pin 7 en vez del 2 pero sigue igual

¿Y en el código? ¿Que pin pones para el onewire? ¿Con un sensor montado o con varios?

el 7 con un sensor , jorge te puedo decir que no entiendo lo que ocurre despues de montar varios y lo simple que es ademas de la informacion del montaje que hay en san google

Si con el código del ejemplo no te funciona, debe ser algo hardware. Perdona que te insista pero...

¿Has comprobado las conexiones? Si utilizas la resistencia en el conector de la placa puede que no haga bien el contacto.

¿Puedes poner una foto algo más enfocada? No termino de ver que en esa foto estés utilizando el pin 7 (ahora diría que es el 6, pero mi vista no es muy fina 8) ), y no se ven las conexiones del sensor.

¿Has probado a desmontarlo todo y volverlo a montar?

¿Has cambiado de sensor y probado con otro?

Supongo que también habrás comprobado y utilizado las últimas versiones de las librerías:
http://milesburton.com/Main_Page?title=Dallas_Temperature_Control_Library

Prueba también el ejemplo que hay en el playground sobre OneWire y di que resultados te da
http://arduino.cc/playground/Learning/OneWire

jorgepl:
Si con el código del ejemplo no te funciona, debe ser algo hardware. Perdona que te insista pero...

¿Has comprobado las conexiones? Si utilizas la resistencia en el conector de la placa puede que no haga bien el contacto.

¿Puedes poner una foto algo más enfocada? No termino de ver que en esa foto estés utilizando el pin 7 (ahora diría que es el 6, pero mi vista no es muy fina 8) ), y no se ven las conexiones del sensor.

¿Has probado a desmontarlo todo y volverlo a montar?

¿Has cambiado de sensor y probado con otro?

Supongo que también habrás comprobado y utilizado las últimas versiones de las librerías:
MilesBurton.com

Prueba también el ejemplo que hay en el playground sobre OneWire y di que resultados te da
Arduino Playground - OneWire

para nada jorge gracias por tu interes
-el echo del harware tengo dos megas y los dos iguales
-de mil formas
-

Uploaded with ImageShack.us
-mil veces lo he desmontado
-con 6 ds1820
-en el example de payground en el seral monitor me aparece " No more addresses"
y en el segundo con lcd "Device is not a DS18S20 family device"

Una vez has comprobado lo que te he dicho, lo cierto es que no se me ocurre que está pasando, salvo que todos los sensores estén mal.

Al principio dijiste que utilizas la versión 0023. Yo pasaría a la 1.0 y actualizaría las librerías (para la del sensor recomiendan una OneWire2.h si no recuerdo mal).

Prueba con el siguiente tuto a ver si funciona

Hola!! como ha dicho miniduino en mi blog tienes un post sobre los ds18b20 que puedes probar, aunque veo que tu lo tienes prácticamente igual que yo, a mi en algunas ocasiones y aún no se porque me ocurre me aparece lo de -127.

Yo lo que hago es conectar 5v de Arduino al pin de alimentación del ds18b20 y gnd al pin gnd del ds18b20 y así para cada sensor, la resistencia de 4k7 igual que tienes tu, prueba esta configuración y coméntanos como te va. A mi así me funciona perfecto.

Te dejo el esquema para que lo veas mejor:

Hola
He mirado un poco por encima el código y me parece que lo que falta es iniciarlizar los sensores, con:

sensores.begin();

en el setup debería servirte.

Regata:
Hola!! como ha dicho miniduino en mi blog tienes un post sobre los ds18b20 que puedes probar, aunque veo que tu lo tienes prácticamente igual que yo, a mi en algunas ocasiones y aún no se porque me ocurre me aparece lo de -127.

Yo lo que hago es conectar 5v de Arduino al pin de alimentación del ds18b20 y gnd al pin gnd del ds18b20 y así para cada sensor, la resistencia de 4k7 igual que tienes tu, prueba esta configuración y coméntanos como te va. A mi así me funciona perfecto.

pues la verdad las sondas estaban mal compre unas nuevas y con tu ejemplo van de perlas agradezco toda la ayuda vuestra ante una cosa tan simple que he hecho varias veces ,dar las gracia a jorgepl en especial por su interes y a todos los que habeis puesto vuestro grano en la solucion del problema .gracia a todos

jorgepl:
Una vez has comprobado lo que te he dicho, lo cierto es que no se me ocurre que está pasando, salvo que todos los sensores estén mal.

Al principio dijiste que utilizas la versión 0023. Yo pasaría a la 1.0 y actualizaría las librerías (para la del sensor recomiendan una OneWire2.h si no recuerdo mal).

voy a restructurar el codigo para la version 1.0

Resumiendo: Las sondas (TODAS, LAS 6!!!!!!) estaban mal. :roll_eyes: :disappointed_relieved: :fearful: :astonished: =( =(

Bueno, la cuestión es que ya te funciona. :slight_smile:

¿Has probado todos los ejemplos de los que hemos hablado? Estaría bien que los comprobases para ver que no estabamos haciendo alguna burrada.

Ya contarás

jorgepl:
Resumiendo: Las sondas (TODAS, LAS 6!!!!!!) estaban mal. :roll_eyes: :disappointed_relieved: :fearful: :astonished: =( =(

Bueno, la cuestión es que ya te funciona. :slight_smile:

¿Has probado todos los ejemplos de los que hemos hablado? Estaría bien que los comprobases para ver que no estabamos haciendo alguna burrada.

Ya contarás

si he provado todos los ejemplos ...........y para cortarme la cabeza jorge resulta que me comi el color rojo de las resistencia (es decir 4,7 ohms) las cambie y resuelto ,ahora me encuentro en que tengo las tres sondas pero dos de ellas me dan la misma temperatura este es el frag del codigo

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("AIR-1:");
lcd.print(T1);
lcd.print((char)223);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("AIR-2:");
lcd.print(T2);
lcd.print((char)223);
lcd.print(" ");

lcd.setCursor(0,3);
lcd.print("WATER:");
lcd.print(T3);
lcd.print((char)223);
lcd.print(" ");
if (T3 < 25) EstadoCalent=0;
if (T3 > 26) EstadoCalent=1;
if (T1 < 25) EstadoVentil=0;
if (T1 > 26) EstadoVentil=1;
if (T2 < 25) EstadoCentil=0;
if (T2 > 26) EstadoCentil=1;
lcd.setCursor(16, 3);
if(EstadoCalent==1 ){
digitalWrite(PinCalentador, LOW);
lcd.write(6);lcd.write(5);lcd.write(5);
}
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(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);
}

delay(Retraso);
}

Supongo que en la función Temperatura() ya habrás comprobado a enviar por puerto serie T1, T2 y T3 para ver que estás leyendo del onewire y es ahí donde ves que los valores son iguales, ¿no? Si es así el código que has puesto no dice nada, porque el problema está antes.

Por cierto, ¿qué dos valores son iguales? ¿deberían ser distintos? ¿son siempre los mismos? ¿Son valores lógicos o fuera de rango?

Por otro lado, supongo que en el setup habrás puesto la inicialización que te indicaba Humphrey, ¿verdad?

Humphrey:
Hola
He mirado un poco por encima el código y me parece que lo que falta es iniciarlizar los sensores, con:

sensores.begin();

en el setup debería servirte.

jorge esta en el setup
tengo que decirte que
sin conectar la sonda t2 la temperatura en pantalla es la misma para t1(conectada) y t2 ( desconectada ) y la t3(conectada) marca su temperatura ,en cuanto conecto la sonda t2 a sus hermanas se pone como en corto y marca todas 1º mando en zip el codigo .y gracias por tu interes
estan juntadas las data (amarillo)junto al positivo+r4.7k a vcc y (rojo y negro) al gnd( son ds1820 enfundados )vamos cuando esta dos sondas va de fabula tres como que no :zipper_mouth_face:

medina codec.zip (5.61 KB)

medina:
jorge esta en el setup
tengo que decirte que
sin conectar la sonda t2 la temperatura en pantalla es la misma para t1(conectada) y t2 ( desconectada ) y la t3(conectada) marca su temperatura ,en cuanto conecto la sonda t2 a sus hermanas se pone como en corto y marca todas 1º mando en zip el codigo .y gracias por tu interes
estan juntadas las data (amarillo)junto al positivo+r4.7k a vcc y (rojo y negro) al gnd( son ds1820 enfundados )vamos cuando esta dos sondas va de fabula tres como que no :zipper_mouth_face:

No entiendo muy bien que quieres decir

Debes ir probando las cosas poco a poco, para asegurarte de que vas haciendo las cosas bien y, si tienes un fallo, poder localizarlo fácilmente. Para saber si es un problema de hardware o del 1-wire, configura el puerto serie del arduino para poder utilizar el monitor serie (serial.begin() en el setup) y en la función temperatura manda por puerto serie las lecturas de las sondas cuando las hagas:

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;
  serial.print("T1: ");
  serial.println(T1,2); 
  serial.print("T2: ");
  serial.println(T2,2); 
  serial.print("T3: ");
  serial.println(T3,2);

Así, verás en el monitor serie los valores que estás leyendo de cada sonda.

Con este código empieza a hacer pruebas de conexión de las sondas una a una, desconexión de sondas una a una,...Así podrás ver si es una en concreto la que falla o es siempre la última sonda que conectas o ....

Si es una sonda la que falla siempre, prueba a cambiarla. Si tienes más sondas, prueba también con ellas.

Si ves que las lecturas del monitor serie son correctas, entonces el problema estará en tu código y entonces le echaremos un vistazo a ver que pasa.

jorge muchisimas gracias por tu ayuda y por el seguimiento de mi problema desde el principio ,por el tema del serial port no pude verlo ya que mi lcd no es serial ,despues de cambiar serial x lcd ,aun seguia sin ver nada por el monitor serial,de todas forma con tu codigo he conseguido que se vean las tres temperaturas diferentes , al final eran dos cosas una sonda mala que reclamare al chino (hay que tener cuidado con este material barato pero quebradero )y el codigo incompleto .
un enorme thank you para ti jorge
atentamente miguel angél