16 votos

selección de dirección de 4 bits de bus via pin entrada analógica: simulación de Monte Carlo muestra los valores de dirección traslapados

He diseñado un pequeño sensor PCB para mi tesis de maestría con un ATtiny44 microcontrolador. Necesito unos 200 de estos consejos para mi aplicación y 16 son siempre conectado localmente a la placa controladora. El conjunto de la red se parece a esto:

Enter image description here

Para la comunicación entre el controlador y el sensor de tablas escribí mi propia 1 clavija de bus (timing). El único problema es la placa del sensor debe tener una dirección para conocer su ubicación en la red, cuando me envíen sus datos a la tarjeta de control.

Como yo sólo tenía 1 pin de la izquierda en el ATtiny me ocurrió con un puente basado en CAD circuito que debe generar un voltaje analógico basado en la configuración de cuatro puentes. Como el sensor de circuitos utiliza los valores (47, 470, 1k, 3k, 4k7, 10k, 100k, y 220k) y yo quería para optimizar la producción que utiliza los siguientes valores para el DAC (básicamente 100k, 50k, 20k, y 10k). Que debería darme un buen valor entre 0 V y 760 mV basado en la configuración del puente. Exactamente lo que necesitaba para que se lea como un voltaje analógico con el interno 1.1 V referencia de la ATtiny. En el arranque de la ATtiny lee esta tensión y deben saber su posición.

schematic

simular este circuito – Esquema creado mediante CircuitLab

En teoría, esto funciona bien. Incluso me hizo un análisis de Monte Carlo en LTspice para confirmar que no se superponen las áreas, considerando la tolerancia de las resistencias (todos son del 1% IVA). A continuación puedes encontrar las fotos de este análisis.

Enter image description here Enter image description here

Ahora me produjo varios (por suerte no 200) de estas tablas y sin embargo, algunos no se pudo obtener lecturas correctas en su dirección (especialmente en la dirección más alta de las regiones donde todas las tolerancias venir a jugar a la vez). He medido todas las posibles soluciones y finalmente resuelto mi problema. Original de mi análisis no se incluyen los de la tolerancia de los 5 V de tensión de alimentación, la cual es generada localmente a partir de 12 V con una MC7805 en cada placa controladora. Por hoja de datos, el MC7805 tiene un voltaje de salida entre 4.8 y 5.2 V.

Después me di cuenta de esto he modificado el análisis de Monte Carlo. Ahora se parece a esto:

Enter image description here Enter image description here

Como se puede ver no son agradables áreas de superposición, donde no puedo decir definitivamente esta tensión sólo puede significar esta dirección. Básicamente todas las direcciones que comienzan con ninguna. 8 puede obtener una lectura falsa (con mayores posibilidades de lecturas falsas para mayor direcciones).

Yo no se como añadir diferentes valores de la resistencia a la ya utilizada en el tablero (como para la tesis que quiero para optimizar la producción).

Yo no se como agregar una referencia de voltaje (e.g, diodo Zener) para alimentar el DAC de la red de resistores.

Yo no modificar la tarjeta de control (y a utilizar de una manera más precisa regulador de voltaje).

Yo puede modificar el diseño de PCB / esquemático de la placa del sensor!

Cómo puedo asegurarme de que para obtener lecturas correctas en la dirección (ya sea por el programa o cambiando el circuito)?

19voto

Mark0978 Puntos 495

De acuerdo a sus simulaciones, su esquema de direccionamiento funciona bien siempre y cuando sólo las incertidumbres en los valores de resistencia son considerados. Es la incertidumbre sobre el voltaje, lo que hace que ésta falle.

Mi consejo es, para anular las fluctuaciones en VCC utilizando como referencia para el ADC. Usted puede hacerlo mediante la programación de la REFS bits en la ADMUX registro, como se explica en la hoja de datos:

enter image description here

Una vez que cambie a VCC como una tensión de referencia para el ADC, usted no será la medición de la tensión, sino más bien como una relación entre los valores de la resistencia, y aquellos que son precisos para el 1%. No se requiere ningún cambio en el esquema (aunque puede que desee aumentar el valor de la R7 para obtener sus medidas en el medio de ADC del rango de conversión), sólo el firmware de Attiny tiene que ser actualizada.

Si estamos dispuestos a renovar la placa del sensor, puede reemplazar su esquema por un R-2R de la escalera como Cano64 se sugiere:

schematic

simular este circuito – Esquema creado mediante CircuitLab

De esta manera se optimiza la resolución haciendo todos los pasos en la escalera de la igualdad. 1% resistencias son lo suficientemente precisas para construir monótona de las escaleras de hasta 5 bits.

3voto

Andreas Puntos 1

Tenía que resolver un problema similar una vez. Necesitaba conectar 4 botones a un pin analógico en arduino, sin embargo, tenía que reconocer simultánea prensas (todas las combinaciones). Se me ocurrió el mismo circuito como usted, a continuación, escribí un programa para buscar todas las posibles valor de la resistencia de las combinaciones, de modo que los valores finales cuando se pulsan los botones, son tan separados como sea posible. ¿Adivinen qué? Estamos jodidos, no se puede hacer. Eso es todo, que tengas un buen día.

Me enteré de que el óptimo valores de resistencia para los interruptores están cerca de R, 2R, 4R, 8R y la parte inferior del divisor tiene un valor de R. el circuito ya está próxima a la óptima, sólo tienes que sustituir R7 con resistor de 10k.

Pero hay una buena noticia para usted. Ya que sólo necesita para establecer una dirección (no operar el interruptor mientras el dispositivo se está ejecutando) recomiendo el uso de interruptores SPDT y R2R escalera en su lugar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X