Pages: [1]   Go Down
Author Topic: LM35 estabilizar lectura.  (Read 2186 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenos días.
Tengo una Arduino UNO con Ethernet y una LM35, lo he conectado de tal forma que la temperatura la pueda tenerla en Xively y poder ver un historial. El problema es que me varía mucho la lectura una más de un grado de diferencia, quisiera saber como podría conseguir que la lectura no me oscile tanto.
Saludos cordiales.
Francisco.
Logged

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Depende del motivo de esa variación. Si es tipo rizado simplemente haz la media de las últimas X lecturas.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenos días, gracias por responder, pongo la instrucción que calcula la media y aún así me oscila bastante ; Como puedes ver
hago a media con 10 medidas y sigue mal, pongo el enlace en Xively para que puedas verlo.
https://xively.com/feeds/1468193080 " . El LM35 lo tengo alimentado a 5 Vcc.
Un saludo y buen día¡¡¡¡



//tempC = analogRead(sensorPin);
  tempC = (analogRead(sensorPin)+analogRead(sensorPin)+analogRead(sensorPin)+analogRead(sensorPin)+analogRead(sensorPin)  +analogRead(sensorPin)+analogRead(sensorPin)+analogRead(sensorPin)+analogRead(sensorPin)+analogRead(sensorPin))/10; // 10 lecturas para la media.
 
  tempC = (5.0 * tempC * 100.0)/1024.0; 
 
  int sensorValue = analogRead(sensorPin);
  datastreams[0].setFloat(tempC);
 
  Serial.print("Read sensor value ");
  Serial.println(datastreams[0].getFloat());
Logged

Offline Offline
Jr. Member
**
Karma: 3
Posts: 88
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu problema es una cuestión básica de la electrónica: ruido en la señal. Es algo que todo diseñador debe considerar.

El ruido en la medida puede tener diversas fuentes.
Ruido generado en el propio sensor, sus cables, ruido en el CAD debido al diseño deficiente de la placa Arduino ¡ala lo que acabo de decir smiley-wink  ! ruido debido a fluctuaciones en la referencia de tensión interna del uC.

El LM35 da una señal de 10mC/ºC, osea a 22ºC da unos 0.22V. Prueba a medir con un osciloscopio el rizado de alimentación del uC en el Arduino UNO oficial y lo mismo para la señal a medir procedente de tu sensor.

Ante semejante panorama, una medida que resulte útil, probablemente precisa de un filtro digital paso bajo lo cual es relativamente fácil de hacer si utilizas alguna de las herramientas de diseño que hay en la red, otra opción para mitigar en parte el problema es hacerlo en analógico mediante una red RC o un filtro pasa bajos con un operacional, si bien ello no eliminará el ruido generado en la propia placa Arduino.

NOTA: en tiempos pasados, antes de Arduino, uno se leía Elektor, Resistor, Radio Plans y se aprendía electrónica no necesariamente la teoría del filtro Kalman, quizás sólo cacharreabamos.

Ahora con Arduino, se ha vendido la idea de "enchufas y hace cosas", pero no, la electróncia es más compleja. Antes meterse en diseño con micros eran palabras mayores y sin embargo aprendíamos más.

No es cupla tuya, pero la repetición de preguntas como la tuya me sirve para cuestionar muy mucho ese presunto enfoque didáctico de Arduino. Arduino es un producto, un producto con un enfoque claramente comercial, pero que deja a muchos frustrados por el camino como tu, preguntandose porqué no funciona.

Antes, leyendo las revistas y mirando esquemas de dos páginas al meno podías ver que había todo un mundo por aprender.
Ahora se vende la idea de que con subir un sketch ya "hace cosas". Muy comercial, así se han vendido 1M de Arduinos, la gente compite a ver quién tiene el Arduino más grande y largo, el Due, el Yun el Mega pero ¿aprende algo?.....
Logged

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Además de todo lo dicho por jray puedes hacer lo siguiente.

La media de 10 valores no se hace así. Tú tomas bloques de 10 lecturas y haces la media. En lugar de eso, si vas tomando lecturas que numeraremos de la 1 a la 100, la medida 1 será la media de las lecturas 1 a 10, la medida 2 será la media de las lecturas 2 a 11, la medida 3 será la media de las lecturas 3 a 12, etc. Hay un ejemplo de cómo hacerlo en el IDE, en Ejemplos > Analog > Smoothing. Esto es similar a realizar por software un filtro paso bajos.

Después en tu caso imagino que las variaciones de temperatura reales serán suaves así que las tomas de lecturas del LM35 puedes hacerlas más distantes en tiempo, una lectura cada segundo o cada 10 segundos, lo que veas.

Lo que no entiendo es esa disparidad entre temperatura interior y exterior. La temperatura interior ahora marca 75 ºC, qué es, ¿un horno?

Nota: acabo de ver que en la gráfica se pueden ver los valores y realmente hay mucha variación. Revisa muy bien esas alimentaciones y filtros como te ha dicho jray y después sigue con lo que te he puesto.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola de nuevo. Antes de nada gracias a los dos Jray y Cheyenne.
Jray tienes toda la razón en lo que has expuesto, es cierto, pero cada vez se cacharrea menos, cada vez se repara menos y el osciloscopio se usa más de adorno que de otra cosa.
Arduino es más fácil para todo el mundo, está casi todo hecho y solo hace falta ingenio para encontrar una aplcación que te sirva para algo en tu día a día.
Hablemos del tema;
Cuando he probado el circuito con el programa todo va genia, alimentación USB, temperatura sin oscilar, en fín todo correcto, pero cuando lo conectoa al router con alimentador de 9 Vcc y entro en Xively se va a la porra, puede ser ruido, trataré de poner un filtro y ver si se estabiliza, el osciloscopio no puedo llevarmelo a casa para verlo y si traigo el circuito al laboro pues el problema no puedo reproducirlo.
Reconozco que de programación nada de nada pero todo ésto me apasiona y si eres tenaz y con mucho tesón se consigue muchas cosas.
Cheyenne gracias por tu report, sois muy amable, probaré a quitar el ruido, mediré con un Fluke la salida, alimentación en fin...probaré, por que modificar el programa se me va a hacer más arduo.
Un saludo cordial a vosotros y a los escuchas.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se me olvidaba comentar que solo tengo conectada la sonda exterior,la interior está al aire, por eso da esas medidas tan dispares, la que funciona es la exterior con su LM35 y la LDR que también está conectad y que también oscila, menos pero oscila, con lo bien que salen las pruebas en el banco de trabajo y cuando lo llevas todo a casa y lo pruebas ¡¡¡¡zas¡¡¡¡¡,. A ver si cuando llegue a casa por la tarde sigo probando y dejaré las dos puestas y practicamente pegados los dos LM35, debería de dar casi la misma medida.
Saludos de nuevo.
Logged

Miami/Florida
Offline Offline
Sr. Member
****
Karma: 14
Posts: 350
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
La media de 10 valores no se hace así. Tú tomas bloques de 10 lecturas y haces la media. En lugar de eso, si vas tomando lecturas que numeraremos de la 1 a la 100, la medida 1 será la media de las lecturas 1 a 10, la medida 2 será la media de las lecturas 2 a 11, la medida 3 será la media de las lecturas 3 a 12, etc. Hay un ejemplo de cómo hacerlo en el IDE, en Ejemplos > Analog > Smoothing. Esto es similar a realizar por software un filtro paso bajos.

Ese es el problema que tienes. Sucede que se genera "ruido de quantificacion". Este aparece al digitalizar una senal analogica. El conversor A/D dependiendo de la resolucion no puede indentificar valores intermedios menores que su maxima resolucion. Usando el LM35 sin amplificacion, la senal varia muy poco para una variacion de temp del orden de las decimas de grado centigrados y el conversor da los valores mas proximos al valor real y esto introduce una variacion inaceptable. La situacion se agrava cuando el rango de medicion se reduce. La idea es que mientras menor sea la variacion del voltage analogico producido por el sensor menor sera la resolucion del sistema al digitalizarla y en consecuencia mayor el ruido de cuantificacion. Una possible solucion es utilizer amplificadores para aumentar la variacion del voltage con la variable que se mide. Otra, es utilizar un filtro digital paso bajo que promedia  y elimina los saltos en los valores a la salida del conversor. Lo mejor es hacer las 2 cosas. Busca "moving average digital low pass filter".
Logged

Perseverance is 90% of the solution. The remaining 10% is more perseverance.

Miami/Florida
Offline Offline
Sr. Member
****
Karma: 14
Posts: 350
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Olvide mencionar que cambiar el voltage de referencia AREF tambien puede ayudarte en este caso a reducir el ruido de cuantificacion y aumentar la resolucion del sistema en conjunto.
Suerte
Logged

Perseverance is 90% of the solution. The remaining 10% is more perseverance.

Pages: [1]   Go Up
Jump to: