Circuito disipador de corriente constante para simulación de carga de batería, consumo de corriente en microamperios

Necesito crear un circuito de sumidero de corriente constante de modo que pueda simular el consumo de corriente de una batería y analizar el comportamiento de la batería. Probaré una batería de 3,1 V con una capacidad de 12 mAh. Necesito extraer corriente en varios patrones (es decir, ciclos repetidos de 15 minutos 1,5 microamperios, luego 5 segundos 7 mA, 30 minutos 1,0 microamperios, luego 3 segundos 10 mA, etc.).

El voltaje de la batería permanece en 3,1 V cuando se consume una corriente de microamperios, pero el voltaje cae cuando se consumen 7 mA. Esta caída de voltaje es lo que necesito analizar. Por lo tanto, necesito un circuito que asegure que se consuma una corriente constante independientemente de a qué baje el voltaje de la batería (la caída esperada es de entre 2,4 V y 1,8 V después de ciclos repetidos).

Esto es lo que puedo encontrar en línea (imagen del esquema a continuación): http://www.ti.com/lit/an/slaa868/slaa868.pdf

Sin embargo, tengo dificultades para encontrar las piezas adecuadas y configurar las corrientes de resistencia adecuadas para lograr el rango de sumidero actual de 1.5uA a 7mA. ¿Alguien puede indicarme la dirección correcta para MOSFET y amplificadores operacionales apropiados que debería usar aquí? El circuito debe ser muy preciso, no puedo pensar que estoy dibujando 1.5uA pero en realidad estoy dibujando 30uA o 30uA.

También planeo medir el voltaje de la batería mientras ejecuto diferentes pruebas usando un Arduino y controlo el DAC con un Arduino. Encontré este DAC que debería ser bastante fácil de usar con Arduino: https://cdn-shop.adafruit.com/datasheets/mcp4725.pdf . Salida máxima de 2,7-5,5 V.

ingrese la descripción de la imagen aquí

Su rango dinámico es bastante grande, ¿ha considerado usar dos configuraciones opamp-mosfet, una para el microamperio y otra para el rango de miliamperios?
@anrieff Sí, creo que este podría ser el camino que debo seguir. Creo que podría poner dos de los circuitos anteriores en paralelo, ¿sí? Todavía no sé a qué valores configurar las resistencias y qué FET usar si hago esta configuración. Soy un principiante en electrónica, ingeniero de software de oficio.

Respuestas (3)

EDITAR : siguiendo la excelente sugerencia de @dunaden, actualicé el circuito a continuación para usar MOSFET de lado bajo.

Sugiero el siguiente circuito (perdón por no usar la funcionalidad de dibujo esquemático integrado de CircuitLab, usé LTspice para simularlo y soy demasiado perezoso para volver a dibujarlo aquí):

Circuito propuesto

Descripción de alto nivel del circuito.

Este circuito es una fuente de corriente flotante con dos rangos diferentes. Debido a que 7 mA/1.5 µA = 4667, excede el rango de 12 bits de su DAC de 2 12 = 4096, por lo que lo dividí en dos rangos aproximadamente iguales (al menos tanto como permitiría la serie E24 de valores de resistencia).

V1 es su batería y V2 es su DAC para configurar la corriente deseada. V3 y V4 son señales digitales de su microcontrolador, que seleccionan el rango de corriente deseado: cuando V3 (la señal a la puerta de M1) es alta y V4 (la señal a la puerta de M2) es baja, se selecciona el rango de corriente baja; cuando V3 es bajo y V4 es alto, se selecciona el rango de corriente alta.

Como funciona el circuito

Así es como funciona el circuito: ingresa un voltaje a través del DAC a la entrada no inversora del amplificador operacional, y mediante la acción del amplificador operacional, ese voltaje se replica en la entrada inversora (la retroalimentación negativa asegura que el amplificador operacional genera cualquier voltaje que sea necesario para la base del BJT para cumplir esta condición). Este voltaje se aplica a R1 o R2, según el rango seleccionado, de acuerdo con las señales digitales aplicadas a los MOSFET, como se explicó anteriormente.

Para el rango de alta corriente, se debe elegir R2 de modo que 1 V en la entrada produzca al menos los 7 mA máximos solicitados; por lo tanto, 1 V/7 mA = 143 Ω, pero lo he redondeado a 120 Ω para asegurarme de que 7 mA sea realmente alcanzable. R1, por otro lado, se elige de modo que 1 V produzca una corriente de aproximadamente 100 µA, por lo tanto, 1 V/100 µA = 10 kΩ. Para el mínimo requerido de 1,5 µA, deberá aplicar 10 kΩ x 1,5 µA = 15 mV en la entrada usando el DAC. Incluso si el voltaje de suministro del DAC es de 5 V, debería tener suficiente margen para generar una señal bastante precisa de 15 mV.

Quizás se pregunte por qué asumo una salida máxima de 1 V del DAC, incluso cuando asumo un suministro de 5 V. Resulta que su batería está conectada al colector del BJT mientras que el voltaje del DAC se replica en el emisor del BJT. El problema es que los BJT necesitan un voltaje mínimo VCE (sat) para funcionar correctamente. Para una variedad de jardín 2N2222 con corriente de colector de 150 mA, una de las hojas de datos que he visto especifica VCE (sat) = 0,3 V. Dado que su batería puede descargarse hasta 1,8 V, no debe exceder aproximadamente 1,8 - 0,3 = 1,5 V en el emisor, aunque he dado algo de margen al limitar el voltaje DAC a 1 V; en la práctica, probablemente podrá ajustar el circuito para usar 1.5 V, pero eso debe verificarse en la práctica. Una vez que hagas eso, puedes recalcular las resistencias.

Tiene cierto margen de maniobra en la elección de R1; tal vez le gustaría elegir un valor un poco más alto, por lo que no necesita un voltaje tan bajo para obtener la salida mínima de 1,5 µA, por ejemplo, porque tiene miedo de los errores de DAC. Tenga en cuenta, sin embargo, que aumentar R1 significa que necesitará voltajes más bajos para alcanzar la parte inferior del rango de alta corriente, por lo que es una compensación. Ahora, si solo necesita, digamos, corrientes en el rango de 1,5 µA a 10 µA, o en el rango de 1 mA a 7 mA, y no le importa el rango de 10 µA a 1 mA, entonces puede usar valores más bajos de manera segura para R1: en este ejemplo, elegiría 100 kΩ para que 1 V del DAC le proporcione 10 µA.

Programando el firmware

En su firmware Arduino, mire la corriente que necesita dibujar. Si está en el rango de 1.5 µA a 100 µA, entonces programe un pin digital para generar una salida lógica alta a la puerta de M1 y una lógica baja a la puerta de M2, y luego calcule el voltaje DAC, VDAC, como una función de la corriente deseada I , como VDAC(I) = 10 kΩ x I. Si la corriente de salida deseada está en el rango de 100 µA a 7 mA, envíe una lógica baja a la puerta de M1 y una lógica alta a la puerta de M2, y use una ecuación diferente en su lugar: VDAC (I) = 120 Ω x I.

Selección de MOSFET

No preste demasiada atención a la elección de los modelos MOSFET en la figura, ya que elegí algo mayormente al azar de la biblioteca LTspice. Sin embargo, le recomiendo que elija una parte de puerta de nivel lógico para garantizar una fácil interfaz con Arduino. En teoría, debe elegir uno con Rds (encendido) bajo, pero en la práctica, probablemente usará resistencias del 1% para R1 y R2, por lo que incluso un Rds (encendido) de 1.2 Ω, que es algo alto, solo introduciría un error que es tan alto como las tolerancias de su resistencia de todos modos. Si necesita más precisión, tal vez opte por resistencias de 0.1%, y luego intentaría elegir M2 de modo que su Rds (encendido) esté por debajo de 10 mΩ, de modo que sea insignificante en comparación con el error de 0.12 Ω en R2 - M1 no Realmente no importa porque R1 es alto.

Selección de amplificador operacional

Ahora haré algunas observaciones con respecto a la elección del amplificador operacional. Suponiendo que vaya con mi elección original de valores, entonces, en el caso de dibujar 1.5 µA, el voltaje del emisor del BJT será la misma salida de 15 mV del DAC, y este es el mismo voltaje que ven las entradas del amplificador operacional. Continuando, el voltaje base del BJT será aproximadamente 0,6 V más alto que el voltaje del emisor, por lo que aproximadamente 0,6 V es lo que el amplificador operacional necesita para emitir. Los amplificadores operacionales de uso general como el 741 tendrán problemas tanto con la entrada demasiado cerca de tierra como con la imposibilidad de generar un voltaje que esté tan cerca de tierra. Por lo tanto, necesita lo que se llama un amplificador operacional de entrada/salida de riel a riel.

Se deben hacer otras consideraciones si desea que este sea un circuito de precisión. Para comenzar, debe considerar el llamado voltaje de compensación del amplificador operacional. Un amplificador operacional ideal tendría voltajes iguales entre las entradas inversoras y no inversoras, pero un amplificador operacional real tiene una compensación entre ellas. En amplificadores operacionales de propósito general, un valor típico es 1 mV y un valor máximo puede ser 5 mV. Tenga en cuenta que esto es 7-33% del voltaje de 15 mV aplicado para el caso de 1,5 µA. Asumiré que está satisfecho con un error del 1%, por lo que necesita un voltaje de compensación de menos de 150 µV; esta es probablemente la especificación más restrictiva de todas las discutidas aquí, por lo que si puede vivir con un error mayor, tendrá una selección más amplia de amplificadores operacionales. Otro problema que debe tener en cuenta es la corriente de polarización de entrada: 10 nA en 10 kΩ da como resultado un error de 100 µV, por lo que un amplificador operacional de entrada FET sería bienvenido aquí (estos son bastante fáciles de encontrar y sus corrientes de polarización de entrada están en el rango pA, a menos que operen a una temperatura muy alta). Asegúrese de un mínimo de 80 dB CMRR, para que su El rango de voltaje de 1 V se traduce en un error de menos de 100 µV debido al rechazo de modo común finito. Y, finalmente, debe buscar una ganancia de voltaje de bucle abierto alta: nuevamente, solo 80 dB de ganancia de bucle abierto producirían un error de 100 µV a una entrada de 1 V.

amplificador operacional recomendado

En total, aquí hay una recomendación: el TLV07 tiene un costo bastante bajo (< $ 1 cada uno en Digi-Key), voltaje de compensación típico de 50 µV y máximo de 100 µV, corriente de polarización de entrada típica de 40 pA a temperatura ambiente, CMRR típico de 120 dB, mínimo 110 dB de ganancia de voltaje de lazo abierto, salida de riel a riel, y aunque no está clasificado como entrada de riel a riel, va más allá del riel negativo, que es el problema principal aquí, como se explicó anteriormente, debido a los voltajes tan bajo como 15 mV en las entradas (debe suministrarlo 2 V por encima del voltaje máximo de DAC, pero no debería ser un problema; solo enciéndalo con los mismos 5 V que el Arduino y listo).

¡No alimente nada de la batería!

Una consideración muy importante: no alimente nada más de la batería: el Arduino, el DAC, el amplificador operacional o cualquier otra cosa. Si lo hace, las corrientes de reposo de estos componentes sin duda serán mucho más altas que su objetivo mínimo de 1,5 µA, y el consumo de corriente de la batería sería muy superior a 1,5 µA, probablemente en el rango de mA o incluso más. Conecte la batería solo al colector del BJT.

No tengo suficiente reputación para comentar sobre la respuesta de swineone o directamente sobre la pregunta, pero estoy de acuerdo en que su método es sólido y los cálculos son correctos. Este método podría preferirse a paralelizar 2 de sus circuitos dados como lo sugiere anrieff porque solo requiere un solo amplificador operacional y un solo DAC con relativamente poca complicación adicional.

Lo único que sugeriría editar en el diseño es que no veo una razón por la que los FET de selección de rango actual no puedan estar en el lado bajo de las resistencias de detección actuales. Esto eliminaría las complicaciones de los FET que pasan al modo lineal cuando la caída de voltaje sobre las resistencias de detección aumenta para corrientes seleccionadas más altas.

Alternativamente, puede seleccionar resistencias, FET Vgs y rangos de corriente que eviten esto si hay una razón para mantener la configuración mostrada. Pero creo que swineone simplemente olvidó considerar esto en una respuesta muy detallada y muy útil.

Tiene razón en que se me pasó por alto, y mover los MOSFET al lado bajo es, de hecho, una modificación muy recomendada del circuito original, especialmente considerando el uso de señales de voltaje de nivel lógico para Vgs. Como apliqué 12 V a Vgs en mi simulación, no noté este efecto.
Edité mi respuesta para usar la modificación sugerida.
Perdón por violar el estándar, no estaba seguro de cómo proporcionar información sobre esto de lo contrario; me esforzaré para asegurarme de que no vuelva a suceder.

Para ver un ejemplo de un circuito práctico, consulte el esquema y la publicación de blog adjunta aquí: http://www.arachnidlabs.com/blog/2013/02/05/introducing-re-load/


Fuente: http://www.arachnidlabs.com/blog/2013/02/05/introducing-re-load/