¿Cómo anular el offset de op-amp en la fuente actual?

4

Tengo un circuito de fuente de corriente con un amplificador operacional y un transistor de paso. El esquema simplificado es este:

simular este circuito : esquema creado usando CircuitLab

Me gustaría que la salida fuera ajustable en un rango dinámico bastante amplio, digamos 4-6 décadas (amperios a microamperios), y lo más importante, me gustaría que la salida fuera un cero verdadero si la entrada es cero.

El problema es el voltaje de compensación del sensor que introduce un desplazamiento en la corriente de salida. Los opamps con la velocidad correcta para lo que estoy buscando tienen compensaciones de 100-500uV. Esto no es un gran problema cuando la corriente es 1A (y el voltaje a través de la resistencia de detección es 1V), pero se convierte en un problema bastante grande cuando la corriente es de 1 mA y la tensión de detección es de 1mV.

El otro problema es la saturación. Si la desviación resulta ser positiva, cuando la entrada es cero, el opamp tratará de conducir a un voltaje de sentido negativo y su salida golpeará el riel negativo. Cuando la entrada se vuelve positiva (por ejemplo, al comienzo de un breve impulso de corriente), el amplificador operacional tardará un tiempo en salir de la saturación y luego pasará del riel negativo a un voltaje positivo lo suficientemente alto para encender el MOSFET. Esto da como resultado un tiempo de subida retrasado y más lento al comienzo de los pulsos actuales en algunas de las versiones de tablero de instrumentos que he construido.

Podría intentar anular el offset opamp usando los pines nulos o compensando ligeramente la entrada. Creo que la deriva sobre la temperatura y el tiempo lo haría así que esto necesitaría ajustes bastante frecuentes.

También podría agregar un interruptor adicional en el lado alto para obtener un cero verdadero, pero eso no resuelve el problema del rango dinámico (en el mejor de los casos, tendría 4 décadas de rango dinámico, y probablemente solo 3) y También el problema de saturación.

Los errores de intervalo o las desviaciones de la linealidad no importan tanto, pero los errores de desplazamiento cero son realmente malos para mi caso de uso.

¿Hay alguna manera de evitar el problema de la compensación en un circuito como este y tener una fuente de corriente que sea esencialmente proporcional en un rango dinámico muy amplio? ¿Hay alguna forma de utilizar un amplificador de realimentación de corriente en lugar de realimentación de voltaje?

(Ejemplo de opciones de componentes: THS4541 opamp, BSS816 mosfet. R_load no es en realidad una resistencia, tiene una curva I-V no lineal)

    
pregunta Alex I

1 respuesta

5

En pocas palabras, no puedes tener tu pastel y comerlo también con este tipo de circuito. Debe separar el sumidero de CC de corriente constante del generador de impulsos de CA.

1) He construido muchos circuitos como usted, pero me he quedado con un amplificador operacional estable de CC como un TL072. El secreto es insertar una resistencia de 1 K ohm en serie con la puerta mosfet. Inserte una resistencia de 10 K en serie con la retroalimentación de R sense. Inserte un condensador de 100 nF desde la salida del amplificador operacional a su entrada (-).

2) Ahora tienes un sumidero de corriente ultra estable. Use un potenciómetro para ajustar Vin, ya que Vin se obtiene de un regulador o regulador de voltaje estable. Para abarcar muchas décadas de alcance, use un interruptor giratorio donde está R sentido y use resistencias de 0.1% si es posible.

3) Puedes comprar resistencias ultraestables de .025% fabricadas por Caddock de Digi-key o Mouser, pero se vuelven caras. Use 1.00 ohmios, 10.00 ohmios, etc., en hasta 1 K ohmios. Con este circuito, el voltaje en el sentido R coincidirá con Vin dentro de un 0,1% o superior. Para protección, inserte un zener de 15 voltios en R sense para que cuando los contactos estén abiertos, el servo loop no esté roto.

4) Ahora, para inyectar una señal de CA, hágalo utilizando un condensador de 100 nF en serie con una resistencia de 10 ohmios y conéctelo a la puerta mosfet. La resistencia es para prevenir la oscilación parásita del mosfet. Use un generador de impulsos para inyectar señales de menos de +/- 15 voltios p-p en el condensador.

5) El amplificador operacional mantendrá la corriente constante estable, pero los pulsos amplios lentos pueden causar un tiempo de corrección de 50 uS en el servo-bucle.

6) La opción 2 es agregar un NPN como un 2N2222 a la puerta del mosfet para que se apague rápidamente (el colector va a la puerta, el emisor a tierra, la base al generador de señales). Un mínimo de 100 KHz o el amplificador operacional se volverán inestables.

7) Personalmente, prefiero el método de inyección de condensador, ya que mantiene aislados tanto el DC como el DC de los servos AC y DC, y la capacidad de mantener una corriente constante (cuando está encendido) es mucho mejor. Recuerde que es mejor si el amplificador operacional es un tipo de retroalimentación de voltaje estable, luego inyecte los pulsos. Coloque un DVM en serie con su carga, si es posible, para asegurarse de que su corriente sea exacta sin ningún impulso.

8) Utilice un osciloscopio si es posible para medir el pin de drenaje del mosfet. Busque señales de saturación por su generador de impulsos o inestabilidad debido a que el sumidero actual está sobrepasado.

9) El siguiente circuito le dará 3 décadas de alcance si se usa un interruptor giratorio de 3 polos. Amplificadores, miliamperios y microamperios, más su esquema de modulación.

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Sparky256

Lea otras preguntas en las etiquetas

Comentarios Recientes

Podemos ver el ejemplo a continuación. Nota: Necesitamos asegurarnos de que los viejos buffers de fábrica no estén asignados en orden inverso, de modo que no podamos especificar un buffer desconocido para el inicio del hilo val_edit. Vaya a instalar import safe_io const (Safe32Only, Invariant, Bytes, out Unsafe32OnlyL, (Consulte la introducción)) const (Enum__n, MemBuffer_n, DoubleDef / Const i, out PointerEncoding, out ImmediateCreateable.) Uno de estos tipos, pero uno con el mismo diseño de estructura. No estoy... Lees verder