Go Down

Topic: Problema con lectura de sensores (urgente) (Read 197 times) previous topic - next topic

mitebu

Apr 29, 2019, 08:56 pm Last Edit: Apr 30, 2019, 09:56 am by mitebu Reason: Agregado de etiquetas para código
Buenas tardes.

Estoy iniciado este año en arduino (uso Arduino Mega 2560), tengo un proyecto casi acabado donde simulo una instalacion domotica y lo tengo casi concluido, pero al hacer pruebas encuentro un problema que no se como solucionar.

Dispongo de un sensor de temperatura LM35 y un sensor LDR GL55, los cuales es obvio que se encargan de recoger los estimulos de temperatura y luminosidad y pasarsela al arduino.

El sensor LM35 alimentado con 5V a la izquierda, GND a la derecha y al pin A0 del arduino.
El sensor GL55 alimentado con 5V a la izquierda, una resistencia de 1k a GND a la derecha, y tambien a la derecha conectado al pin A1 del arduino.

Mi problema es el siguiente: al principio tenia q convertir estos valores a valores utiles (temperatura en ºC y luminosidad en %) y mostrarlos en pantalla, pero cuando los ponia a funcionar, se me disparaban los valores de temperatura con los cambios del LDR.

En un sketch aparte he puesto estas dos lineas en el loop:
Code: [Select]
Serial.println(analogRead(A0));
Serial.println(analogRead(A1));


Comentando una y cargando el programa solo con una de ellas, funciona perfectamente por separado cada elemento, pero si cargo ambos a la vez, las lecturas se modifican, dando el de temperatura un valor irreal y sufriendo saltos muy grandes con la variacion de la lectura del LDR.

Si alguien que entienda del tema sabe echarme una mano se lo agradeceria, presento el proyecto el viernes asi que toda ayuda hasta la fecha seria muy util.

Gracias de antemano, un saludo.

PeterKantTropus

Es un problema poco documentado. El chip Atmega solo tiene un convertidor analógico digital, las diversas entradas las hace mediante un multiplexor , cuando haces medidas rápidas continuas de dos pines aledaños puede haber entrecruzamiento.
Se puede solucionar haciendo una lectura y descartandola
por ejemplo (aunque no es muy elegante)

Code: [Select]

Serial.println(analogRead(A0));
Serial.println(analogRead(A0));
Serial.println(analogRead(A0));
Serial.println(analogRead(A0));
Serial.println(analogRead(A1));
Serial.println(analogRead(A1));
Serial.println(analogRead(A1));
Serial.println(analogRead(A1));



"Si no entra como tornillo, entra como clavo"

PeterKantTropus

corrijo
Code: [Select]

analogRead(A0);
analogRead(A0);
analogRead(A0);
Serial.println(analogRead(A0));
analogRead(A1);
analogRead(A1);
analogRead(A1);
Serial.println(analogRead(A1));



"Si no entra como tornillo, entra como clavo"

tauro0221

Hi,
Una sugerencia es de anadirle un condesador de 10 ufd y uno de .1ufd en paralelo a la entrada del LM35 y al sensor LDR. Esto se hace para filtrar cualquier interferencia electrica. El LM35 require que la fuente que alimenta sea bien filtrada.

Go Up