Reducción de voltaje lineal [duplicado]

Posible duplicado:
¿Cómo puedo usar una entrada de 12 V en un pin Arduino digital?

Quiero medir el voltaje de la batería de un automóvil (el rango es entre 10-13v). Pero mi AVR acepta entradas analógicas de 0-5v. ¿Cómo puedo hacer que el voltaje de entrada sea más bajo para poder medir la diferencia de voltaje de 3v (10-13v) en alrededor de 1024 pasos (0-5v desde el microcontrolador)?

Básicamente, necesito un convertidor reductor de voltaje que funcione linealmente, los que conozco solo dan un voltaje fijo (5-20v se convierte a 5v siempre como el 7805).

No quiero usar un divisor de voltaje porque creo que nunca podré obtener esa resolución de 3v.

Respuestas (3)

Puede usar un divisor de resistencia simple para reducir la escala de 0..13 V a 0..5 V.

V o tu t = R 2 R 1 + R 2 V i norte

para que por R 1 = 16 kΩ y R 2 = 10 kΩ obtienes 0..5 V de salida por 0..13 V de entrada.

Esa es la solución más simple, pero asignará los 10..13 V a 3.85..5 V en lugar de a 0..5 V. La pregunta es: ¿realmente necesita el rango completo del ADC? Un ADC de 10 bits le brinda una resolución de 13 mV para un rango de entrada de 13 V. ¿Realmente quieres saber el voltaje de la batería con una precisión de 3 mV?

De todos modos, si desea utilizar el rango completo del ADC, la solución es un amplificador de diferencia , que resta una compensación de 10 V del voltaje de entrada:

si R 1 = R 2 y R F = R gramo entonces

V o tu t = R F R 1 ( V 2 V 1 )

Aplica un voltaje de referencia de 10 V a V 1 y conecte la batería a V 2 . Seleccione 25 kΩ para R F y R gramo , y 15 kΩ para R 1 y R 2 , y obtendrá 0..5 V de salida por 10..13 V de entrada.

Para usar el rango completo hasta 0 V de salida, necesitará un amplificador operacional RRIO (E/S de riel a riel).


Nota:
No puede usar la solución de optoacoplador de la pregunta a la que me refiero aquí , ya que es solo digital. Satura la salida si el voltaje de entrada está presente y de ninguna manera es lineal. Si desea que la entrada esté aislada de la salida, puede usar un optoacoplador lineal , como el IL300 al que me refiero en esta respuesta .

Si su requerimiento pudiera relajarse un poco, para traducir la lectura de ADC de rango completo a 9-13 voltios en lugar de 10-13, donde sabe que su batería no cae por debajo de 10V, esto funcionaría mejor: El rango de ADC por debajo de 10V no debe usarse , pero el amplificador de diferencia sugerido por @stevenvh funcionaría de manera confiable hasta la línea de 10 voltios.

Se podría usar un IC de referencia de voltaje o una combinación de zeners para la referencia de 9v (o 9.5v si insiste), ya que una referencia de 10V alimentada por la batería probablemente se volvería inestable o fallaría cuando el riel de alimentación realmente alcance los 10v.

De manera similar, podría ser prudente permitir un rango ligeramente superior a los 13 voltios (asignado a 0-5 V para el ADC): durante la carga o los cambios de temperatura, la batería podría alcanzar un voltaje más alto que su valor nominal superior.

¿Necesita una resolución de 10 bits o una precisión de 10 bits?

Para obtener una precisión de 10 bits, la caída de 10 V debe tener una precisión de >> 0,1 %, lo cual es difícil de lograr. Las resistencias del 0,1 % no son tan difíciles de conseguir, pero una vez que calcule la precisión de un TL431 o los diversos errores de un amplificador operacional (y la referencia de 10 V) en la ecuación, probablemente terminará con un 1 % en lugar de un 0,1 %. Y no olvide que probablemente esté midiendo contra su suministro de 5V como referencia, que probablemente sea un 7805 que tiene solo un 5% de precisión.

Si OTOH solo necesita una resolución de 10 bits, se podría usar un zener 'programable' TL431 para restar 10 V de su entrada. O vaya con el opamp summer de steven, pero para eso necesitará una referencia estable de 10V.