Problema con sensores de báscula para secador de madera

Buenas noches.

Soy nuevo en este foro y en esto de Arduino, así que espero hacer esta consulta bien.

Actualmente estoy realizando un proyecto que se trata de implementar un sistema que permita conocer la cantidad de agua que están perdiendo unas probetas dentro de un secador de madera.

Para esto opte por la utilización de una celda de carga como la que agrego al final (solo que de 20 Kg en vez de 5kg).

Las probetas pesan alrededor de 2 o 3 Kg, y requiero de una buena precisión.
La cosa es que el sensor me da errores de lectura conforme cambia la Temperatura dentro del secador ya que la barra de aluminio se dilata o se contrae con estos cambios.

Hice algunas pruebas y encontré que no solo cuenta la diferencia de temperatura inicial con la tomada cada cierto tiempo, sino también la velocidad con la que cambia.
Utilizo un Arduino MEGA y el amplificador es el Hx711.

No se se haya una forma de reducir ese error lo mas que se pueda mediante el código, o algún arreglo de dispositivos que pueda hacer. Adjunto una parte del código.

float temp=0;
float peso=0;

//Báscula
#include "HX711.h"
#define DOUT  A0
#define CLK  A1
HX711 balanza(DOUT, CLK);

//Reloj
 #include <DS1302.h>
DS1302 rtc(2, 3, 4);

//Sensor Dallas
const int pinDatosDQ = 46;
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);


void setup()   { 
Serial.begin(9600);
rtc.halt(false);
rtc.writeProtect(false);

balanza.set_scale(-106369.4267515924); 
balanza.tare(20);
delay(200);
sensorDS18B20.begin();
delay (200);}

void loop() {
sensorDS18B20.requestTemperatures();
 temp= sensorDS18B20.getTempCByIndex(0);
delay(100);
peso=balanza.get_units(20);
delay(100);

Serial.print("*Temperatura= "); Serial.print(temp);Serial.println(" C");
Serial.print("*Peso= "); Serial.print(peso,3);Serial.println(" Kg");
delay(1000);}

Saludos.

celda-de-carga-de-5kg-incluye-modulo-hx711-.jpg

Tengo sugerencias para hacerte pero no termino de entender esto

La cosa es que el sensor me da errores de lectura conforme cambia la Temperatura dentro del secador ya que la barra de aluminio se dilata o se contrae con estos cambios.

Que tiene que ver la dilatación/contracción de la barra de aluminio con el peso total medido?

Puedes mostrar que tienes encima de la celda de carga?

Moderador:
Por cierto, las imágenes deben visualizarse, te envío guia por privado para hacerlo la próxima vez.

Lo que pasa es que la celda de carga me da variaciones en la lectura con las variaciones que tiene la temperatura, es decir:

Si la temperatura aumenta, la lectura disminuye.
Si la temperatura disminuye, la lectura aumenta.

Esto ocurre hasta con los mas mínimos cambios de la temperatura, con un grado que me aumente o disminuya, mi lectura ya cambia 10-25 gr.

La celda de carga la monté de la siguiente manera:

El diagrama que utilicé para la conexión de la celda con el modulo Hx711 es este:

Por ahí vi alguien que tenia un problema con la lectura de su celda de carga, no se si mi caso sea algo similar, agregaron este esquema de conexión, pero no entiendo la parte que dicen de conectar a AVDD y AGND, el diagrama y comentario son estos.

Saludos.

O sea que tu problema es la variación de peso del agua debido al cambio de temperatura?
Pero si algo es conocido es como varia la densidad del agua con la temperatura. Es algo que puedes corregir con facilidad para cada situación.

Pregunta: mas alla de la temperatura porque pierdes agua, se escurre?

El secador tendrá tablas de madera, de las cuales se sacarán algunas probetas para monitorear el proceso de secado.

Debido a que no encontré algún sensor de humedad para la madera, opté por usar la bascula. En donde se registrará el peso de las probetas durante el proceso de secado, para así poder calcular la cantidad de agua que esta perdiendo.

La cosa es que la bascula presenta fallas de lectura al aumentar o disminuir la temperatura, lo cual me impide conocer la cantidad real de agua que pierden las probetas en el tiempo, el error incluso a veces me da un valor mayor que el que tenían las probetas al inicio del secado.

No, la madera no esta lo suficientemente mojada como para que escurra. El secador aumenta la temperatura y también cuenta con un sistema de ventilación para extraer la humedad del recinto. El plan es dejar la bascula ahí durante el proceso de secado (dura aproximadamente 15 días) y que este guardando periódicamente las lecturas en un DataLog para después observarlas y graficarlas en una PC.

Pero a causa del error introducido que te comento, los datos obtenidos no son fiables, no se si mi celda de carga este dañada o si ese error sea normal en estos sensores. Aunque a mi parecer, que con 1 °C de diferencia que exista introduzca un error de 15 o 25 gr (o más, ha llegado a fallar hasta 200 gr en algunas lecturas) se me hace mucho.

Cabe mencionar que al observar un comportamiento tan raro decidí dejar la bascula en el secador sin nada arriba, para ver si era cosa de la bascula o del secador, pero aun estando sin nada arriba me da variaciones en la lectura.

Otra cosa que se me habia olvidado mencionar es que las probetas pesan aproximadamente 1.3 Kg, por lo cual 200gr de error de lectura para el secado se me hace un poco exagerado.

Y si armas un ambiente de temperatura controlado asi eliminas esa variable y te concentras en tu problema de escurrimiento?

Colocas todo en un ambiente confinado con control de temperatura al menos para la duración de la prueba.
Lo controlas usando un PID con otro arduino o te compras un módulo que lo haga que los venden por poco dinero.

Listo perturbación eliminada, te centras en lo que quieres analizar.

¿Hay algún tutorial que recomiendes sobre PID?

Es que la verdad nunca lo he utilizado, ¿es necesario que el control PID lo realice otro arduino o puede ser con el mismo?

Esto quieres hacer PID Controller?

Creo que ya entiendo que es lo que me recomiendas.

Me dices que para evitar cambios de temperatura meta el dispositivo de medición en un ambiente controlado con PID durante las pruebas y con eso ya no existe una delta T que me introduzca error. ¿correcto?

La situación es que el sistema de medición debe de estar dentro del secador, ya que el objetivo del proyecto es: crear un dispositivo que permita monitorear la perdida de agua de un secador de madera. La función del secador es aumentar la temperatura para que el agua se evapore y la pierda la madera, es decir, no pierde agua en forma liquida, sino de forma gaseosa.

El secador es solar, tiene unas placas metálicas, las cuales captan los rayos solares y se calientan, lo cual eleva la temperatura del recinto. Pero por eso mismo, durante la noche se enfría (y mas en épocas frías de año).

Todo eso hace que dentro del secador exista una constante variación en la temperatura.

Ahora, mi problema es que no puedo hacer que la bascula arroje datos reales al variar la temperatura. El dispositivo esta planeado para que tome lecturas cada X tiempo de la masa de las probetas de madera que tiene encima, los cuales guarda en una memoria micro SD para después ver ese DataLog en la PC y poder graficar y esas cosas.

Idealmente, funcionaria asi:
*Supongamos que el secado comienza a las 12:00—Se registran 3 Kg (peso inicial).
A las 15:00—Se registran 2.95 Kg.
A las 20:00—Se registran 2.897 Kg.
A las 03:00—Se registran 2.896 Kg.

Ahí podría saber cuanta agua esta perdiendo la probeta (la diferencia de masa en cada lectura).
Esto sería si la bascula me diera buenas lecturas, por dar un ejemplo

Pero lo que pasa no es eso, la balanza me da errores de lectura dependiendo de la diferencia de temperatura. El problema que tengo es algo asi (supongamos que se comienza a la misma hora).

A las 12:00—Se registran 3 Kg (Todo bien hasta aca, porque al comienzo no hay una diferencia de temperatura)
A las 15:00—Se registran 2.15 Kg (¿Tanto bajó? La verdad es que no, como aumento la temperatura del recinto, en la lectura se registra un error+ la cantidad de agua que realmente perdió)
A las 20:00—Se registran 2.597 Kg. (¿Más que la anterior? Lo que pasa es que como esta bajando la temperatura, aumenta la lectura por el error).
A las 03:00—Se registran 3.103 Kg.(Al enfriarse por debajo de la temperatura inicial, el error es tal que ahora esta por encima de la la primera lectura).

Ese es mi problema, no puedo hacer que el error disminuya, ya trate de encontrar un factor de corrección, pero no funciona, ya que no todos los días son iguales, por lo que no todas las curvas de comportamiento de temperatura tampoco lo son. Además, encontré que ese error no solo depende de la diferencia de temperatura, sino de su diferencial con respecto al tiempo. No me da el mismo error si aumenta la temperatura 5 °C en una hora que si me aumenta 5°C en 40 min.

Ok.. ahora me doy cuenta que la sugerencia estuvo equivocada.
Olvidé que es un secador y que obviamente debes calentar para secar.

Volvamos a lo anterior.

Indentifiquemos los errores :

  1. Deberías hacer una prueba de la balanza si no lo has hecho con elementos patrones para ver como se comporta el sistema con la temperatura.
    Coloca pesas que sumen digamos 15k y debería mantenerse bastante equilibrado a lo largo del dia. Si falla, habra que ver que ocurre.

  2. Estarás de acuerdo que el cambio en la densidad del agua provoca un error? Yo creo que es uno de los problemas.

No tengo mas sugerencias x ahora.

Otro culpable el HX711. Tiene problemas con la temperatura. Mira este hilo

Y acá buenas guias para corregirlo Honeybee Hive Monitoring similar a tu caso pero con miel de abeja.

Mira el gráfico, tu mismo problema

Prestale mucha atención, creo que por acá puedes acercarte a tu meta.

Mas básico, compensación de temperatura en celda de carga link

Resalto esto: This particular load cell varies by about 1% per 1°C.
que tal vez no sea la tuya.
Ya que la tienes supongo sabes su datasheet, mira como es dicha variación.