Diseñé un pequeño sensor de PCB para mi tesis de maestría con un microcontrolador ATtiny44 . Necesito alrededor de 200 de estas placas para mi aplicación y 16 siempre están conectadas localmente a la placa del controlador. Toda la red se ve así:
Para comunicarme entre el controlador y las placas de sensores escribí mi propio bus de 1 pin (basado en el tiempo). El único problema es que la placa del sensor debe tener una dirección para conocer su ubicación en la red, cuando envío sus datos a la placa del controlador.
Como solo me quedaba 1 pin en el ATtiny, se me ocurrió un circuito DAC basado en puentes que debería generar un voltaje analógico basado en la configuración de cuatro puentes. Como el circuito del sensor utiliza los valores (47, 470, 1k, 3k, 4k7, 10k, 100k y 220k) y quería optimizar para la producción, utilicé los siguientes valores para el DAC (básicamente 100k, 50k, 20k y 10k ) Lo que debería darme un buen valor entre 0 V y 760 mV según la configuración del puente. Exactamente lo que necesitaba leer como voltaje analógico con la referencia interna de 1.1 V del ATtiny. Al arrancar, el ATtiny lee este voltaje y debe conocer su posición.
simular este circuito : esquema creado con CircuitLab
En teoría esto funciona bien. Incluso hice un análisis de Monte Carlo en LTspice para confirmar que no tengo áreas superpuestas, al considerar la tolerancia de las resistencias (todas son 1% BTW). A continuación puede encontrar las imágenes de este análisis.
Ahora produje varios (afortunadamente no 200) de estos tableros y, sin embargo, algunos no pudieron obtener las lecturas correctas en su dirección (especialmente en las regiones de direcciones más altas donde todas las tolerancias entran en juego a la vez). Medí todas las soluciones posibles y finalmente descubrí mi problema. Mi análisis original no incluía la tolerancia de la tensión de alimentación de 5 V, que se genera localmente a partir de 12 V con un MC7805 en cada placa controladora. Según la hoja de datos, el MC7805 tiene un voltaje de salida entre 4.8 y 5.2 V.
Después de descubrir esto, modifiqué el análisis de Monte Carlo. Ahora se ve así:
Como puede ver, hay buenas áreas superpuestas, donde definitivamente no puedo decir que este voltaje solo puede significar esta dirección. Básicamente todas las direcciones que comienzan con no. 8 puede obtener una lectura falsa (con mayores posibilidades de lecturas falsas para direcciones más altas).
No lo haria gustaría agregar valores de resistencia diferentes a los que ya se utilizan en el tablero (en cuanto a la tesis que quiero optimizar para la producción).
No lo haria gustaría agregar una referencia de voltaje (por ejemplo, diodo Zener) para alimentar la red de resistencias DAC.
No puedo modificar la placa del controlador (y usar allí un regulador de voltaje más preciso).
Yo puedo Todavía modificar el diseño / esquema de PCB de la placa del sensor!
¿Cómo puedo asegurarme de obtener lecturas siempre correctas en la dirección (ya sea por programa o cambiando el circuito)?