Control a high power circuit with arduino

irf9540I had to control power on an external circuit using an Arduino. the objective was to delay the power-on of a device consuming about 3A. One of the solution is to use a relay but it is a quite expensive solution another one is to use a Mosfet. This is the solution I’ll describe here.



The  IRF9540 is a P channel mosfet able to support 23A and 100V from Source to Drain. The intensity able to pass through the mosfet is depending of the Gate-to-Source voltage. When Gate-to-Source is 0V (Gate connected to Source) the mosfet is open, the controlled circuit is disconnected from source. When the Gate is connected to GND, the mosfet is closing and the max intensity is defined by the voltage difference between Gate and Source. This is about 1A for 4.5V, 3A for 5V, 6A for 5.5V …

For my circuit, the reference Voltage was 5V and my arduino is working with 3.3V so the control circuit will deliver 3.3V (HIGH) and 0V (LOW). As you can see, the impact of some Volts on the intensity crossing the mosfet is really important  so the circuit must create the maximum potential difference when activated (set to LOW).

Here is the schema I’m using :

arduino power control cicruit

Arduino power control circuit

The Voltage on Gate depend on two resistors (voltage divider) and Vin (5V):

  • When CMD is disconnected, Gate = 5V and Iout-max = 0A.
  • When CMD is High (3.3V), G=(470/471)*(5V – 3.3) = 1.69V and Iout-max = 0A.
  • When CMD is LOW (0V), G=(470/741) * 5v=4.98V and Iout-max = 3A

The IRF9540 requires a small heat sink for this level of current.



Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.