Switching a higher voltage from a microcontroller

I am designing a battery charger circuit controlled by a microcontroller. Once the battery charges at constant current it switches to constant voltage and hence I need to design a switch that will be controlled by the microcontroller to switch between these two circuits.

I designed the following circuit, where an NPN transistor will act as a switch to control the PNP transistor connected to it. It will basically switch it on and off. However, the circuit works well for up to 0.35Amps. Increasing the current beyond 0.35A, will cause very inaccurate readings. What might bevthe problem? Am I biasing the transistors wrongly or taking incorrect readings/decisions in my circuit that will cause the switching circuit to function badly beyond that certain point? I want my circuit to work up to max around 0.8A.

• @brhans is right. All you need to do is to find a PMOS with low Vgs(th). The ones with -2V to -4V would be sufficient. Using a PMOS is a better option because saturating the TIP32C for 0.8A requires higher base current. By the way, Beta is meaningless for a saturated BJT. Here's a practical tip: Let Bx is the one tenth of the minimum Beta for desired collector current. Select a base current of $I_B=I_C/B_x$. This guarantees the saturation. Again, Beta is not used for a saturated BJT. Nov 30, 2020 at 20:16