Selección de voltaje de batería y medición de ADC (OpAmp + uC)

Necesito medir el voltaje de la batería que alimenta mi electrónica.

Vbat suministra un convertidor DC/DC buck-boost y luego va a uC y otros circuitos integrados (3,3 V). Quiero usar pines dorados 3x2 junto con OpAmp para seleccionar el rango de voltaje Vbat: U1 (3,6V Li-Ion) o U2 (7,2 2x Li-Ion) o U3 (12V Pb) que generan 0V a 3,3V en Entrada uC ADC/salida OpAmp.

Eso esta limpio.

Ahora me gustaría informar uC a través de GPIO de alguna manera para saber qué tipo de puente / batería se seleccionó (necesito saber eso en el software). Me imagino algunos OpAmps adicionales conectados a R2/R2'/R2'' pero no tengo idea de cómo hacerlo.

Agradeceré tu ayuda :)

esquemático

simular este circuito : esquema creado con CircuitLab


Edición 1:

El dispositivo se utiliza para medir el pH y la conductividad del agua. Necesita retroalimentación de temperatura para circuitos integrados de pH y conductividad y se comunica a través de GSM. Será alimentado por baterías, por lo que debe ahorrar energía. La mayor parte del tiempo duerme y cada 5 minutos hace las mediciones. GSM está activado (modo de suspensión GSM o modo de suspensión CC/CC) solo para el informe diario o cuando las mediciones están fuera de rango. Cuando duerme, los circuitos integrados secundarios toman: 1mA (pH) + 0,4mA (conductividad) + 1mA (modo de suspensión GSM) o 1uA (corriente de reposo apagada de CC/CC GSM) + ??mA (PT1000 - aún no determinado) + ??mA (uC - aún no determinado pero bajo).

La medición del ADC del voltaje de la batería es necesaria para calcular el porcentaje de capacidad de la batería y el tiempo de vida (basado en estadísticas anteriores), además de la visualización del voltaje sin procesar. Para arriba necesito OpAmp o divisor de voltaje. Es obligatorio seleccionar el tipo de batería (voltaje de entrada) para hacer cálculos más detallados. No quiero hacer computación de software y, si no, averiguar si la batería es de 12 V o 3,6 V, porque es posible conectar cualquier combinación de batería cuyo voltaje total sea de 3 V a 15 V. Por supuesto, es fácil determinar a partir de un divisor de voltaje el tipo de batería: 3,2-4,2 V para un paquete de iones de litio, 6,4-8,4 V para dos paquetes y 10,8-12,6 V. Solo pensando en voz alta :)

Volviendo a merritum: necesito elegir entre OpAmp y divisor de voltaje en función del ahorro de energía. El divisor de voltaje (mega ohmios) consumirá uA igual para la corriente de reposo de OpAmp en modo de apagado. Estoy desconcertado porque al principio pensé que OpAmp ahorraría más energía. ¿Qué os parece chicos y chicas? :)


Edición 2:

Precisión y resolución. El ADC es de STM32F091 y es de 12 bits, por lo que para eliminar el ruido, supongamos que es de 10 bits. El peor de los casos es la batería de iones de litio cuyo voltaje oscila entre 3,4 V y 3,7 V. Eso da 300mV delta. Para representar el porcentaje, necesito un paso de 0,5%, por lo que la resolución es de 1,5 mV por paso. Eso es cuando se usa un divisor de voltaje dedicado.

Cuando use un divisor de voltaje único para todos los tipos de baterías: el voltaje máximo de la batería puede ser de aproximadamente 13 V (para el plomo), por lo que necesito escalarlo a 3,3 V => div = 4. Cuando use un solo Li-Ion, obtendré los valores de este divisor de 925mV a 850mV por lo que el delta es de 75mV. La resolución necesaria es 75mV/200 = 0,375mV. El paso para 0V-3.3V 10bit es 3.2mV por lo que es 10 veces demasiado pequeño. Incluso si uso todos los 12 bits, el paso es demasiado pequeño: 0,8 mV.

¿Creo que necesito un divisor de voltaje dedicado para el tipo de batería o nuevamente OpAmp? ¿Cuál sería más ahorrador de energía?

Tengo una sugerencia diferente, en lugar de pines dorados en la retroalimentación opamp, use un multiplexor como 74HC4051. Luego programe las entradas del 74HC4051 con pines dorados (solo necesita 2 pines dorados porque con 2 bits puede seleccionar 4 estados). Los mismos 2 bits que puede alimentar directamente al uC. Sin embargo, tenga en cuenta que el multiplexor tiene cierta resistencia en serie, por lo que haría que los valores de R1 y R2 estuvieran en el rango de xx kOhms para que la resistencia en serie fuera insignificante.
Creo que un simple divisor de voltaje debería poder hacer el trabajo.
Se da cuenta de que el amplificador operacional dibujado se está invirtiendo y que una entrada +V producirá una salida "bajo tierra".
@NickAlexeev: yo también lo creo, luego cambie diferentes resistencias en la parte de conexión a tierra del divisor usando pines uC como desagüe abierto hacia abajo. Necesita vigilar la sobretensión o usar un FET barato.
@FakeMoustache: ¡+1 buena! :)
@Nick Alexeev: actualicé mi publicación
@Andy alias: ¡Gracias! No soy bueno en analógico y OpAmps. El opamp no inversor tiene una ganancia de 1+ (R2/R1) y necesito una ganancia por debajo de 1. ¿Cómo se supone que debo obtener de 0 a V+ en la salida con una ganancia de <1? ¿Inversor de voltaje OpAmp en la salida?
@ChrisR: ¿qué pasa con zenner en la salida del divisor de voltaje para reducir la sobretensión?
@killdaclick comience por decidir cuánta precisión y resolución necesita en su medición y díganos qué necesita en su pregunta. A continuación, explique qué dispositivo ADC está utilizando, entonces puedo responder mejor. Obtener una atenuación es solo un divisor de resistencia. La interfaz de esto con un ADC puede requerir valores bajos para la precisión. Pero no entiendo este detalle porque no lo has dicho. Mi instinto me dice que no necesita un amplificador operacional, pero debe proporcionar la información.
@Andy alias: actualicé mi publicación (edit2)
@killdaclick: la forma habitual de proteger es usar schottkys para suministrar rieles. A menudo ya integrado en opamp. La entrada -v opamp nunca se desvía de la entrada +ve en todos los casos excepto en casos catastróficos. Simular en LTSpice.
Simplemente use un PGA y contrólelo con el uC, luego ajuste la ganancia de acuerdo con la medida que obtuvo. Luego, si quieres, interrumpe la alimentación del circuito de acondicionamiento de la batería para que puedas encenderlo y apagarlo desde la uC.

Respuestas (3)

Dado que los puentes deben configurarse manualmente, una solución simple podría ser usar un segundo puente que indique la ganancia seleccionada al microcontrolador. Entonces, el usuario debe configurar dos puentes en posiciones idénticas. O simplemente use un interruptor giratorio con dos polos y tres posiciones (por ejemplo: SS-10-23NPE ).

Un enfoque completamente diferente sería implementar una función de rango automático, donde el microcontrolador selecciona el factor de ganancia automáticamente. Simplemente use un pequeño interruptor analógico que será controlado por el microcontrolador. Ahora es posible obtener automáticamente la señal de entrada: comience con el factor de ganancia más bajo y avance solo un paso antes de que ocurra la saturación de la entrada ADC. Si es necesario, proteja la entrada ADC de la sobretensión: simplemente agregue un diodo Zehner o TVS (importante: baja corriente de fuga) a la salida del amplificador.

Iré con el multiplexor 74HC4051 con 8 resistencias en el divisor respaldado con diodo zener y rango automático de software para ADC. ¡Gracias! :)

El voltaje máximo para medir puede ser de 13 V y si tiene un ADC de 10 bits, puede arreglarlo, con un divisor de resistencia adecuado, para dar ~ 13 mV por bit.

¿Cuánta precisión necesitará al medir el voltaje? ¿No son suficientes 13 mV?

De todos modos, esta es la forma más sencilla de hacerlo y no necesita preocuparse por el enlace que ha seleccionado.

Iv actualizó mi publicación. Creo que optaré por un divisor de voltaje único porque la resolución de la medición no es el problema. Necesito saber mas o menos cual es el porcentaje de capacidad de la bateria. El uso de Li-Ion en lugar de Pb degradará la resolución, pero es aceptable.
En primer lugar, el ruido ayuda (se llama interpolación). Funciona moviendo la señal aleatoriamente un poco y puede obtener una resolución adicional de un bit al promediar 4 muestras. Entonces, debe usar 12 bits y en un rango de (digamos) 15V, un LSb = 3.66 mV. ¿Estás diciendo que es demasiado torpe para lo que estás tratando de lograr? La intuición me dice que la resolución de 3,66 mV debería estar bien, pero tal vez pueda vincular un documento o sitio web que diga lo contrario.
por favor revise mi Edit2. 3.66mV sería suficiente si usara OpAmp o divisor de voltaje con puentes para elegir el tipo de batería apropiado (ajuste de voltaje). Si voy a usar un solo OpAmp/VD para todos los tipos de baterías, entonces no es suficiente -> mi edición 2. Indique cuál usar: ¿divisor de voltaje con alta resistencia u opamp considerando el ahorro de energía? ¿Alguna trampa? Si no, voy con divisor de voltaje + multiplexor analógico :)
Tienes que pensar en los problemas más amplios aquí. Debe reducir la entrada y para obtener una precisión de 4 mV, necesitará un divisor de potencial adaptado a la temperatura que tenga una precisión radiométrica de 0,025% o mejor. Cualquier otra cosa degrada toda la idea, por lo que recomendaría un solo divisor de alta precisión. Si comienza a usar amplificadores operacionales u otros divisores de resistencia, seguramente tendrá problemas. Sí, puede encontrar un divisor de ollas muy estable a la temperatura, pero ahora es posible que desee usar un interruptor analógico para modificarlo y esto le causará importantes problemas de estabilidad...
En base a esto y sin conocer su presupuesto, equipo o habilidades, solo puedo recomendar un único divisor de potencial preciso y le costará ~ $ 10 obtener la precisión que desea. De todos modos, necesitará un separador de ollas, así que, ¿su diseño está presupuestado para cubrir este gasto? Si no puede manejar el costo de varios separadores de macetas de calidad, debe degradar sus requisitos.

Reemplace su mcu con dispositivos STM32F2 o F3 con amplificadores operacionales incorporados.

Algunos son compatibles con pines y tienen PGA interna, puede eliminar la mayoría o la totalidad de los amplificadores operacionales externos y los circuitos asociados del diseño.

ST tiene unas notas en las que el sobremuestreo y el ruido producen dos bits ADICIONALES (es decir, una precisión efectiva de 14 bits).

http://www.st.com/web/en/resource/technical/document/application_note/CD00211314.pdf

http://www.st.com/web/en/resource/technical/document/application_note/CD00004444.pdf

He probado esto y funciona, especialmente en la medición de CC de baja impedancia.

El dispositivo F373 también tiene ADC de 16 bits, pero esto realmente sería una exageración.

También puede reemplazar su opamp con un PGA MCP6S21/2/6/8 o MCP6S91/2/3.

Su precisión, calibración, prueba, PCB y fabricación serán más simples y costarán menos.

El consumo de energía es mínimo, ya que puede sincronizar todo el dispositivo a una velocidad muy baja (32 KHz). También pondría a dormir todo el dispositivo, o tal vez apagaría el análogo durante largos períodos entre mediciones, dependiendo de qué más necesite hacer.

Conservar energía de esta manera es un desafío con amplificadores operacionales externos.

Para las únicas, las placas Nucleo cuestan < $ 10, Discovery un poco más.