¿Cómo leer altos voltajes en un microcontrolador?

Quiero leer voltajes altos, como ~ 50 V, usando un microcontrolador. Planeo poner esto como una entrada en la línea A/D del microcontrolador. Pero, por supuesto, no debe tener un voltaje tan alto en la entrada de un microcontrolador o se freirá.

¿Cómo puedo leer voltajes altos? Lo principal es que necesito reducir el voltaje antes de leerlo. ¿Qué debo tener en cuenta al reducir este voltaje?

¡Gracias por adelantado!

Editar: noté en la hoja de datos PIC18 que dice "La impedancia máxima recomendada para fuentes analógicas es de 2.5 kOhms". ¿Cómo afecta esto la forma en que reduzco el voltaje, ya sea con divisores resistivos, etc.?

¿Quieres decir con un microcontrolador? La nota de impedancia sobre las fuentes analógicas probablemente signifique que si las fuentes son superiores a 2,5 K, la entrada en el PIC comenzará a descargarlas. Por lo general, desea que la impedancia de una fuente sea al menos diez veces más pequeña que la impedancia de la carga, de modo que no se vea perturbada por la impedancia de la carga. Esta podría ser una forma indirecta de decir que la entrada proporciona 25K de impedancia. Entonces haríamos que el divisor de voltaje fuera de aproximadamente 2K "alto". Esto significa que fluirán 25 mA. Si eso es inaceptable, puede usar un divisor mucho más resistivo y un búfer de alto Z.
Combinando las respuestas a continuación, he usado un divisor de resistencia para reducir el voltaje y poner la salida de ese divisor de resistencia a través de un amplificador operacional seguidor de voltaje. Este amplificador operacional actúa como un búfer de baja impedancia de salida. De esta manera, puedo usar resistencias de alto valor para limitar la pérdida de energía en esas resistencias.

Respuestas (6)

Un simple divisor de voltaje resistivo logrará lo que desea.

Divisor de voltaje

La fórmula para calcular el voltaje de salida es:

Fórmula

Entonces, si asumimos que su voltaje de entrada varía de 0 a 50 V, debemos dividirlo por 10 para lograr 0 a 5 V. Si también asumimos que queremos cargar el voltaje de entrada con 100kΩ, entonces los cálculos serían algo como:

Vsalida / Vin = R2 / 100kΩ

0,1 = R2 / 100kΩ -> R2 = 10kΩ

R1 = 100kΩ - R2 = 90kΩ

Entonces R1 = 90kΩ y R2 = 10kΩ

Para un ADC que requiera una impedancia de fuente máxima, debe asegurarse de que la impedancia del divisor de voltaje esté por debajo de este nivel. La impedancia en el divisor se puede calcular como R1||R2.

Para <2.5kΩ, lo anterior no cumplirá con este requisito ya que 10kΩ||90kΩ = 9kΩ
Sin embargo, si usamos 9kΩ y 1kΩ, obtenemos 1 / (1/1000 + 1/9000) = 900Ω

Tenga en cuenta que cuanto menor sea la resistencia, mayor será la potencia nominal de las resistencias que necesita. 50V / 1k = 50mA -> 50mA * 45V = 2.25W en la resistencia superior (0.25W en la parte inferior)
En estos casos, es mejor usar un búfer opamp entre un divisor de alta resistencia y el ADC. O use un divisor de 2kΩ y 18kΩ, que no consume tanta energía como la versión de 1k/9k.

2,25 W es mucha energía para desperdiciar haciendo una medición de voltaje.
Sí, estoy de acuerdo: usaría el búfer mencionado (y detallado por Steven) en la mayoría de los casos.
50V/1k. ¿Cómo? ¿No están esas resistencias en serie?
La misma pregunta aquí... ¿cómo 50v/1k? Además, ¿de dónde vino este 45v?
@OliGlaser, ¿ni una palabra sobre el condensador? La entrada ADC, si se maneja con alta resistencia, puede distorsionar la señal. En realidad lo hace. Entonces, lo mínimo es usar un capacitor pequeño en paralelo con una resistencia más baja.
@GregoryKornblum: si tiene una señal de alta impedancia, lo mejor sería un búfer, como se muestra en la respuesta de Stevens. Un condensador no ayudaría, ya que crearía un filtro RC (paso bajo) que atenuaría las frecuencias más altas de la señal. A menos, por supuesto, que esté midiendo en o muy cerca de DC y realmente desee filtrar cualquier cambio a corto plazo.
"muy cerca" depende de los números. Y de todos modos quiere LPF por encima de su frecuencia de interés.

Para agregar a la respuesta de Oli:

ingrese la descripción de la imagen aquí

El diodo Schottky protege la entrada del opamp contra sobrevoltaje en caso de que el voltaje de entrada exceda el máximo especificado de 50 V. Esta es una mejor solución que el zener de 5 V que a menudo se coloca en paralelo con la resistencia de 3 kΩ. El voltaje zener de 5 V requiere varios mA, si la corriente es mucho menor, el voltaje zener también será menor y el diodo puede sujetar la entrada a, por ejemplo, 4 V, o incluso menos.

La resistencia de 27 kΩ permitirá 2 mA, ¿no es eso suficiente para el zener? Podría, pero eso no es lo que conseguirá el zener; la mayor parte de esos 2 mA pasarán a través de la resistencia de 3 kΩ, dejando solo decenas a cientos de µA para el zener, que simplemente es muy poco.

Seleccione un diodo Schottky con una corriente de fuga inversa baja, de modo que la tensión de alimentación de 5 V no influya demasiado en el divisor.

Perdone mi ingenuidad aquí, pero el diodo Schottky que protege el amplificador operacional de un sobrevoltaje en el riel de 50 V, ¿esta condición elevaría el riel de 5 V? Pensando en hacer esto pero preocupado por otros dispositivos en el riel de 5V (PIC, Arduino, etc.)
No si la corriente es pequeña. Obviamente, si conecta una fuente de baja impedancia, el voltaje aumentará. Pero la resistencia de 27k asegura que la corriente sea pequeña.

Para combatir su problema de impedancia de fuente, primero puede usar un divisor de voltaje y luego usar un amplificador operacional estándar. Eso debería tener una impedancia de salida lo suficientemente baja para usted. Aquí hay una nota de aplicación que publiqué ayer sobre el uso de opamps para convertir niveles de voltaje para ADC.

http://www.ti.com/lit/an/slyt173/slyt173.pdf

Para una medida aislada, puede utilizar un transductor de tensión, por ejemplo, LEM's LV-25 o similar.

Pero una forma mucho más fácil si no necesita aislamiento es simplemente usar un divisor de voltaje :

ingrese la descripción de la imagen aquí

Busque algo llamado divisor de resistencia . Usando dos resistencias, puede multiplicar un voltaje por una constante entre 0 y 1. En su caso, desea escalar 50 V hasta el nivel del microcontrolador. Digamos que el micro funciona a 5 V, por lo que desea escalar la entrada en 0,1. Esto podría hacerse con dos resistencias, la primera con 9 veces la resistencia de la segunda. La señal entra en el primero. El otro extremo está conectado a la segunda resistencia y la entrada micro A/D, y el otro extremo de la segunda resistencia está conectado a tierra. Con la relación 9:1 obtienes una ganancia de 0,1 (atenuación de 10).

Probablemente desee que el menor de los dos (la resistencia 1x) sea de alrededor de 10 kΩ, lo que haría que los otros 90 kΩ. Probablemente usaría 100 kΩ para proporcionar algún margen y detección de sobrerrango.

He hecho esto con éxito usando un divisor de voltaje y un diodo Zener polarizado inversamente entre el pin de entrada y tierra (por si acaso).

Un diodo zener proporciona un voltaje de salida fijo y se utiliza para la regulación. ¿Cómo lo usaste para variar el voltaje de entrada? El voltaje de salida del sensor varía entre 0 y 50 V y la entrada de CC debe variar en consecuencia entre 0 y 5 V. El uso de un zener arreglará el voltaje de entrada de adc.
El zener es proteger la entrada ADC contra voltajes más altos de los que puede manejar el uC, por si acaso, como dijo. Digamos que el uC puede manejar 0V-5V, si planea medir 50V, coloca un divisor de 10:1 y un Zener de 5V, por lo que si la entrada supera los 50V, el Zener lo sujeta a 5V.