error de lectura analogica al conectar dos lm35

Hola, estoy haciendo un montaje para controlar la temperatura de dos disipadores, que cuando pasen de ciertos grados desactive un rele,
el montaje es simple, dos lm35 ( no necesito precision ) los tengo conectado al A1 y al A2, el primero me da la temperatura correcta, pero el segundo la temperatura oscila, es decir me da 27, -13, 40, 23, y asi sin siempre.

que he hecho, el reemplazado el lm35 por otro nuevo, Sigue igual.
he cambiado el lm35 que funciona por el que no funciona, y la salida A2, sigue igual.
he cambiado todo el cableado por si hubiera interferencia, sigue igual.
he montado en otra placa los lm35 y separados, sigue igual.
he puesto que se conecte por A3, A4, A5,A6,A7, y por todas sigue fallando.

a alguien se le ocurre que puede estar fallando???

os dejo fotos de la pantalla lcd donde muestro las temperaturas, el arduino que utilizo y la conexion del lm35.
IMG-20160615-WA0003.jpg
IMG-20160615-WA0000.jpg
IMG-20160615-WA0001.jpg

IMG-20160615-WA0002.jpg

Hola.

Es importante que agregues el Código, estoy casi seguro que el problema está allí y no en las fotos.

Las imágenes no se ven, por favor, lee las normas del foro, edita tu mensaje y vuelve a pegar las imágenes como se recomienda.

:wink:

Alternativas :

  1. Has puesto un potenciometro entre 0 y 5V y con el cursor mides por A0...A5?
  2. Has medido con un multímetro la salida del LM35?

Cuando haces pruebas y todas fallan, ve a la fuente del problema.

Visionario:
Hola.

Es importante que agregues el Código, estoy casi seguro que el problema está allí y no en las fotos.

Gracias visionario, he limpiado el codigo con solo la pantalla y los sensores y solucionado. ahora me queda averiguar que es lo que esta metiendo la pata. jejejej

Gracias.

Hector_A:
Las imágenes no se ven, por favor, lee las normas del foro, edita tu mensaje y vuelve a pegar las imágenes como se recomienda.

:wink:

Hector, las fotos se ven, lo que pasa que las tienes que descargar. para el proximo post las intento subir a algun servidor y que se vean sin tener que descargar.
Gracias

chambri:
Gracias visionario, he limpiado el codigo con solo la pantalla y los sensores y solucionado. ahora me queda averiguar que es lo que esta metiendo la pata. jejejej

Gracias.

Me refería a que adjuntes el código en este hilo, de esa manera podemos revisarlo y ayudarte a resolver el problema.

Muestra el código.
Saludos

surbyte:
Alternativas :

  1. Has puesto un potenciometro entre 0 y 5V y con el cursor mides por A0…A5?
  2. Has medido con un multímetro la salida del LM35?

Cuando haces pruebas y todas fallan, ve a la fuente del problema.

La primera pregunta no la entiendo, pero designe la entrada que designe los datos oscilan
la segunda pregunta si los sensores funcionan bien, ya que los cambios y funcionan, en realidad no los he medido, ya que verifique que funcionaba.

Gracias por tu ayuda, pero el problema estaba en el codigo, ahora tengo que averiguar donde jejejejejj
:slight_smile:

surbyte:
Alternativas :

  1. Has puesto un potenciometro entre 0 y 5V y con el cursor mides por A0…A5?
  2. Has medido con un multímetro la salida del LM35?

Cuando haces pruebas y todas fallan, ve a la fuente del problema.

Aquí Surbyte quiere decir que si no te funciona de ninguna manera, debes probar forzando la señal con un potenciómetro para comprobar el hardware de la placa, y por otro lado medir el valor que te da el lm35 para saber que voltaje te da y así saber que debería ver tu placa.

Es bueno que lo hayas arreglado sin saber como jjjj ahora queremos saber dónde (de tu codigo) estaba el problema.

Un saludo

chambri:
Hector, las fotos se ven, lo que pasa que las tienes que descargar. para el proximo post las intento subir a algun servidor y que se vean sin tener que descargar.
Gracias

Las fotos pueden estar bien pero no estan posteadas según las normas del foro.
Las fotos deben verse sin tener que descargarlas.
Los que resopondemos solemos ser un grupo de 20 usuarios, que tenemos la pc llenas de fotos (no te enojes) basura de otros.
Aprovechando que tienes un link ya en cada foto adjunta has esto

Enlace_arduino_cc.png
Luego vas al icono de imagenes (junto al eslabón a su izq) y click ahi, pones en la URL el enlace usando CTRL+V y si quieres pones una etiqueta o no. Luego INSERT y es lo mismo que yo acabo de hacer. Y no busqué ningún sitio de fotos.

Visionario:
Me refería a que adjuntes el código en este hilo, de esa manera podemos revisarlo y ayudarte a resolver el problema.

Muestra el código.
Saludos

No te preocupes, pondré la solución si lo encuentro si no pondré el código para que me ayudéis :wink:

surbyte:
Las fotos pueden estar bien pero no estan posteadas según las normas del foro.
Las fotos deben verse sin tener que descargarlas.
Los que resopondemos solemos ser un grupo de 20 usuarios, que tenemos la pc llenas de fotos (no te enojes) basura de otros.
Aprovechando que tienes un link ya en cada foto adjunta has esto

Enlace_arduino_cc.png
Luego vas al icono de imagenes (junto al eslabón a su izq) y click ahi, pones en la URL el enlace usando CTRL+V y si quieres pones una etiqueta o no. Luego INSERT y es lo mismo que yo acabo de hacer. Y no busqué ningún sitio de fotos.

Gracias y no volverá a pasar, no me di cuenta de que Héctor era moderador, y si he ofendido o dañado a alguien pido disculpas y de nuevo mil gracias a todos. :blush:

Bueno aquí estoy de nuevo.
Ya casi se el porque, pero no se resolverlo.

///////// librerias reloj ///////////////////////////
  #include <LiquidCrystal_I2C.h> // LIBRERIA LCD
  #include <Wire.h>  // LIBRERIA COMUNICACION
  #include "RTClib.h" // LIBRERIA RELOJ
  LiquidCrystal_I2C lcd(0x27,16,2); // PARAMETROS DEL LCD
  RTC_DS1307 RTC; // LIBRERIA RELOJ
///////////////////// ICONO DE LUZ PARA LA PANTALLA /////////
// definicion del nuevo caracter
byte Luz_apagada[8] = {
    B01110,
    B10001,
    B10001,
    B10001,
    B01010,
    B01110,
    B01010,
    B00100
};
byte Luz_encendida[8] = {
    B01110,
    B11111,
    B11111,
    B11111,
    B01110,
    B01010,
    B01110,
    B00100
};
int tempC0;
int reading0;
int tempC1;
int reading1;
int tempPin0 = A3;
int tempPin1 = A2;
int pulsadormenuPin = A0;
int pulsadormenu;
/////////// funcion para poner el 0 en el reloj//////////
void print2digits(int number) {
  if (number >= 0 && number < 10) {
    lcd.print('0');
  }
    lcd.print(number);
}

void setup () {
  Wire.begin(); // Inicia el puerto I2C
  RTC.begin(); // Inicia la comunicación con el RTC
  //RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
  lcd.init(); //// INIALIZA EL LCD
  lcd.backlight(); /// enciende la luz del lcd
  lcd.print("PandoraSoft.com");     
  delay(3000);
 // analogReference(INTERNAL); /// para tomar de referencia el voltaje interno (otra forma de obtener temperatura)
  lcd.createChar(0,Luz_apagada); /// icono de luz apagada
  lcd.createChar(1,Luz_encendida); /// icono de luz encendida
}

void loop(){
     //pulsadormenu = analogRead(pulsadormenuPin); /// meto el valor de A0

     lcd.clear(); // LIMPIO LCD
     reading0 = analogRead(tempPin0);
     //tempC0 = reading0 / 9.31;   // 1.10 * 100/1023 = 1/9.3 /// este se utiliza si es por referencia (otra forma de obtener temperatura)
     tempC0 = (5 * reading0 * 100)/1024;
     reading1 = analogRead(tempPin1);
     //tempC1 = reading1 / 9.31;   // 1.10 * 100/1023 = 1/9.3 /// este se utiliza si es por referencia (otra forma de obtener temperatura)
     tempC1 = (5 * reading1 * 100)/1024;
 DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
  lcd.setCursor(0,0);
  lcd.print("P1:");
  print2digits(now.hour()); /// mostrar hora
  lcd.print(":");
  print2digits(now.minute());/// mostrar minutos
  lcd.print(":");
  print2digits(now.second());/// mostrar segundos
  lcd.print(" ");
  lcd.write(0); 
  lcd.print("OFF");
  lcd.setCursor(0,1);
  lcd.print("T1: ");
  //lcd.print(pulsadormenu); /// para ver si los botones tienen los valores correctos
  lcd.print(tempC0);
  lcd.print(" T2: ");
  lcd.print(tempC0);
delay(1000); // La información se actualiza cada 1 seg.  

}

tengo montado un sitema de pulsadores porque quiero hacer un menu para modificar configuraciones en el programa, como configurar tiempo, etc…

paso imagenes de los pulsadores como estan configurados

Me he dado cuenta de que si activo este codigo

 //pulsadormenu = analogRead(pulsadormenuPin); /// meto el valor de A0

el segundo sensor se vuelve loco, es mas el sensor lo ponga donde lo ponga de A1…A7 no funciona oscila.
Incluso si desactivo //pulsadormenu = analogRead(pulsadormenuPin); /// meto el valor de A0, entonces si pulso algun boton las temperaturas funcionan, pero pasan a negativo

Cual es el segundo LEFT o UP?

Revisa que ese arreglo de Resistencias este bien cableado y no te esté generando un consumo excesivo.

Es el mismo que este. Pensé que la ultima resistencia estaba mal.
Verifica las tensiones cuando presionas cada pulsador. ALgo ocurre con ese arreglo.

Ya estoy aquí de nuevo, gracias surbyte, he tomado las medidas tanto de voltage como el numero que me da en la entrada y segun mi esquema con las resistencias que tengo montada, que solo tiene dos diferentes al que has puesto tu, da tensiones y valores muy similares.
BOTONES-ARDUINO.jpg
al parecer esta todo bien, ademas lo he probado con una fuente de alimentacion externa de 12v, en vez de conectarlo al pc por usb, y todas las tensiones son iguales.
botones.jpg
de momento no encuentro la solucion el segundo sensor lm35 sigue oscilando.

entonces? Qué ocurre que tus LM35 no reportan bien?
Repite por favor que pulsador genera el problema.. que no lo he leído o entendido aún.

Bueno sigo igual y sin saber que pasa...
Despues de vuestros consejos, he vuelto ha empezar de nuevo y lo he montado todo otravez, por si algun cable no estubiera bien, tambien he probado 3 arduinos nuevos y sigue igual.

Surbyte, la botonera la conecto a A0(tambien he probado a otras entradas A1,A2 etc..), el esquema es el que tu pusiste, pero los valores de las resistencias son los que yo he puesto en el mio.

Al principio tube una resistencia mal, por ser de otro valor, pero ya lo solucione y esto sigue igual.

el caso es que cuando pongo en el codigo

pulsadormenu = analogRead(pulsadormenuPin); /// meto el valor de A0

uno de los sensores lm35, no da el valor correcto y oscila.

una vez que quito de codigo la linea de pulsadormenu, los dos sensores funcionan correctamente.
Si fuera por corriente, al ponerlo por alimentacion externa se deberia de solucionar ¿no?, pues sigue igual.

Alguna otra sugerencia?

Bueno, haciendo pruebas me he dado cuenta, que cuando quito el cable de A0, la temperatura vuelve a estar bien y si lo vuelvo a poner otravez oscila.

os dejo un video con la activacion y desactivacion de la linea de codigo que hace que oscile la temperatura.

Tambien me he dado cuenta de que si meto corriente + por A0, la temperatura del sensor oscila, pero si lo pongo a - vuelve a estar todo correcto.

Es decir si pongo un pulsador el cual cuando pulso da + y cuando esta despulsado va con una resistencia a -, la temperatura oscila cuando se pulsa.

Pienso entonces que el problema no está en el sensor, está en la electrónica asociada a tus pulsadores.

  1. Dices que oscila cuando no está pulsado ningún botón

  2. Cuando pulsas el botón funciona bien pero en valores negativos

Yo haría lo siguiente, invertir todo el circuito para enviar pulsos positivos en lugar de negativos, es decir todas la serie de resistencias que en este momento están como pull up pasarlas a pull Down, técnicamente eso eliminaría la oscilación de ruido que tienes en esa línea analógica, lo haría y probara.

La otra solución es basada en la siguiente pregunta... ¿Por qué usar el método analógico de pulsadores si dispones de suficientes pines disponibles para hacer pulsadores digitales?. Eso sería una solución adecuada y segura.

Saludos

Gracias visionario, la verdad es que del sensor no es desde el principio ya que lo he probado con varios y en diferentes entradas y siempre era igual.

El cambiar de pull down a pull up ya lo hice, las mediciones bien pero si pulso otra vez igual.

Cuando lo cambio, se produce el efecto contrario.

En pull up, lo que hace es que una de las temperatura oscila, si pulsamos las temperaturas las muestra bien, y en pull down, las temperaturas las muestra bien, pero si pulsamos una de las temperatura oscila.

Lo lo he puesto por entradas digitales porque despues voy a poner un menu para configurar parametros y la libreria utiliza la entrada A0 para controlar los botones y es como me recomiendan que lo monte.

Otra cosa, si poniendo el pull down la temperaturas me las muestra bien, pero si pulso para entrar en el menu, me puede ocurrir que entre en la sentencia que corta un rele por superar la temperatura programada ( esto no esta implementado en el codigo, por que todavia no he llegado a esta parte :slight_smile: )

Sigo buscando una solución o el porque ocurre esto, y por que ocurre solo en un sensor y no en los dos.