Para un drenaje de corriente constante usando una entrada PWM, estoy usando la siguiente configuración:
simular este circuito : esquema creado con CircuitLab
Para corrientes pequeñas, parece funcionar como se esperaba: el amplificador operacional produce un voltaje para el MOSFET que hace que el flujo de corriente sobre la batería sea tal que la caída de voltaje sobre la resistencia de detección de 3,3 ohmios se convierte exactamente en el voltaje configurado, como se esperaba.
Pero debe haber algo que me he perdido, porque la corriente que puedo obtener llega al máximo 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,45 V. En este punto, la salida del amplificador operacional al MOSFET parece saturarse alrededor de 6,05 V. El problema es que los aumentos adicionales en la entrada positiva de los amplificadores operacionales no tienen ningún efecto. El amplificador operacional sigue produciendo una salida de 6,05 V aunque hay una gran diferencia entre la entrada positiva y la negativa. Puedo ver que el opamp está recibiendo, digamos, 0,8 V en la entrada positiva y solo ve 0,45 V en la entrada negativa, pero se niega a generar más de 6,05-6,1 V.
El Vcc al amplificador operacional es de 12 V, por lo que debería haber suficiente margen para que emita voltajes más altos, aunque no sea un amplificador operacional 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 hasta una entrada analógica en el Arduino. Pensé que las entradas analógicas eran de alta impedancia, por lo que no afectaría nada. Pero con ese cable ahí estoy viendo la saturación de 6V (medida con un multímetro, el Arduino solo mide a 5V), pero si lo desconecto todo funciona. ¿Es este algún tipo de oscilación que involucra al Arduino? ¿O 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 era que era de alta impedancia y, por lo tanto, no afectaría el resultado. Había notado que las mediciones alcanzaban un máximo después de 5 V, pero pensé que eso se debía simplemente a que no podía reportar más del valor 1023 y que en realidad no afectaría el comportamiento del circuito. Esta suposición estaba equivocada; debido a un diodo de protección en las entradas de Arduino, el voltaje adicional se drenó (el LM358P tiene un voltaje de cortocircuito de 40-50 mA) provocando la caída en el voltaje medido (incluso con un multímetro) en la salida del amplificador operacional. Pero el verdadero culpable fue el diodo de protección del Arduino. Quitar este cable de medición resolvió el problema.
Primero imaginé que su problema era que el amplificador operacional estaba oscilando y le sugerí que intentara algo como esto (gracias a Spehro también):
simular este circuito : esquema creado con CircuitLab
Según una discusión adicional, donde agregó que estaba suministrando la salida del opamp a un pin de entrada MCU en su Arduino, también está claro que incluso si tuviera (o hubiera tenido) un problema de oscilación (y lo haría, estoy bastante seguro) es más probable ahora que su límite medido de alrededor 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 dado 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 descrita como algo similar a: "corriente de diodo en cualquier terminal de dispositivo". Por lo general, el valor indicado allí será alrededor o menos.
Si debe medir el voltaje de salida del amplificador operacional, deberá considerar una disposición de circuito diferente para acondicionar la salida del amplificador operacional (sin alterar su comportamiento de control MOSFET) y hacer que sea adecuado para la entrada al pin de entrada analógica de Arduino.
Creo que su circuito se ha vuelto inestable y está oscilando. 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. Cierras 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 capacitancia puerta-fuente se ve a tierra en la puerta. Si fuera un convertidor de voltaje de fuente de puerta 1: 1 perfecto, teóricamente no se vería capacitancia en la puerta.
La capacitancia de 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 de 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 cante con todo su corazón. Probablemente esté oscilando entre 200 kHz y 1 MHz. Un amplificador operacional 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 unos 100 ohmios o menos y vea si la situación mejora. De hecho, simplemente cortocircuitaría el 1k5 por completo. Podría agregar un capacitor integrador y una resistencia de entrada como se indica en otra respuesta, pero esto reducirá significativamente la capacidad dinámica del circuito para mantener una corriente constante. Es mucho más fácil dejar caer el valor de 1k5.
Este es un ejemplo de sobrecarga de su entrada analógica Arduino. En primer lugar, se debería haber proporcionado un divisor de voltaje (y se mostró la conexión real a Arduino para permitir una discusión significativa
Juan D.
Morty
Juan D.
Morty
Tony Estuardo EE75
Tony Estuardo EE75
Tony Estuardo EE75
Morty
kevin red