Go Down

Topic: lecturas de humedad, temperatura y CO2 repetidas tras varias horas (Read 1 time) previous topic - next topic

josekiki

Toda información o consejo es siempre bienvenida Surbyte aunque se salga un poco del tema.

En cuanto al tema en cuestión, comentarte nakuadak que los sensores los tengo conectados a Arduino y no a nodemcu. Nodemcu solo lo uso para subir los datos a la nube. Problema de alimentación no creo que sea porque arduino mega lo alimento con una fuente de 12 V 2 A, y los 9 sensores dht22, el de co2, 3 reles de estado sólido y el nodemcu lo alimento con una fuente de 5 V 3 A. Teniendo en cuenta que los dht22 consumen 15 mA, los 4 reles consumen en funcionamiento 160 mA en total, (como mucho solo hay dos encendidos a la vez), el de co2 150 mA aprox y el nodemcu no mas de 300-400 mA ,y creo que menos, lo que hace un total de 845 mA máximo seguiría teniendo 2 Amperios de sobra, por lo tanto no creo que el problema sea el que todo esté alimentado con la misma fuente.

Se me ha ocurrido desmontar uno de los sensores y probarlo de manera independiente en un arduino uno que tengo a ver si al cabo del tiempo empieza a repetir medidas.

Pero vuelvo a lo que más me llama la atención y que he comentado anteriormente, si los dht22 dan problema me parece lógico que fallen, den problemas de medición y se vaya repitiendo los valores de temperatura y humedad media, pero lo que no me entra en la cabeza es que el mhz-19B (sensor de co2) también comience a enviar el mismo dato de manera repetida. Solo sé lo siguiente:

Aunque llegue un momento en el que se empiezan a repetir los mismos valores, el loop de arduino se ejecuta completamente porque el resto de funciones que le tengo programadas se ejecutan correctamente.

Me viene lo siguiente, uso el serial2 de arduino mega para enviar datos a nodemcu, ¿puede ser que el problema esté en la comunicación serie? Es que me llama la atención que al reiniciar se solucione el problema.

En cuanto lo que comenta Surbyte sobre el montaje estoy totalmente de acuerdo, comentar que todos los componentes están soldados a placa y con laca de protección y el cableado también está soldado a los pines de todos los sensores y protegido mediante funda termoretráctil.

Sólo se me ocurre además de probar uno de los dht22 en otro arduino, el cambiar del serial2 a un puerto serie virtual, ya que el serial3 lo tengo usado con el sensor de co2 o por último intentar meterle al código un reset por software cuando pasado un cierto tiempo se resetee arduino ya que vivo a una hora de camino de la instalación.

Hay por el foro algo sobre el reset software? Es que he buscado en el índice de la documentación y no he visto nada. Simplemente saber que hay, ya lo buscaría yo.


P.D.: se me olvidó comentar que ya modifiqué todos los delay por millis y desde el domingo a las 21:30 a hoy a las 17:00 ha estado funcionando bien. A esa hora han empezado a repetirse. Por lo tanto tampoco es el problema.


Gracias de nuevo a todos y seguimos en contacto.

Saludos.

krnlpanic

Yo te recomiendo que supervises el puerto serie enviando y esperando una respuesta, si no la hay tras varios intentos le puedes aplicar el reset via pin o puedes usar el watchdog forzandolo con un delay, el nodeMCU puedes hacerlo con ESP.reset()

josekiki

Hola a tod@s, no tengo olvidado el post, solo estoy haciendo pruebas cuando tengo algún hueco para volver y comentaros los resultados. Un saludo.

surbyte

También he estado con la misma situación con el DHT22/AM2302.
En principio mi problema se debía a otra razón que no traigo aquí porque no suma.
He logrado que los DHT22 funcionen bien. Tengo todos sin resistencia en el pin de datos y trabajan bien.
El único momento en que fallan es en el arranque pero luego de un tiempo comienzan a enviar datos.
No hay mucho que pueda hacer porque luego de enviar un dato, mi ESP01 se pone en SLEEP por 60 segundos y no es posible seguirlos hasta que se despierta.

Lo curioso es que sin R, funcionan con ESP01 colgados de GPIO0 o GPIO2.
Mis DHT22 estan trabajando a 3.3V, no superan 3.35V y han trabajado incluso a 2.9V cuando la LiPO se cae en tensión, según la hoja de datos del DHT22 requiere alimentación de 3.3 a 5.5V.

josekiki

#19
Dec 10, 2019, 08:13 pm Last Edit: Dec 10, 2019, 08:20 pm by josekiki Reason: añadir foto
Hola a tod@s, después de probar miles de cosas(uso de puertos serie creados mediante softwareSerial, reseteando, probando uno de los dht22 en otra placa, etc.) el problema no se soluciona, cuando pasa unos dias reaparece el problema de lecturas repetidas tanto de temperatura y humedad como de CO2. He tardado tanto en contestar porque he probado cada posible solución durante 10-15 dias cada una y porque no me desplazo a las instalaciones todos los dias. Sí es cierto que últimamente ha habido ocasiones en las que han estado funcionando bien durante 7-9 dias pero al final volvía el problema.

El error de medidas a cero tras el reseteo no he conseguido evitarlo ni identificar porqué puede ser. Cada vez que reseteo los valores medidos de temperatura, humedad y co2 son nulos.

Me traje un dht22 a casa y está todo el día midiendo entre un 90-95% de humedad cuando aquí no tengo más de un 40-60%. Eso me tranquiliza por un lado porque al menos me dice que arduino mega no esta fallando.

He pensado definitivamente en conectarlo todo al Nodemcu (Si puedo) y a ver si así no falla, porque me da la sensación que al usar el seria2 y serial3 o varios serial virtuales en arduino uno puede venir el error. Voy a hacer cálculos porque necesito 9 entradas digitales para los sensores dht22, otra para el pin Rx para el sensor de C02 y 3 salidas digitales para 3 reles.

Viendo la última entrada de Surbyte voy a probar su solución en el dht22 que tengo aquí en casa a ver qué tal y os cuento.

Por ahora sigo en el fango, la última solución será cambiar todos los dht22 por otro sensor que también mida temperatura y humedad.


Seguimos en contacto. Saludos a tod@s.

P.D.: Surbyte, los sensores dht22 que tengo venían montados sobre placa e incorporan la resistencia entre Data y VCC. No se si coger el estañador y quitársela. Voy a agregar foto.


josekiki

Buenas de nuevo, pues comprobado alimentando a 3,3 V y 5 V, en el primer caso la lectura de temperatura y humedad es 'nan' y a 5 V la lectura es de 97%, por lo tanto llego a la conclusión de que el sensor está en mal estado y los que tengo instalados en el cultivo también lo estarán porque las medidas son similares. Lo que sí me mide de forma correcta es la temperatura.

Saludos.

josekiki

Hola de nuevo. Sigo sin solucionar el problema. Voy a probar a usar en el arduino mega dos puertos serie virtuales creados con softwareserial en vez de los serial2 y serial3 que tiene. A ver qué ocurre.

Saludos.

surbyte

Yo tmb he tenido problemas. La solución que va por ahora es reiniciar el módulo.

josekiki

Hola de nuevos a tod@s. Ahora mismo lleva desde el día 6 de enero sin fallar. Pero he descubierto que lo que puede generar el problemas es el sensor de humedad porque la temperatura la mide bien. Adjunto la imagen de los valores subidos a thingspeak. Lleva desde diciembre o antes midiendo el mismo valor medio de humedad. Los valores medidos por cada sensor varían un 0.1- 0.2% entre medidas pero muy poco frecuente, es como si estuviesen congelados y en conclusion el sensor que mide la humedad de los dht22 está roto, lo curioso es que se hayan roto todos. quité un dht22 de la instalacion y me lo llevé a casa y sigue midiendo la humedad de manera errónea. Estos son los últimos acontecimientos.

Un saludo.



josekiki

Una duda, tengo el siguiente código. Ya lo agregué pero voy a poner la porción en cuestión. La función de lecturas de cada DHT22 está formada por este código repetido para cada sensor:

Code: [Select]

float lecturas()                                               
{
    h = dht1.readHumidity();                                   
    t = dht1.readTemperature();
    if (isnan(h) || isnan(t))                                 
    {
      return;
    }
    hum[0]=h-8.7;
    temp[0]=t+0.5;
    DELAY(1500);

[...]   


Se puede ver que leo sensor compruebo si hay error y almaceno temperatura y humedad en los vectores temp y hum respectivamente. Luego cojo cada elemento de cada vector y calculo la media que es lo que finalmente subo a Thingspeak.

Todas las variables son globales.

Mi duda es, cuando la lectura de t o h es nan:

A) ¿qué valor se almacena en hum[0] o temp[0]?
B) ¿No se almacena ninguno y se mantiene la lectura correcta anterior?
C) He comprobado que cuando alguna lectura de t o h es nan el return no hace nada porque tengo puestos los Serial.print() para que me muestre cada medida por el monitor serie justo después de medirla. Me va mostrando cada segundo y medio el valor de h o t correspondente a cada lectura se valor o nan. Yo pensaba que cuando la lectura era nan, el return hacía que se volviese a ejecutar el  dht1.readHumidity() o el dht1.readTemperature() pero por lo que veo no es así. Conclusión: puedo quitar esta porción de código porque no sirve para nada:

Code: [Select]
if (isnan(h) || isnan(t))                                 
    {
      return;
    }


¿Es así?

Gracias por vuestra ayuda de antemano.

Saludos.

Go Up