Para un drenaje de corriente constante usando una entrada PWM estoy usando la siguiente configuración:
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.