¿Por qué oscila este circuito limitador de corriente?

Estoy tratando de hacer un limitador de corriente de 0-25 mA. Quiero tomar un voltaje de control de 0-5 V como entrada y hacer que controle una corriente de 0-25 mA a través de una carga inestable (la carga inestable puede variar entre 0 y 200 Ω, se representa como R2 a continuación).

Aquí está mi circuito:ingrese la descripción de la imagen aquí

T1 es un mosfet de canal P (P/N FQT5P10) y O1/2 es un amplificador operacional de riel a riel (P/N OPA2170). Quiero que el voltaje variable en V2 controle la corriente a través de R2.

El amplificador operacional O2 se usa para hacer un amplificador diferencial con una ganancia de 2. Ejemplo: 25 mA de corriente a través de la carga R2, la salida del amplificador operacional O2 debe ser de 5 V (marcado como CSense). La salida del amplificador operacional O2 es entonces la entrada al amplificador operacional O1. El amplificador operacional O1 compara el voltaje de control con la retroalimentación de O2 para limitar la corriente. O al menos esa es mi intención.

He simulado este circuito en el simulador de circuito NL5 y funciona muy bien en la simulación. Pero hoy construí el circuito y oscila.

Revisé tres veces mi pin-out y cableado, y perdí el tiempo con muchas otras cosas, pero el circuito todavía oscila. Cuando V2 es un valor más alto, la oscilación es más lenta. Lo que veo en el DSO es que el mosfet T1 se enciende y se apaga por completo, y CSense es una onda triangular que varía en amplitud con el voltaje de control. Un voltaje de control más alto hace que CSense tenga una amplitud más alta y una frecuencia más baja. La frecuencia de oscilación varía de aproximadamente 50kHz a 150kHz.

Puedo publicar capturas de pantalla de mi DSO si ayuda.

He estado trabajando en esto toda la noche, y está empezando a volverme loco. Cualquier ayuda en absoluto sería muy apreciada.

¡Gracias!

Editar: construí el circuito en CircuitLab. Funciona perfectamente allí también. ¿Por qué no en la vida real?

esquemático

simular este circuito : esquema creado con CircuitLab

Actualización : he cambiado R3 a 10K. Redujo la frecuencia de oscilación a ~20-30 kHz.

Actualizar Todos se están enfocando en O1, pero creo que el problema está en el circuito de O2. A continuación se muestra una captura de pantalla de DSO. V2 está a 1,25 VCC. El trazo amarillo es el voltaje sobre R2 @ 100Ω. El rastro rojo es la salida de O2 (marcado como CSense en mis esquemas). Esperaría que el trazo rojo fuera el doble del trazo amarillo, ¡pero en cambio es una forma completamente diferente! ¿Qué sucede?

Para mayor claridad: esperaría que la línea amarilla fuera de 0,625 VCC y la línea roja de 1,25 VCC (igual que la entrada V2). Además, mi fuente de alimentación es de ~ 8 V CC aquí, las cosas explotan a 24.

ingrese la descripción de la imagen aquí

Acabo de ejecutar la simulación en CircuitLab y obtuve una buena onda sinusoidal de 50 Hz.
La entrada V2 es una onda sinusoidal. Se supone que la salida sigue a la entrada. Si cambia V2 a CC, la salida también se simulará como CC. En mi banco, V2 es DC, pero la salida oscila entre 30kHz y 250kHz.
¿Está girando el segundo amplificador operacional? Según la hoja de datos, la velocidad de respuesta es de 0,5 V/us. Si leo correctamente la captura del oscopio, el tiempo de subida y bajada del trazo rojo es aproximadamente la velocidad de giro del OPA2170
¿Por casualidad conectó ese transistor al revés, la fuente de drenaje invertida? Entonces tienes comentarios positivos.
También tenga en cuenta cómo R2 introduce un cambio de modo común a las entradas de OA2. Las viejas piezas de mala calidad como TL0XX no tienen un buen rechazo para eso (tan bajo como 75 dB). ¿Por qué introducirlo?
El recorte de media onda en el trazo es sospechoso. Tenga en cuenta que el circuito no muestra conexiones de alimentación para los amplificadores operacionales y la simulación probablemente asume que están en un suministro de doble voltaje. ¿Es así como se construye el circuito real? ¿Cómo se alimentan los amplificadores operacionales y cuál es exactamente la tierra a la que se conectan los triángulos blancos?
Los amplificadores operacionales son de suministro único (9 V CC ahora, pero deben funcionar a 24 V CC). Elijo el OPA2170 debido a su rango de suministro de 36 V y sus salidas de riel a riel. Sin embargo, ciertamente estoy abierto a sugerencias.
He integrado un circuito idéntico al O2 (con R4, R5, R6 y R7) pero usando un TLC272 y se comporta correctamente (es decir, el trazo rojo es el doble del trazo amarillo. Parece que mi cableado en el PCB está mal , pero lo he revisado una y otra vez y no puedo encontrar ningún error.
@Alfred, sí, parece que O2 está operando cerca de su velocidad de respuesta. Por supuesto, no sé por qué el circuito oscila en absoluto (debería ser CC). Tal vez si lo reemplazo con un amplificador operacional mejor, mis problemas desaparecerán.
Entonces, ¿cuál es el diagrama de circuito real de lo que realmente se construyó? ¿Qué es el suelo? La simulación no es suministro único. En la simulación, la tierra está a mitad de camino entre los rieles de potencia del amplificador operacional.
@Imbue, asimilo su deseo de entender su circuito defectuoso, pero tengo que preguntarle si ha considerado un circuito de bomba de corriente Howland. www.ti.com/lit/an/snoa474/snoa474.pdf
@Kaz, en NL5 especifiqué el suministro del amplificador operacional como 0 a 24 VCC. No hubo carril negativo. No estoy seguro de cómo es la configuración de CircuitLab, la agregué más tarde por conveniencia. Mi circuito real del mundo real es un suministro único de 8 o 9 VCC. Eventualmente necesito funcionar a 24 V CC, pero es difícil para los componentes mientras el circuito no funciona. En cualquier caso, no entiendo por qué un suministro negativo marcaría la diferencia. Ninguna de las entradas o salidas debe ser inferior a cero.
@AlfredCentauri: ¿Quizás se está refiriendo a la nota de la aplicación TI "AN-1515: un estudio completo de la bomba de corriente Howland" ti.com/lit/an/snoa474a/snoa474a.pdf ?

Respuestas (4)

El problema es que la corriente a través de M1 como función del voltaje de la puerta es altamente no lineal. En algún punto de la función, la ganancia es muy alta, lo que hace que las cosas sean inestables.

Si no necesita una respuesta de alta velocidad de este circuito, puede amortiguarlo un poco más allá del punto en el que determine experimentalmente que no oscilará en ningún punto de operación. Para hacer eso, agregue algo de resistencia en serie con la señal de entrada que va a la entrada negativa de O1, luego agregue algo de capacitancia inmediatamente entre la salida de O1 y su entrada negativa. Debido a la naturaleza no lineal de la fuente de corriente que está impulsando, el valor de capacitancia que garantiza que no haya oscilación en ninguna parte del rango operativo también sobreamortiguará el sistema en otras partes. Eso puede estar bien si no está buscando una respuesta rápida.

De todos modos, haría lo anterior, pero no usaría un FET en primer lugar. Solo necesita un rango de cumplimiento de 5 V (200 Ω por 25 mA), por lo que tiene suficiente margen de voltaje. Tienes 24 V para empezar. La carga puede tomar hasta 5 V y la resistencia de detección de corriente otros 2,5 V. Eso deja un margen de 16,5 V para la fuente de corriente. Realmente no necesita todo eso, pero puede gastar fácilmente unos 5 V para obtener una fuente de corriente razonablemente lineal.

Deshazte del PFET y usa un transistor PNP con 200 Ω más o menos en serie con su emisor. El otro extremo de la resistencia está conectado al suministro de 24 V, el colector se convierte en la salida de corriente controlada y la base es impulsada directamente por la salida opamp. Esto supone que la salida del opamp puede oscilar dentro de medio voltio del suministro positivo, lo que muchos no pueden. El esquema superior no especifica el amplificador operacional en absoluto, y la parte inferior muestra un TL082, que definitivamente no puede llegar a 500 mV del suministro superior. Use un amplificador operacional que pueda, o agregue un divisor de resistencia entre la salida del amplificador operacional y la base del transistor para que el transistor esté apagado con algo que el amplificador operacional pueda lograr. También puede agregar diodos o incluso un zener en serie con el emisor para reducir el rango de voltaje base si es necesario.

Con este esquema, aún agrega el tope de compensación como se describió anteriormente (por lo general, es una buena idea incorporarlo de todos modos, siempre puede dejar el tope si descubre que no es necesario), pero el mismo valor debería aplicarse bien en toda la operación. alcance.

Otra ventaja del esquema PNP es que gran parte de las variaciones de la carga son tratadas inmediatamente por el transistor. El ciclo de retroalimentación más grande entonces es impulsado principalmente por el punto de ajuste y no necesita reaccionar tan rápido para cargar los cambios. Eso permite más amortiguación para una mayor estabilidad sin sacrificar la regulación de la carga. Disminuirá la respuesta a las entradas de control. Por lo que dices, no sabemos cuán importantes son esos dos y, por lo tanto, cuánto importa esto.

En general, debe pensar en la estabilidad de los circuitos con retroalimentación antes de construirlos y darse cuenta de que oscilan. El método "Oh, mierda" de diseño de estabilidad de bucle no es realmente muy bueno.

Gracias por tu minuciosa respuesta. Todavía estoy aprendiendo, y lo encontré muy útil. Mi amplificador operacional es un OPA2170 (se especifica justo debajo del esquema superior. El esquema inferior es solo una simulación de CircuitLab y usé cualquier modelo que tuvieran disponible). La señal de control de voltaje es casi CC (cambia a mucho < 1 Hz de todos modos), pero los 24 V CC pueden tener una ondulación de 60 Hz. ¿Crees que mi circuito con tus modificaciones estará bien, o debería comenzar de nuevo con otro diseño de circuito de fuente de corriente por completo?
He probado un límite de 100n desde el IN- de O1 hasta su salida. V2 ya tiene una impedancia de salida bastante alta en mi circuito real. El capacitor redujo la frecuencia de oscilación a la mitad, pero no la arregló. No me importa si todo el circuito se sobreamortigua, estaría feliz de que funcione en las entradas de CC en este punto. ¡Gracias!
@Imbue: coloque una resistencia en serie deliberada después de V2. Si es PWM de filtrado de paso bajo, entonces probablemente tenga un límite a tierra en su salida. Eso anulará parcialmente el límite de compensación alrededor del opamp. Básicamente, hace un divisor de voltaje y reduce la ganancia pero sin la misma atenuación.
Sí, hay una tapa a tierra. Probaré lo que dices y te cuento. Gracias de nuevo.
Cambié el FET por un PNP BJT, una resistencia en su emisor y la tapa por retroalimentación negativa en O1. Funciona. Ahora, en lugar de oscilar de riel a riel, solo tiene una salida realmente ruidosa. Voy a empezar de nuevo con un circuito adecuado ahora.
@Imbue: estoy confundido con qué circuito realmente terminaste. Muestra el circuito que tienes ahora exactamente como lo construiste , quizás en otra pregunta. Luego explique lo que quiere que haga y lo que realmente está haciendo.

El ciclo de retroalimentación negativa del amplificador operacional izquierdo pasa por el FET y el segundo amplificador operacional, lo que hace que analizar la estabilidad sea una pesadilla (y la estabilidad misma intuitivamente improbable).

Existe la esperanza de que pueda amortiguar ese amplificador operacional izquierdo agregando una resistencia en serie en la entrada negativa y una pequeña tapa entre la salida y la entrada negativa. Para empezar, pruebe con R = 1/(6.fC), por ejemplo, C=100pF, R = 22k. Aumente R si eso no tiene efecto.

Actualización: si lo prueba, ¡díganos el efecto!

Gracias por su respuesta. Mañana probaré tus sugerencias. ¿Puede sugerirme algún recurso para aprender sobre estas cosas? Me gustaría arreglar este circuito, pero también me gustaría saber por qué no es estable y evitar estas cosas en el futuro.
La teoría dice cómo predecir la estabilidad a partir de un gráfico de Bode o mejor gráfico de Nyquist . Pruebe una búsqueda . Mi intuición no reemplaza eso, y bien podría estar equivocada.
El suministro de V2 en mi circuito real ya tiene una impedancia bastante alta (es un PWN en un filtro de paso bajo). Intenté agregar un límite de 100n desde O1 IN- a su salida. Redujo la frecuencia de oscilación a la mitad, pero no solucionó el problema.

Si su circuito OA2 de amplificador operacional no coincide perfectamente con sus resistencias, entonces no amplificará realmente la señal diferencial; también amplificará la señal de modo común, es decir, el voltaje que aparece en el drenaje de M1. No quieres que esto suceda porque es más probable que oscile.

TL082 también tiene una cifra para CMRR (relación de rechazo de modo común), pero no se especifica en frecuencias altas; podría ser fácilmente 20 dB a 50 kHz y empeorar en frecuencias más altas. Esto hará lo mismo que no tener resistencias perfectamente combinadas.

Supongo también que tiene un suministro negativo verdadero para el TL082 porque si no lo tiene, no funcionará correctamente hasta 0 V; cuando establezca una demanda cercana a 0 mA, esperará que el circuito de OA2 funcione. correctamente y simplemente no lo hará.

Poner un amplificador operacional en el circuito de retroalimentación de otro amplificador operacional puede causar problemas y, por lo general, la única forma de evitar esto es reducir la ganancia de alta frecuencia de uno de ellos. Con este fin, podría ser apropiado colocar capacitancia a través de la resistencia de detección de 100 ohmios. Es fácil de hacer y probar. Puede encontrar que a (digamos) 100nF, las cosas se calman.

También hay que considerar el FET: tendrá mucha ganancia de señal en su configuración y recomendaría colocar una resistencia entre la salida de OA1 y la puerta para reducir la ganancia. Pruebe 10k para empezar y hágalo lo más grande que pueda mientras aún puede encender el fet correctamente.

Se trata de reducir la "ganancia" del circuito para detener la acumulación de oscilaciones y medir la corriente a través del 100R sin errores de "recopilación".

Hay mejores circuitos en caso de que su esfuerzo resulte infructuoso, pero buena suerte de todos modos.

Aquí hay uno: -

ingrese la descripción de la imagen aquí

1mA por cada voltio ingresado fluye a través de las resistencias de 1k. Esto "obliga" al amplificador operacional superior a poner Vin a través de la resistencia de fuente de 100, por lo tanto, 10 mA fluyen a través de la carga final por cada voltio en Vin.

Gracias por tus explicaciones y sugerencias. Encontré sus explicaciones útiles, y probaré sus sugerencias más tarde hoy. ¿Podría sugerir mejores diseños para esto (fuente de corriente controlada por voltaje)? Miré algunos otros diseños antes, pero no entendía cómo funcionaban, así que diseñé mi propio circuito usando lo que sabía. Funcionó bien en simuladores, así que supongo que eso me dio una falsa confianza. El circuito puede ser de baja frecuencia. El control de voltaje cambiará a < 1Hz.
Cambié R3 a 10k (la resistencia en serie de la puerta mosfet). Redujo mucho la frecuencia de oscilación, pero aún así no la arregló. La tapa en paralelo con R1 (resistencia de detección de corriente) no pareció ayudar, solo cambió la forma de las oscilaciones.
@Imbue Agregué un generador de corriente constante que usé en el pasado; funcionó, pero asegúrese de usar amplificadores operacionales de riel a riel que sean adecuados para el voltaje de suministro y use una resistencia de 200R en la fuente del fet superior para darte 5mA por voltio. Mi circuito funcionaba con 5v, así que usé amplificadores operacionales AD8605, pero no puede usarlos debido a que el voltaje de suministro es más alto.
Gracias por el circuito. Todavía no entiendo por qué funciona, pero lo estudiaré y probablemente lo usaré la próxima vez.

Básicamente, cualquier circuito de retroalimentación negativa oscilará si el retraso de fase alrededor del lazo de retroalimentación alcanza los 180° antes de que la ganancia del lazo caiga por debajo de la unidad.

Los polos en la respuesta de frecuencia introducen una fase de retraso que se aproxima a 90° por polo a medida que aumenta la frecuencia. Cada opamp tiene al menos un polo de baja frecuencia en su respuesta de bucle abierto que hace que la ganancia caiga con la frecuencia y el retraso de fase se acerque a 90°.

Está operando OA1 sin ningún tipo de retroalimentación, por lo que su polo dominante es un factor importante en la respuesta general. Además, está manejando un MOSFET, cuya capacitancia de puerta, junto con la impedancia que lo maneja, introduce otro polo. Juntos, estos polos están impulsando rápidamente la fase a 180°.

Hay dos maneras de salir de esta situación. Puede reducir significativamente la ganancia de OA1 (usando retroalimentación negativa local) para reducir el efecto de su polo en la respuesta general del bucle, o puede reducir el cambio de fase introduciendo uno o más ceros (cambio de fase principal, esencialmente un cambio de fase alto). -pasar elemento con una frecuencia de corte baja) en el bucle.

Las otras soluciones que se han propuesto, que agregarían polos adicionales a la respuesta del bucle, son esencialmente contraproducentes y, en lugar de resolver el problema, simplemente cambiarán la frecuencia de oscilación.

De acuerdo con este argumento, los condensadores de "compensación" nunca deberían ayudar con la estabilidad cuando hay cualquier otro polo en el sistema. Sin embargo, tenga en cuenta que dicho condensador también reduce la ganancia de bucle abierto a altas frecuencias, por lo que en algún momento esa ganancia debería ser lo suficientemente baja en la frecuencia donde el cambio de fase es lo suficientemente alto como para causar problemas. Dicho de otra manera, terminas con un solo polo dominante con los otros polos irrelevantes debido a que no hay suficiente ganancia en sus frecuencias para que importen.
@Olin, sí, eso funciona. Solo estaba tratando de enfatizar el hecho de que ejecutar OA1 sin ningún tipo de retroalimentación local es una fuente importante del problema del OP, debido tanto a su alta ganancia como a su polo inherente.
Intenté agregar un capacitor de 100n desde el IN- de O1 a su salida. Cortó la frecuencia de oscilación a la mitad, pero eso no me ayuda. V2 en mi circuito real tiene una impedancia de salida bastante alta (es un PWM en un filtro de paso bajo), por lo que no agregué ninguna resistencia en serie a O1 IN-. Puedo ver en el osciloscopio que O1 IN- ahora está oscilando con su salida (mientras que antes era una CC constante, obviamente).
Eso simplemente convierte a OA1 en un integrador (¡otro polo!) sin abordar su ganancia de CC extremadamente alta.
Entonces, ¿cómo puedo reducir la ganancia de O1 con retroalimentación local? Creo que si agrego una resistencia de O1 IN- a su salida, eso compensaría el voltaje de entrada y anularía todo el propósito del circuito.
Odio decir lo obvio, pero entiendes cómo se conecta OA2 y por qué, ¿verdad?
Sí, O2 es un amplificador diferencial con una ganancia de 2. Estoy tratando de usarlo para indicar la corriente donde la salida de 4 V = la entrada de 20 mA a través de la resistencia de detección (R1). Puedo trabajarlo a mano y entender por qué funciona para señales de CC. Pero, por favor, diga lo obvio, es muy posible que me esté perdiendo algo realmente básico. ¿Y pensé que te estabas enfocando en O1?
Sí, el punto es que O1 podría conectarse de la misma manera... desea amplificar la diferencia entre CSense y V2. Además, nunca dijiste qué tipo de amplificadores operacionales estás usando, ni cómo los estás alimentando. ¿Son capaces de riel a riel? El TL082, por ejemplo, no lo es.
Los amplificadores operacionales son OPA2170. Suministro único. Necesito ejecutar 24 V CC, pero estoy ejecutando ~ 9 V CC para fines de prueba (para que todo no se incendie cuando el circuito no funcione correctamente).