Dificultades de ingeniería inversa de una báscula de baño digital

Pido disculpas si esto se ha discutido en otro lugar y por la extensión de la publicación. Este es un proyecto grupal y planeamos tomar el valor de peso de la báscula y enviarlo a través de una conexión WiFi a otro dispositivo que estamos construyendo. Manejamos bastante bien los otros aspectos de nuestro circuito, pero no sabemos cómo obtener con éxito los datos de peso de la báscula.

Nos gustaría mantener intacta la báscula de baño y, esencialmente, simplemente duplicar la salida a nuestro circuito . Parece haber muchas configuraciones para varias escalas y no hemos podido determinar qué enfoque es el correcto para nuestra escala.

Esto es lo que hemos descubierto: (las imágenes están al final de la publicación)

  • La báscula parece tener dos galgas extensométricas/células de carga de 3 hilos (rojo, negro, blanco)
  • Las celdas van a la PCB y están conectadas a puntos etiquetados en orden de izquierda a derecha: RR, LB, RW, LW, RB, LR. Entendemos que estos indican la celda de carga izquierda o derecha seguida del color del cable.
  • El circuito tiene una mancha en la parte superior del procesador, por lo que no hemos podido determinar las salidas de pines particulares para todas las conexiones. Pudimos rastrear las conexiones de la pantalla LCD con bastante facilidad, pero el resto del circuito es un lío de puentes y componentes.
  • Los cables blancos parecen ser los cables de señal (¿cables de detección?)
  • Aunque ciertamente podríamos estar analizando las cosas incorrectamente, parece que el comportamiento de las celdas de carga es generar un voltaje más alto en los cables blancos para pesos más bajos y voltajes más bajos para pesos más altos, con el voltaje más alto cuando la pantalla LCD muestra cero (¿fase de calibración? )
  • El comportamiento general de la señal para el circuito es que los voltajes aumentan durante el período en que la báscula parece detectar el peso (desplazamiento de ceros en la pantalla LCD). Una vez que la báscula muestra el peso, los voltajes caen muy rápidamente hasta acercarse a cero y permanecen allí hasta que se completa la etapa de visualización del peso. Al final (cuando habría bajado de la escala), la pantalla LCD muestra un cero y el voltaje vuelve a subir durante un breve período antes de volver a caer rápidamente. El circuito luego se apaga por completo.

Lo que hemos probado:

  • Inicialmente tratamos de analizar los pines del procesador con un osciloscopio para encontrar una señal que generara claramente el valor de peso para la báscula. Descubrimos que era muy difícil para nosotros. No tenemos sondas ideales para trabajar en un área tan pequeña y no hay nada práctico para agarrar en la PCB. También experimentamos mucho ruido y un comportamiento extraño al tratar de sujetar la sonda con la mano en un alfiler. Entre eso, la gran cantidad de pines para probar y nuestra inexperiencia, no pudimos identificar ninguna señal que fuera claramente útil.
  • A continuación , intentamos analizar la señal en las salidas del amplificador operacional integrado (LM324), así como directamente en los cables blancos. En el osciloscopio, ambos tienen aproximadamente el mismo comportamiento y rango de voltaje, por lo que creemos que los cables de la celda de carga se conectan al amplificador operacional, posiblemente para ser reforzados por el procesador . Pensamos que podríamos haber encontrado una señal que podríamos usar en este punto, así que hicimos un circuito de prueba propio usando un LM324 para amortiguar y aumentar la señal para leer desde un Arduino (cualquier intento de conectarse directamente a los cables blancos o al El amplificador operacional hizo que la salida de la báscula leyera un error). Simplemente leemos cuáles fueron los valores del Arduino a través de la impresión en seriey pudieron observar que las señales de los 2 cables blancos eran prácticamente idénticas, mientras que las señales del amplificador operacional también estaban muy cerca, pero mostraban un poco más de diferencia que en los cables blancos . Observamos los valores de salida para un peso dado (por ejemplo, 20 libras) muchas veces, pero no pudimos encontrar ningún patrón o resultado reproducible que pudiera indicar que podríamos usar estas señales directamente para calcular el valor del peso.
  • También creamos otro circuito de prueba usando un INA125 y conectamos los 2 cables blancos como entradas . En el Arduino vimos que el periodo de calibración de la báscula daba un valor de alrededor de 4.6V, lo cual confirmamos con el osciloscopio. Sin embargo, no pudimos hacer uso de esta señal porque cualquier peso de alrededor de 40 libras o más resultó en una lectura de alrededor de 90 mV . No pudimos expandir esto ajustando la ganancia del INA125. Solo redujimos la lectura de voltaje máximo cuando la báscula se estaba calibrando. Es muy posible que no hayamos configurado el INA125 correctamente, pero ni siquiera estábamos seguros de que la señal fuera útil o completa, por lo que nos resistimos a seguir refinando un circuito que puede no tener sentido.

Hemos investigado bastante sobre cómo proceder, pero todo lo que encontramos es para otra configuración (generalmente celdas de carga de 4 hilos) o deja de lado varios pasos importantes. Sabemos que es muy probable que la báscula funcione como un puente de Wheatstone, y en este punto pensamos que debido a que tenemos una celda de 3 cables izquierda y derecha, los 2 cables blancos combinados representan solo la mitad del puente. Si alguien pudiera confirmar que si es posible sería muy útil. La mayoría de los tutoriales que hemos leído asumen que alguien está construyendo un circuito a escala y, por lo tanto, puede definir muchos aspectos de los parámetros del circuito.Los dos métodos más comunes para obtener un peso parecen ser el uso de un algoritmo para convertir el voltaje de las celdas de carga en un peso, mientras que otros parecen implicar cargar y descargar un capacitor y observar el tiempo que lleva lograr el equilibrio entre los dos. . No sabemos cómo determinar qué método está utilizando nuestra báscula.

Estamos bien con la solución más sencilla aquí que mantiene intacto el circuito de escala. La escala es solo una pequeña parte de un proyecto mucho más grande. No tenemos una forma particular de obtener la señal. El medio más fácil y conveniente está bien.

Cualquier ayuda sería muy apreciada sobre cómo proceder. Si mantenemos la báscula intacta, ¿deberíamos centrarnos en las señales analógicas que provienen de las celdas de carga para determinar el peso, o es mejor centrarnos en encontrar la señal producida por el procesador? Si debemos concentrarnos en las celdas de carga, ¿ las celdas de carga están haciendo un puente de Wheatstone completo por sí mismas, o hay algunos componentes en la PCB que también están involucrados en completar el puente? Si deberíamos estar buscando la señal del procesador, ¿cómo la encontramos? ¿Estamos buscando algún tipo de pulso de onda cuadrada o sería algún tipo de valor lineal decreciente? ¿Es posible que nuestra báscula esté utilizando el método de sincronización de un método de balance de carga/descarga de capacitor?

Si desea ver otras imágenes, con gusto se las proporcionaré.

Primer plano del circuito de escala:

Primer plano del circuito de escala

Imagen original de alta resolución en Google Drive


Conexiones de la celda de carga y primer plano del amplificador operacional:

Conexiones de la celda de carga y primer plano del amplificador operacional

Imagen original de alta resolución en Google Drive

Parte posterior de la placa de circuito impreso:Parte trasera de la placa de circuito impreso

Componentes de PCB detrás de la pantalla:Componentes de PCB detrás de la pantalla

Datos trazados desde los dos cables blancos (alrededor de 850 puntos):Datos trazados desde los dos cables blancos (alrededor de 850 puntos)

Vista superior de toda la escala:Vista superior de toda la escala

Muy bien detallado el primer post. Debe incrustar las imágenes en línea para que sigan funcionando cuando el enlace muere. Otra cosa: ¡olvidaste hacer una pregunta real!
¿Podrías hacer esto más corto? Puede omitir con seguridad la información sobre el título que tiene y los pasajes sobre cuántas cosas ha intentado que no funcionaron. Explique lo que está tratando de lograr y qué es exactamente lo que no funciona como esperaba.
Gracias por las respuestas, editaré el post para ser más conciso. No estaba seguro de cuáles eran las expectativas del foro. Además, hice una pregunta, pero es cierto que está enterrada en la larga publicación. voy a revisar
Encuentro los detalles interesantes y muy útiles. No corte partes de su pregunta, solo resalte en negrita la información más útil para que las personas puedan hojear el texto y entenderlo de todos modos.
Vaya... está bien. Revisaré nuevamente para agregar el contenido que acabo de recortar. También mantendré la parte donde aclaré las preguntas que teníamos. ¡Perdón por ir y venir!
¿Puedes pasarnos unas fotos de la parte trasera de la placa?
El color de la pantalla sugiere que podría ser LED en lugar de LCD. El primero podría ser bastante fácil de leer los datos de la pantalla: podría usar las líneas del selector de dígitos como interrupciones y leer los datos de dígitos (presumiblemente 8 líneas, incluido el punto decimal) en el controlador de interrupciones.
De acuerdo con Andrew Morton. Eso parece una pantalla LED multiplexada de 4x7seg, extraiga datos de allí. De esa manera, no tiene que lidiar con el acondicionamiento de señal/ADC/cosas analógicas meticulosas.
Gracias por las respuestas chicos. He agregado varias imágenes para ayudar al análisis. Para Andrew Morton y unit128_t, la báscula es más antigua y el circuito funciona con una batería de 9V. Ha pasado un tiempo, pero si recuerdo, todos los voltajes en el cable de cinta a la pantalla estaban en términos de lógica de 9V en lugar de 3V o 5V. ¿Podría seguir siendo un LED en ese caso? ¿Las entradas están estandarizadas para estos? Todas las entradas a la pantalla provienen del procesador que no etiqueta nada, por lo que necesitaríamos identificar qué pines son selectores y datos a menos que sigan un estándar.
Si los segmentos brillan, es una pantalla LED. Habrá resistencias en algún lugar para limitar la corriente a los LED. Un capítulo útil muestra cómo encontrar el pinout de una pantalla de 7 segmentos de 4 dígitos en YouTube ; sería prudente desoldar primero el cable con cuidado.
Gracias por el seguimiento Andrés. Veré el video y exploraré este enfoque tan pronto como pueda. Publicaré una actualización después de intentar esto. ¡Te lo agradezco!
Trabajaría con las salidas de la celda de carga. La diferencia de voltaje entre los terminales de detección de un puente de Wheatstone desde una celda de carga es pequeña, típicamente 1/1000 del voltaje de excitación que se aplicaría a través de los terminales de excitación. ¿Los terminales blancos podrían ser los terminales de excitación? ¿Y los terminales RRLB RBLR serán los terminales de sentido? Eso tendría más sentido si ve una diferencia de voltaje de 4,5 V en los cables blancos. ¿Estás seguro de que son 2 medios puentes? ¿O es como electronics.stackexchange.com/questions/102164/…

Respuestas (1)

Quizás la forma más sencilla de "duplicar la salida" es recoger las señales que van a la pantalla. Esta es una pantalla multiplexada:

  • Los 4 pines izquierdos en el conector de la pantalla probablemente determinen qué dígito está encendido.
  • Otros 7 pines indican qué segmento está encendido.
  • Lo más probable es que los pines restantes sean los puntos decimales, que probablemente estén cableados para un punto decimal fijo.

Use un microcontrolador (quizás con un Arduino) para escanear lo que se muestra, procese esta información y transmítala a través de WiFi (quizás con un ESP8266)