Puede eliminar la caída de voltaje del diodo usando un MOSFET de canal P, pero hay algunas sutilezas que podrían atraparlo: -
-
El MOSFET tiene un diodo interno de "cuerpo" conectado entre la Fuente y el Drenaje. Esto puede realizar la misma función que su diodo, pero para que el diodo apunte en la dirección correcta, la polaridad de drenaje / fuente debe invertirse.
-
Si la MCU solo genera 3.3V, entonces el voltaje de la compuerta del MOSFET debe elevarse para cumplir con el voltaje de la fuente. Este cambio de nivel se puede hacer con otro FET o transistor bipolar, que también puede invertir convenientemente la señal para que el FET se encienda cuando la salida digital de la MCU es alta.
El circuito se ve así: -
simular este circuito : esquema creado usando CircuitLab
Hasta ahora todo bien. Sin embargo, este esquema tiene un problema: si se aplica alimentación USB externa mientras el FET está activado, la corriente fluirá desde el puerto USB a la batería hasta que la MCU apague el FET. Además, la diferencia entre la alimentación USB interna y externa es bastante pequeña (~ 4.5V vs 5V), por lo que la MCU podría tener problemas para determinar cuándo está presente la alimentación USB externa.
Si agrega un amplificador para obtener 5V de la batería, entonces la diferencia de voltaje podría ser tan pequeña que es imposible saber si hay alimentación externa. Una solución podría ser alimentar la batería y la alimentación USB a través del amplificador, con diodos en serie con cada fuente para aislarlos entre sí. Luego puede medir el voltaje de entrada del USB sin interferencia de la batería, mientras que el amplificador produce un total de + 5V desde ambas fuentes de energía.
simular este circuito
En este esquema, tendrías un puerto USB para obtener alimentación como dispositivo y otro para conectar como host. Si desea realizar ambos trabajos con un solo puerto USB, entonces está creando algo similar a USB On-The-Go , por lo que podría ser más fácil usar un chip controlador OTG dedicado.