Trabaja con el chip chino ADC Hx711

La razón para escribir esta publicación es el deseo de tratar con el convertidor ADC delta sigma del módulo de 24 bits basado en el chip Hx711. El convertidor en sí mismo se ensambla en forma de un módulo listo para usar de acuerdo con el circuito de conmutación recomendado por el fabricante (????). Hay comentarios sobre el funcionamiento de este módulo en este sitio en el blog de Andrey Gerasimenko "ADC 711 de 3.3V- no creo en la documentación china y no solo ..." .

Para probar este módulo, se ensambló un circuito basado en el microcontrolador ATmega16, el módulo ADC, el LCD de dos líneas BC1602, basado en el controlador HD44780, cuatro botones. Como entorno de desarrollo, utilizamos el programa AVR Code Vision, versión 1.25.9 profesional, AVR Studio 4, versión 4.09.0.338, el programador USB AVR JTAG, que permite no solo programar el cristal, sino también seguir paso a paso, si es necesario, la ejecución del programa en el microcontrolador, Casi en tiempo real.



Se eligió una celda de carga de fabricación china con un límite de peso máximo de 40 kg como fuente de señal para el ADC. y unidad de inserción de sensor estándar. Cabe señalar que el uso de unidades de integración "nativas" le permite obtener todos los datos de salida postulados de un extensímetro de punto único, modelo CZL A6. Por lo tanto, los medidores de tensión de tipo Single Point, cuando se utiliza el tamaño especificado en las especificaciones técnicas de la plataforma para la ubicación de la carga pesada, están diseñados de modo que la señal de desequilibrio del puente de tracción no dependa de la posición de la carga en la plataforma. Son las propiedades MECÁNICAS del cuerpo del sensor: las dimensiones geométricas, la ubicación de las películas de galgas extensométricas pegadas, especialmente el recorte de "hueso" en el medio del cuerpo del sensor, el tamaño de la plataforma que afecta el par aplicado al cuerpo del sensor determina esta independencia.



Bueno, la última fuente es "GOST 29329-92. Básculas para pesaje estático. Requisitos técnicos generales. Este GOST define las propiedades de los instrumentos de medición de peso. También es importante trabajar con el programa de oficina EXCEL. Estoy usando EXCEL 2003 XP3. Esto le permite procesar rápidamente los resultados utilizando métodos preparados.

Espero que toda la información necesaria para repetir mis experimentos se dé completamente.

Ahora el programa en sí que utilizo para trabajar con el módulo. El programa se centra en CHECK, y apenas directamente, es decir. sin cambios, se puede aplicar para algunas necesidades aplicadas. Aunque, como dicen, "depende de dónde presentar la solicitud".

El programa en sí es una estructura de bloques. Consta de 4 rutinas y la quinta principal principal. La primera subrutina: ReadCount, lee los datos del módulo ADC y los genera en la variable Count.

CreatInput, genera una matriz de entrada de datos de conversión a partir de 32 valores.

CreatOutput, genera una matriz de salida de datos de conversión ADC mediante la organización de un promedio móvil con un tamaño de ventana de 16 datos.

Keys, un programa simple para responder a las pulsaciones de teclas.

Entonces eso es todo. Las variables son básicamente todas globales, especialmente porque se permiten mega recursos.



El programa principal comienza creando la matriz de entrada CreatInput, luego los datos de entrada se filtran utilizando el método de promedio móvil. La selección de este filtro se basa en lo siguiente. Cuando el programa se está ejecutando, los datos en la pantalla cambian su valor en un rango bastante grande. He tomado los valores del ADC con cero esfuerzo en la plataforma y tabulado. Los valores se obtuvieron utilizando el depurador USB JATAG en el entorno AVR Studio.



En el archivo de Excel "Adquisición de datos", en la pestaña "Media móvil", se muestra el resultado de filtrar datos de InputBuff oscilantes (amplitud de oscilación de 436 unidades) con una ventana de promedio de 3.12.16 intervalos. El resultado se muestra en las celdas A37-A40. De lo cual se ve que lo más efectivo, en este caso, es una media móvil con una ventana de 16 muestras.

Los gráficos construidos muestran esto claramente. Los datos se toman de un controlador en funcionamiento, se detiene en el momento de la transición al procedimiento de visualización de datos. En las imágenes se muestran ejemplos ilustrativos de dicha captura de datos.



Ningún método de filtrado de datos, mediante el uso de varios filtros digitales, podría "domesticar" las fluctuaciones de entrada. Si observa el gráfico de los datos de entrada, la distribución gaussiana aquí ni siquiera "huele". Según lo confirmado por el usuario Nikopol_86 en el blog "... no creo en la documentación china"

Nikopol_86 5 febrero 2019 a las 09:27 0


Para ser honesto, tiene suficiente ruido en todas las proporciones. Investigué un poco sobre la densidad de distribución de los códigos ADC emitidos con circuitos de entrada en corto, por lo que hay una extensión de hasta 1000 1_5V y nifiga no es una ley de distribución normal, lo que sugiere que el cableado de la placa está en problemas, o con el ADC, o todos juntos. . También noté que él tampoco tiene estabilización de temperatura, y el rango de temperatura de operación alegado no corresponde a la realidad. Aunque solo sea porque cuando conecta un medidor de tensión de 5 kg al ADC, cambiar la temperatura de la habitación en 1 grado tomará lecturas en 2 gramos, y si calienta el microcircuito con el dedo, las lecturas volarán hasta 5-7 gramos. En general, llegué a la conclusión de que solo se puede hacer un dispensador de comida para gatos en este dispositivo,donde la precisión en una parada de tranvía será más que suficiente. Y, por desgracia, las soluciones normales no son baratas, porque tiene que usar ADC de alta calidad de AO o T1.

Como puede ver, las conclusiones fueron confirmadas. Es cierto, lo mismo es cierto:
jushabrauser 4 de febrero de 2019 a las 12:52 p.m.Con
una relación señal / ruido <1, esto nunca ayudará.
Incluso con un circuito de puente.

Por lo tanto, en condiciones normales (sin matemáticas y / o circuitos especiales), un mínimo de 8 bits menos significativos emiten tonterías (lo más probable).

24 bits chinos honestos por 350 rublos? No le digas a mis zapatillas.
Si el hierro en sí mismo "miente", ¿qué puede hacer al respecto?
Aquí, incluso un filtro no lineal de tercer orden no ayudará, porque los datos de origen no son pan comido.

Fue desde este lugar que quería ver de qué es capaz este módulo en la composición de las escalas. La búsqueda de problemas en la red con el jitter de los últimos bits del ADC condujo al foro kazus.ru/forums/showthread.php?t=105320&page=4. Aquí hay una discusión completa sobre lecturas estabilizadoras. Sin embargo, ninguno de los métodos matemáticos propuestos "calmó" los datos de entrada que recibo. Desde el "hardware" mismo, para estabilizar las lecturas, se introdujo: la conexión de tierra digital y analógica, así como el cortocircuito de la entrada B a tierra. Utilizamos blindaje completo y alimentación del módulo desde una batería de 6v (seguida de un estabilizador 7805) por separado de los circuitos del controlador. No hay resultado, los datos de entrada están oscilando ...

Por lo tanto, no se puede obtener la categoría 24 "limpia" y la razón aquí me parece ser un m / circuito de baja calidad. Por lo tanto, debe recortar el rango de conversión resultante. Para esto, en el programa ReadCount, se introdujo una línea con división de datos por 100. 100 es un poco menos de 2 a 8 grados. A. La conversión AD viene en 16 bits. Sin embargo, incluso esa limitación no hizo que el testimonio fuera confiable. Y la razón aquí es las propiedades de galgas extensométricas.

Entonces, después de aplicar el proceso de calibración (que vincula el valor del ADC y el peso en la plataforma), el peso se muestra en gramos. Muestra 500 gramos como el número 500, un kg como 1000. El precio de división es 1 gramo. Aquellos. obtenemos con sensor de 40 kg 40,000 divisiones. De acuerdo con los datos técnicos de la celda de carga, podemos obtener del sensor solo 3000 divisiones (símbolo C3 en el nombre del sensor). Entonces, el precio de la división debe ser (40000/3000) = 13.3 gramos. Sin embargo, de acuerdo con GOST 29329, la metrología de peso no funciona con el número 3. Se deben usar dígitos:

2.1.3 El valor del valor de división de calibración (e), el precio de división de escala (d) y la resolución de lectura (dd) en unidades de masa se deben seleccionar entre los siguientes: 1X10a; 2X10a; 5X10a, donde a es un entero positivo, negativo o cero.

A. El precio de división para este sensor, garantizado por el fabricante de 10 gramos. Es decir, el formato de salida debe ser 0.0x kg. donde x = 1,2,3, ... .0. Tratemos de hacer el precio de división de 5 gramos. Se enumeran las acciones programáticas relevantes. Después de tal restricción, "tomamos" del sensor 40,000 / 5 = 8,000 divisiones, que es 2.6 veces más de lo permitido. Después de estos supuestos, las escalas resultantes funcionan de manera bastante constante.

La observación anterior sobre la celda de carga aplicada y su "resolución" no nos permite afirmar de manera concluyente que este módulo no puede producir una conversión de 24 bits. Sin embargo, he probado este sensor para que funcione con una resolución de 1 gramo, en otro dispositivo, con un convertidor AD diferente. En este dispositivo, el funcionamiento del sensor y la conversión pueden considerarse satisfactorios, ya que la fluctuación del peso no fue superior a 3 gramos.

¿Qué no permite el uso de este ADC en el comercio? Bueno, lo primero y más importante es la dependencia de la medición de la temperatura. En segundo lugar, utilizando las operaciones de división y multiplicación integradas en ATMEGA, especialmente para 8 bits, es difícil calibrar las básculas en todo el rango de peso en estas condiciones. Debe tenerse en cuenta que el programa no reacciona de ninguna manera a la sobrecarga del sensor.

Cómo superar estos inconvenientes. Primero, ingrese el sensor de temperatura y ajuste la lectura del peso del valor de temperatura. Lo cual es bastante complicado. "Más barato" es introducir la opción de calibración, para diferentes cargas y, dependiendo del error causado por la temperatura, calibrar el peso utilizado en el trabajo.

El segundo es más difícil. Reemplace el procedimiento de multiplicación y división por operaciones tabulares y de corte. Creo que esta es la mejor manera de usar este módulo en la práctica de construir pesas.

Para completar la descripción de los requisitos para la creación de un programa para las escalas, es necesario utilizar el "Programa de (certificación) metrológica de calibración de las escalas" adjuntos a cada balance.

Conclusión:La creación de escalas basadas en m / s Hx711 es posible sujeto a todos los requisitos metrológicos para las escalas. La introducción de correcciones para la dependencia de la temperatura de la conversión debe preverse en un procedimiento separado. El uso de un módulo con una resolución de más de 16 bits requiere un enfoque y control por separado.

Source: https://habr.com/ru/post/undefined/


All Articles