De hecho, tengo experiencia en software, por lo que mi experiencia en ingeniería eléctrica es algo escasa. Sin embargo, he probado mi primer proyecto Arduino y, en su mayor parte, estoy bastante contento. Sin embargo, siento que podría haber una gran cantidad de mejoras que se pueden lograr con respecto a las lecturas de las celdas de carga.
Estoy construyendo una báscula digital que pesa un máximo de 40 kg. Con solo presionar un botón, la báscula envía el peso actual a una computadora conectada a través de USB. Todo funciona bastante bien, excepto que recibo muchos rebotes al leer la entrada analógica de las celdas de carga.
Tengo 4 celdas de carga de 3 hilos de 50 kg (las que normalmente se encuentran en las básculas de baño, similares a estas celdas de carga , mis cables eran de diferentes colores, azul, negro, rojo) conectadas en la siguiente configuración:
Estoy usando un INA125P para amplificar la señal a mi Arduino según el diagrama a continuación:
Básicamente, seguí un montón de artículos en línea, separé una escala, leí un montón de tutoriales, un poco de prueba y error y llegué al arreglo anterior. Esto lo pude hacer por mi cuenta. He suavizado dramáticamente las lecturas analógicas en el extremo del software mediante el uso de una mediana móvil combinada con una función de promedio, pero aun así obtuve muchos rebotes.
Hay un montón de artículos en línea que son muy útiles para mostrar exactamente cómo crear una báscula usando un Arduino y el INA125P, pero no pude encontrar uno que demostrara claramente cómo aplicar un voltaje negativo al INA125P. Recuerdo haber leído en alguna parte que debería poder lograr una mejor resolución aplicando un voltaje negativo al INA125P, pero me costó entender cómo se hizo y ahora parece que no puedo encontrar dónde empezar a leerlo. Incluso si de alguna manera descubrí cómo crear el voltaje negativo y luego descubrí cómo aplicarlo al INA125P y logré usar los 10 bits completos del ADC integrado de Arduino para obtener una resolución de 1023, todavía siento como si el el rebote que estoy experimentando es inusualmente alto,
Después de muchos retoques y pruebas, descubrí el siguiente comportamiento inusual...
Debo señalar que…
Esperaba poder obtener las respuestas a las siguientes preguntas...
Realmente aprecio cualquier ayuda que reciba en esto.
---- ACTUALIZAR ----
Después de investigar un poco más, me topé con un IC convertidor de voltaje económico (ICL7660A) que esperaba poder usar junto con dos capacitores de 10uF para crear el suministro negativo de 10V al pin V de INA125P.
La documentación para el ICL7660A se puede encontrar aquí .
¿Hay algún problema con el uso del ICL7660A para crear los 10 V negativos como se muestra en mi circuito a continuación?
¿Podría esto causar algún problema previsible con el INA125P o el resto del circuito?
--- ACTUALIZACIÓN 2 ---
Terminé probando el circuito anterior y, de hecho, parece suministrar el pin de -10 V al V- del INA125P, sin embargo, no parece mejorar el rango de lectura analógica... Todavía obtengo lecturas entre 300 y 1023. Tenía la impresión de que al suministrar un voltaje negativo al pin V- podría obtener el rango completo de 0 a 1023.
También estoy contemplando agregar un regulador de voltaje fijo de 10 V al voltaje de excitación para ver si eso tiene un efecto estabilizador... ¿importa dónde se coloca esto? ¿Es decir, cerca de las celdas de carga o cerca del suministro de voltaje o es irrelevante?
Algunas cosas a tener en cuenta primero: con solo 10 bits, su resolución de 1 bit será (rango completo)/1023, en este caso, 40 kg/1023 = 0,0391 kg (39,1 g). El nivel de ruido de 1 bit (39,1 g) en la entrada analógica de Arduino es 5v/1023 = 4,89 mv (suponiendo un sistema Arduino de 5v). En la entrada del amplificador, el valor de voltaje de 1 bit se divide aún más por la ganancia del amplificador. Por lo tanto, cualquier ruido del sistema por encima de estos valores reducirá aún más su resolución, a menos que se utilice un filtrado adicional. También recuerde que el chip Arduino puede dañarse si la entrada A0 cae por debajo de GND o por encima de VCC. Los diodos de protección podrían ayudar aquí si no hay otro control.
La configuración de suministro de +10 y -10 solo ayuda si el chip del amplificador lo necesita y/o si lleva el voltaje a través de cada celda de carga al nivel máximo de 10v, lo que brinda la salida máxima. Pero como se mencionó anteriormente, esto también podría conducir a un voltaje negativo en A0. Por ejemplo, con un suministro +- simplemente levantar su sistema por la plataforma de pesaje podría enviar A0 negativo. (Si prueba esto, asegúrese de desconectar A0 del Arduino primero).
Para filtrar las líneas S+ y S-, puede intentar colocar resistencias en serie de bajo valor en cada línea y luego colocar una tapa paralela (no polarizada) a través de ellas (con la tapa más cerca del chip amplificador). Las resistencias de 1k y un límite de 1uf pueden ser buenos valores para probar. Una resistencia en serie del mismo valor y un límite para GND en la línea A0 también pueden ayudar (con el límite más cerca de la entrada de Arduino). Es posible que estas ideas de filtrado no ayuden mucho si el ruido de su sistema ya es demasiado alto. Las piezas adicionales de RC reducirán ligeramente el tiempo de respuesta. Si la respuesta más lenta es inaceptable, se necesitaría mucho filtrado digital.
Compruebe su ruido de punto cero. Corta S+ y S- y mira si obtienes una lectura estable cerca de cero. (Haga esto primero desconectando A0 y verifique con un DVM que A0 no se vuelve negativo). Con A0 conectado, cualquier "rebote" que vea probablemente sea ruido del sistema del amplificador o Arduino. Para reducir el ruido del amplificador, coloque límites de valor más grandes desde el pin V+ a GND y desde el pin V- a GND. (10uf a 47uf debería ser suficiente, observe la polaridad correcta). Una pequeña tapa (tal vez 0.1uf) a través de la resistencia de ganancia podría ayudar (consulte la hoja de datos del amplificador). Para reducir el ruido de Arduino, asegúrese de utilizar la función analógica que apaga el sistema digital antes de realizar una lectura. No sé si el analogRead estándar hace esto o no. La mayoría de los chips Atmel tienen esta capacidad.
Para calibrar su sistema utilice un DVM de buena resolución. Desconecte temporalmente la entrada A0 y conéctela al DVM +, con DVM - a GND (o E-). Coloque una masa de rango completo (40 kg) en la báscula, ajuste Rganancia (agregue un potenciómetro pequeño si es necesario) hasta que obtenga una lectura muy cercana, pero no superior a Vref. Luego retire la masa de 40 kg y vea si la lectura de voltaje está muy cerca de 0v. Si no está cerca de 0v, puede compensar el voltaje agregando un potenciómetro de valor muy alto (100k a 1M) conectado entre E+ y E- con el centro conectado a 100k y luego a S+ o S-. Después de ajustar el punto cero, vuelva a probar y reajuste Rganancia si es necesario.
Andy alias
Tomo A
Andy alias
Tomo A
Tomo A
Tomo A
Andy alias
Tomo A
Tomo A
Tomo A
usuario57239