Valores de resistencia para producir 8 ventanas de voltaje en un pin analógico

0

Tengo 8 Arduino Nanos (a 5 V) enchufados a una PCB y me gustaría que cada uno tenga una identificación para que cada Nano pueda elegir una dirección I2C sin ningún tipo de conflicto, sin tener que programar cada uno de manera diferente primero, y usar solo una. pin analógico. Luego, si cambio cualquiera de los Nanos alrededor, ellos recogerán una dirección basada en el valor de resistencia de su ubicación.

Para esto creo que solo necesito que cada Nano vea la salida de un divisor de voltaje para este propósito, pero los subprocesos que he leído no recomiendan el uso de valores de resistencia, por lo que no estoy seguro de lo que dará precisión Lecturas al tiempo que limita la fuga de corriente. ¿Alguien puede recomendar algunos valores para usar?

Las lecturas no tienen que suceder rápidamente si eso permite usar valores de resistencia más altos.

gracias, Danny

    
pregunta dannydc

4 respuestas

2

Este es un ejemplo de la solución de Marla con una hoja de cálculo simple para mostrar la impedancia de la fuente de entrada Rsrc como la ve el ADC utilizando resistencias de la serie 4.7K.

Sinembargo,sugeriríaquenolohaga.Siseusanresistenciasdel1%,elerrorenelpeordeloscasosenlaentradaessolode+/-5conteos,porloquehaymuchomargen.Perosicadavoltajedesuministro(y,porlotanto,lareferenciadeADC)varíaenunpequeñoporcentaje,elmargensereducirásignificativamente.

SeríamejorusarundivisorparacadaArdinodecadasuministroindividual,demodoquelamediciónratiométricaanulelasdiferenciasenelvoltajedesuministroregulado.

Losvaloresadecuadospuedenserlossiguientes:

Los resistores son valores estándar de E98, excepto 66.03, que está hecho de 95.3K || 215K, por lo que se requerirían un total de 7 valores diferentes de resistencia (incluyendo 10.0K), y un total de 14 resistencias).

Si puedes usar la referencia misma en cada Arduino y alimentar el divisor desde la referencia, entonces puedes usar un simple divisor sin temor. Dejaré eso a los que estén más familiarizados con el Arduino en particular, pero creo que el chip AVR subyacente admite el uso de una referencia externa.

    
respondido por el Spehro Pefhany
2

Puede usar 5 voltios como un voltaje, luego usar GND (0 voltios) para otro (asumiendo que la fuente de alimentación de 5 voltios está regulada).

Entonces solo necesitas 6 voltajes más espaciados equitativamente.

simular este circuito : esquema creado usando CircuitLab

Los voltios de salida se calculan mediante: \ $ Vi * R2 / (R2 + R1) \ $
Donde Vi es el Regulado 5 v.

Incluso puede utilizar el simulador de circuito para medir los voltios de salida.

Cambia R2 para obtener otros valores.

Seleccioné R1 como 100K. Podría usar un R1 de incluso 1 Meg ohms para reducir la corriente consumida.

Agregué el condensador C1 para que su convertidor analógico a digital no arrastre hacia abajo los voltios de salida. El condensador mantiene la tensión constante mientras que el ADC realiza su muestreo y mantiene. (EDIT 2: C1 cambió de 10nf a 100nf)

EDIT 1: nota agregada en muestra y retención, por comentario de RobbhercKV5ROB

Tomado de la hoja de datos para el procesador:

  

El ADC contiene un circuito de muestreo y retención que garantiza que el voltaje de entrada al ADC se mantenga a una   Nivel constante durante la conversión.

EDIT 2: He cambiado el condensador C2 de 10nf a 100nf para tener en cuenta lo siguiente de las especificaciones de ADC:

  

El ADC está optimizado para señales analógicas con una impedancia de salida de aproximadamente 10 k o menos. Si tal   Se utiliza la fuente, el tiempo de muestreo será despreciable. Si se utiliza una fuente con mayor impedancia, el muestreo   el tiempo dependerá de cuánto tiempo necesite la fuente para cargar el capacitor S / H, con lo que puede variar ampliamente. El usuario   Se recomienda usar solo fuentes de baja impedancia con señales que varían lentamente, ya que esto minimiza la   transferencia de carga requerida al condensador S / H.

    
respondido por el Marla
1

Si usa un divisor de voltaje de toma múltiple, entonces al elegir las tolerancias de la fuente y las resistencias lo suficientemente ajustadas y hacer que las resistencias de las resistencias sean lo suficientemente bajas como para que la carga del ADC se vuelva insignificante, puede generar voltajes de salida de precisión arbitraria. .

Un ejemplo es:

Si elige usar resistencias del 1%, entonces la resistencia baja en el peor de los casos sería el 99% de la suma de las resistencias, y la máxima en el peor caso sería el 101% de la suma de las resistencias.

En cuanto a la carga, creo que el peor de los casos es con el ADC (o su S & H) en el tap V4 o V5, pero no confíe en mi palabra al respecto; Hazlo por ti mismo. :)

Una vez que haya hecho todo eso, todo lo que tendrá que hacer para implementar su esquema de direccionamiento es determinar el ancho de la ventana de detección (centrada en los voltajes de toma) que desee, y hacer que su software determine dónde Nano es, basado en su caída entre esos límites.

    
respondido por el EM Fields
0

Imagino un bus divisor de voltaje, algo como esto:

  • Si configura todos los pines analógicos de Nanos '(que se muestran altamente simplificados, para mayor claridad del esquema) (los que están conectados a este bus) para que muestren tan poco frecuente como sea razonable para su aplicación (supongo que 10Hz, si admitido, debería ser adecuado), entonces los capacitores en este bus deberían poder amortiguar suficientemente la muestra y mantener los picos de demanda.

  • Cuanto menor sea la tolerancia (+/- 1% debería funcionar bien) en sus resistencias, con mayor precisión que sus ADC pueden definir su posición de bus (los valores 'ideales' en este circuito serían + 5V, + 4.375V , + 3.75V, + 3.125V, + 2.5V, + 1.825V, + 1.25V & + 0.625V en cada una de las 8 salidas).

  • La experimentación puede indicarle el valor de resistencia más alto que puede usar para sus resistencias, mientras que permite que sus ADC aún resuelvan con precisión su posición en el bus con sus componentes específicos & configuración (es) de software.

respondido por el Robherc KV5ROB

Lea otras preguntas en las etiquetas