¿Cómo muestro una señal analógica de -2 V a +2 V con un microcontrolador PIC?

9

Estoy utilizando un micro PIC con un ADC de 10 bits para tomar lecturas de una señal analógica con una frecuencia inferior a 300 hz. Sin embargo, esa señal analógica está en el rango de -2 V y +2 V. ¿Cómo puedo condicionar la señal para que entre en un rango utilizable (asumiendo que la entrada al ADC tiene que ser positiva)? Tampoco tengo un positivo y fuente de alimentación negativa.

    
pregunta user2200

6 respuestas

14
  

nota importante:
  esta respuesta se publicó para resolver el problema para la entrada de -20V a + 20V , porque eso fue lo que se pidió. Es un método inteligente, pero no funciona si el límite de voltaje de entrada se mantiene entre los rieles.

Tendrá que escalar el voltaje con un divisor de resistencia para obtener un voltaje entre -2.5V y + 2.5V, y agregar 2.5V. (Estoy suponiendo una fuente de alimentación de 5V para su PIC).

El siguiente cálculo parece largo, pero eso es solo porque explico cada paso en detalle. En realidad, es tan fácil que puedes hacerlo en tu cabeza en poco tiempo.

Primero esto:

  

R1 es la resistencia entre \ $ V_ {IN} \ $ y \ $ V_ {OUT} \ $,
  R2 es la resistencia entre \ $ + 5V \ $ y \ $ V_ {OUT} \ $, y
  R3 es la resistencia entre \ $ V_ {OUT} \ $ y \ $ GND \ $.

¿Cuántas incógnitas tenemos? Tres, R1, R2 y R3. No del todo, podemos elegir un valor libremente, y los otros dos dependen de ese valor. Vamos a elegir R3 = 1k. La forma matemática de encontrar los otros valores es crear un conjunto de dos ecuaciones simultáneas a partir de dos pares (\ $ V_ {IN} \ $, \ $ V_ {OUT} \ $) y resolver los valores de resistencia desconocidos. Cualquier par (\ $ V_ {IN} \ $, \ $ V_ {OUT} \ $) servirá, pero veremos que podemos simplificar tremendamente las cosas al elegir cuidadosamente esos pares, es decir, los valores extremos: (\ $ + 20V \ $, \ $ + 5V \ $) y (\ $ - 20V \ $, \ $ 0V \ $).

Primer caso: \ $ V_ {IN} = + 20V \ $, \ $ V_ {OUT} = + 5V \ $
Tenga en cuenta que (¡y esta es la clave de la solución!) Ambos extremos de R2 ven \ $ + 5V \ $, por lo que no hay caída de voltaje, y por lo tanto no hay corriente a través de R2. Eso significa que \ $ I_ {R1} \ $ tiene que ser lo mismo que \ $ I_ {R3} \ $ (KCL).
\ $ I_ {R3} = \ dfrac {+ 5V-0V} {1k \ Omega} = 5mA = I_ {R1} \ $.
Conocemos la corriente a través de R1 y también el voltaje sobre ella, por lo que podemos calcular su resistencia: \ $ R1 = \ dfrac {+ 20V-5V} {5mA} = 3k \ Omega \ $.
Encontró nuestro primer desconocido!

Segundo caso: \ $ V_ {IN} = -20V \ $, \ $ V_ {OUT} = 0V \ $
Lo mismo que con R2 sucede ahora con R3: no hay caída de voltaje, por lo que no hay corriente. De nuevo según KCL, ahora \ $ I_ {R1} \ $ = \ $ I_ {R2} \ $.
\ $ I_ {R1} = \ dfrac {-20V-0V} {3k \ Omega} = 6.67mA = I_ {R2} \ $.
Conocemos la corriente a través de R2 y también el voltaje sobre ella, por lo que podemos calcular su resistencia: \ $ R2 = \ dfrac {+ 5V-0V} {6.67mA} = 0.75k \ Omega \ $.
Encontró nuestro segundo desconocido!

  

Entonces, una solución es: \ $ R1 = 3k \ Omega, R2 = 0.75k \ Omega, R3 = 1k \ Omega \ $.

Como dije, es solo la proporción entre estos valores, lo que es importante, así que también podría elegir \ $ R1 = 12k \ Omega, R2 = 3k \ Omega, R3 = 4k \ Omega \ $.
Podemos comparar esta solución con otro par (\ $ V_ {IN} \ $, \ $ V_ {OUT} \ $), por ejemplo. (\ $ 0V \ $, \ $ 2.5V \ $). R1 y R3 ahora son paralelos (ambos tienen + 2.5V-0V sobre ellos, así que cuando calculamos su valor combinado encontramos \ $ 0.75k \ Omega \ $, exactamente el valor de R2, y el valor que necesitábamos para obtener \ $ + 2.5V \ $ desde \ $ + 5V \ $! Así que nuestra solución es correcta. [El sello de control de calidad va aquí]

Lo último que debe hacer es conectar \ $ V_ {OUT} \ $ al ADC del PIC. Los ADC a menudo tienen resistencias de entrada bastante bajas, por lo que esto puede perturbar nuestro equilibrio cuidadosamente calculado. Sin embargo, no hay nada de qué preocuparse, simplemente tenemos que aumentar R3 para que \ $ R3 // R_ {ADC} = 1k \ Omega \ $. Supongamos que \ $ R_ {ADC} = 5k \ Omega \ $, luego \ $ \ dfrac {1} {1k \ Omega} = \ dfrac {1} {R3} + \ dfrac {1} {R_ {ADC}} = \ dfrac {1} {R3} + \ dfrac {1} {5k \ Omega} \ $ De esto encontramos \ $ R3 = 1.25k \ Omega \ $.

editar
OK, eso fue inteligente y muy simple, incluso si lo digo yo mismo. ;-) Pero, ¿por qué no funcionaría si el voltaje de entrada se mantiene entre los rieles? En las situaciones anteriores siempre tuvimos una resistencia que no fluía a través de ella, de modo que, siguiendo a KCL, la corriente que entraba en el nodo \ $ V_ {OUT} \ $ a través de una resistencia dejaría a través de la otra. Eso significaba que un voltaje tenía que ser más alto que \ $ V_ {OUT} \ $, y el otro más bajo. Si ambos voltajes son más bajos, solo fluirá la corriente fuera de ese nodo, y KCL lo prohíbe.

    
respondido por el stevenvh
6

La forma más fácil es usar un "divisor de resistencia".

No dijiste a qué voltaje está funcionando este PIC y, por lo tanto, el rango de entrada A / D es, así que vamos a usar 5V para el ejemplo. Su rango de voltaje de entrada es de 40 V y la salida de 5 V, por lo que necesita algo que se atenúe al menos en 8. También necesita que el resultado se centre en 1/2 Vdd, que es de 2,5 V, mientras que su voltaje de entrada se centra en 0 V .

Esto se puede lograr con 3 resistencias. Un extremo de las tres resistencias están conectados entre sí y al pin de entrada PIC A / D. El otro extremo de R1 va a la señal de entrada, R2 va a Vdd y R3 va a tierra. El divisor de resistencia está formado por el R1 y la combinación paralela de R2 y R3. Puede ajustar R2 y R3 para centrar el rango resultante en 2.5V, pero para simplificar esto, viviremos con un poco de asimetría y atenuaremos un poco más para asegurarnos de que ambos extremos estén limitados al rango Vss-Vdd.

Digamos que el PIC quiere que la señal analógica tenga una impedancia de 10 kΩ o menos. De nuevo, para simplificar, hagamos R2 y R3 20 kΩ. La impedancia que alimenta el PIC no será más que la combinación paralela de esos, que es de 10 kΩ. Para obtener una atenuación de 8, R1 debe ser 7 veces R2 // R3, que es de 70 kΩ. Sin embargo, dado que el resultado no será exactamente simétrico, debemos atenuar un poco más para asegurarnos de que -20V no genere menos de 0V en el PIC. Eso realmente requiere una atenuación de 9, por lo que R1 debe ser al menos 8 veces R2 // R3, que es 80 kΩ. El valor estándar de 82 kΩ permitirá cierta inclinación y margen, pero aún así obtendrá la mayor parte del rango A / D para medir la señal original.

Añadido:

Aquí es un ejemplo de cómo encontrar la solución exacta para un problema similar. Esto no tiene asimetría y tiene una impedancia de salida específica específica. Esta forma de solución siempre se puede utilizar cuando el rango A / D está totalmente dentro del rango de voltaje de entrada.

    
respondido por el Olin Lathrop
2

Este es el circuito estándar para eso. Necesita escalar los valores de resistencia para su impedancia requerida.

    
respondido por el Leon Heller
2

Si la señal no es CC, o si una referencia de CC no es importante, la señal se puede acoplar capacitivamente a la entrada del ADC.

Alternativamente, si su terreno para el PIC está flotando, puede vincular su tierra de señal a 1/2 VDD del PIC.

    
respondido por el W5VO
2

El siguiente circuito debería hacer el trabajo:

3.3V
 +
 |
 \
 / 1k
 \
 |
 +-- ADC input
 |
 \
 /  1k
 \
 |
 +-- Signal input (-2V to +2V)

Es un divisor potencial. A -2V, la salida será 0.65V; a + 2V, 2.65V.

Todo el ruido en el riel de 3.3V se transferirá a la entrada, así que use una buena referencia de voltaje para reducir este problema.

Esto también funcionará con otros suministros, pero la compensación cambiará.

    
respondido por el Thomas O
1

El sumador de voltaje de Thomas con dos resistencias idénticas es realmente simple, pero tiene la desventaja de que se reduce el rango de entrada al ADC, lo que significa que el ruido tendrá una mayor influencia. También el límite inferior está a 0.65V. Si su microcontrolador no tiene una entrada \ $ V_ {ADCREF -} \ $ (la mayoría de los controladores no la tienen), esa parte del rango de entrada no se utilizará. Esto es fácil de solucionar: elija la relación de resistencia de modo que \ $ V_ {ADC} \ $ sea 0V si la entrada es -2V. Para un \ $ V_ {DD} \ $ de 5V, esto significa que la resistencia de entrada debe ser 2/5 de la resistencia de pull-up. A 2V, la entrada \ $ V_ {ADC} \ $ será de 2.86V. Establezca \ $ V_ {ADCREF +} \ $ en este nivel, y de -2V a + 2V cubrirá el rango completo de ADC.

Si su \ $ V_ {DD} \ $ = 3.3V, la resistencia de entrada debe ser del 61% (\ $ \ frac {2V} {3.3V} \ $) del pull-up. A + 2V en \ $ V_ {ADC} \ $ será 2.49V.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas