LM358P saturación de salida alrededor de 6.05V (la causa raíz resultó estar relacionada con los diodos de protección Arduino)

1

Para un drenaje de corriente constante usando una entrada PWM estoy usando la siguiente configuración:

simular este circuito : esquema creado usando CircuitLab

Para corrientes pequeñas, parece funcionar como se espera: el amplificador operacional produce una tensión en el MOSFET que hace que el flujo de corriente sobre la batería sea tal que la caída de tensión sobre la resistencia de detección de 3,3 ohmios se convierte exactamente en la tensión configurada, como esperado.

Pero debe haber algo que haya pasado por alto, porque la corriente que puedo sacar es la máxima mucho antes de lo esperado. Esto sucede alrededor de 150 mA correspondiente a un voltaje de entrada a la entrada positiva de los amplificadores operacionales (a través de PWM) de alrededor de 0.45V. En este punto, la salida del opamp al MOSFET parece saturarse alrededor de 6.05V. El problema es que los aumentos adicionales en la entrada positiva de los amplificadores operacionales no tienen efecto. El opamp sigue produciendo una salida de 6.05 V, aunque existe una gran diferencia entre la entrada positiva y la negativa. Puedo ver que el opamp está obteniendo, digamos, 0.8 V en la entrada positiva y solo está viendo 0.45 V en la entrada negativa, sin embargo, se niega a emitir más de 6.05-6.1V.

El Vcc al amplificador operacional es de 12 V, por lo que debería haber suficiente espacio para que emita voltajes más altos a pesar de que no es una opamp de riel a riel. He buscado en la hoja de datos pero parece que no puedo encontrar una limitación que explique este comportamiento, así que espero que alguien pueda explicar lo que me estoy perdiendo.

Actualizar! Estoy un poco más cerca de resolver el misterio. Tenía un cable (no en el dibujo) que iba desde la salida del amplificador operacional a una entrada analógica en el Arduino. Pensé que las entradas analógicas eran de alta impedancia por lo que no afectaría a nada. Pero con ese cable, estoy viendo la saturación de 6V (medida por un multímetro, el Arduino solo mide a 5V), pero si lo desconecto, todo funciona. ¿Es este un tipo de oscilación que involucra al Arduino? ¿O es que el Arduino está drenando el voltaje?

¡NOTA! La causa raíz de este problema resultó ser diferente. Había conectado un cable de medición desde la salida del amplificador operacional a la entrada analógica de Arduinos. Mi pensamiento fue que era de alta impedancia y por lo tanto no afectaría el resultado. Me había dado cuenta de que las mediciones se habían superado después de los 5 V, pero pensé que se debía simplemente a que no podía informar más del valor 1023 y que en realidad no afectaría el comportamiento del circuito. Esta suposición era errónea; debido a un diodo de protección en las entradas de Arduino, la tensión adicional se drenó (el LM358P tiene una tensión de cortocircuito de 40-50 mA) causando la caída en la tensión medida (incluso con un multímetro) en la salida del amplificador operacional. Pero el verdadero culpable fue el diodo de protección en el Arduino. La eliminación de este cable de medición resolvió el problema. Estoy dejando la descripción original del problema en su lugar para que otras personas puedan encontrar este informe en caso de que encuentren problemas similares.

    
pregunta Morty

3 respuestas

1

Al principio me había imaginado que tu problema era que el opamp estaba oscilando y te sugerí que intentes algo como esto (gracias a Spehro, también):

simular este circuito : esquema creado usando CircuitLab

En una discusión adicional, donde agregó que estaba suministrando la salida del opamp a un pin de entrada de MCU en su Arduino, está también claro que incluso si lo hizo (o lo habría tenido) problema de oscilación (y usted lo haría, estoy bastante seguro) es más probable ahora que su límite medido de alrededor de \ $ 6V \ $ se debió a un diodo de protección muy cargado en el pin de entrada analógica de su MCU. Las limitaciones del diodo de protección para cualquier MCU dada generalmente se pueden encontrar en la sección "Calificaciones máximas absolutas" de la hoja de datos, donde esa sección incluirá una línea que se describe como algo similar a: "corriente de diodo en cualquier terminal de dispositivo". Por lo general, el valor que aparece en la lista será de alrededor de \ $ 2mA \ $ o menos.

Si debe medir la tensión de salida del opamp, entonces deberá considerar una disposición de circuito diferente para acondicionar la salida del opamp (sin alterar su comportamiento de control del MOSFET) y hacerla adecuada para la entrada al pin de entrada analógica Arduino.

    
respondido por el jonk
2

Creo que tu circuito se ha vuelto inestable y está oscilando. Usted tiene una resistencia de 1.5 kohm que alimenta la puerta y la capacitancia de la puerta se verá "fraccionalmente" en relación con la tierra en este punto y esto agregará una buena cantidad de cambio de fase. Cierra el bucle y obtienes un oscilador.

Normalmente, puede confiar en que el FET actúa como un convertidor de voltaje 1: 1 de la puerta a la fuente, pero con una resistencia de valor tan bajo en la fuente, esto podría degradarse a más como 1: 0.7 y esto significará 0.3 X puerta La capacidad de la fuente se ve a tierra en la puerta. Si fuera un convertidor de voltaje de fuente de compuerta 1: 1 perfecto, entonces no se vería capacitancia en la compuerta en teoría.

La capacitancia de la puerta especificada es de 1.9 nF para el IRFZ44, por lo que la resistencia de 1.5 kohm verá aproximadamente el 30% de esto, es decir, ~ 600 pF. Esto forma un filtro de paso bajo 3dB a aproximadamente 178 kHz. A esta frecuencia, la señal se desplaza 45 grados y, por lo tanto, reduce el margen de fase del LM358, lo que hace que se salga el corazón. Probablemente esté oscilando entre 200 kHz y 1 MHz. Un op-amp más moderno tendría un gráfico de su respuesta de fase de bucle abierto y esta frecuencia sería más fácil de predecir.

Intente reducir el 1k5 a aproximadamente 100 ohmios o menos y vea si la situación mejora. De hecho, me gustaría corto de 1k5 por completo. Podría agregar un condensador y una resistencia de entrada integradores como se señaló en otra respuesta, pero esto reducirá significativamente la capacidad dinámica del circuito para mantener una corriente constante. Es mucho más fácil perder el valor de 1k5.

    
respondido por el Andy aka
0

Este es un ejemplo de sobre-manejo de su entrada analógica Arduino. Se debería haber proporcionado un divisor de voltaje en primer lugar (y se mostró una conexión real a Arduino para permitir una discusión significativa

    
respondido por el Petkan

Lea otras preguntas en las etiquetas