I am working on a project to control heavy loads with Arduino up to 10 Amperes. I found the circuit which is made using p-channel Mosfet and a p-type transistor. I am confused in the flow of current through the circuit. I uploaded the diagram please see if the conventional current flow is right in the diagram? and what about the current through the red box (Gate of Mosfet) what will be IL=?. If the input current is up to 10 Amperes does it effects my arduino digital pin? Also if you have any recommendations regarding the circuit please share them.
enter image description here

  • 4
    \$\begingroup\$ To the OP, Olin was rather harsh. I guess I would just say that the black arrows do not help us. We all know which way the current is flowing. And we only care about conventional current. Nobody cares if electrons are flowing the opposite way. It is better not to even mention it. \$\endgroup\$ – mkeith Apr 23 '17 at 19:14

MOSFET gates are very high impedance, so no current (or almost no current) flows into them in steady-state conditions.

During switching on/off there is indeed current flowing to/from the gate as it charges/discharges and reaches its required Vgs level. But this is only a transient condition. If your load is switched only from time to time, its steady-state condition is no current flowing to/from the MOSFET gate.

Additional suggestions:

  1. If you plan to control inductive loads such as motors, use a flyback diode across the load terminals to avoid destroying the P-MOSFET due to inductive voltage spikes at its drain when the load is turned off.

  2. Decouple the +12V supply rail with a big capacitor to avoid destroying the P-MOSFET due to inductive voltage spikes at its source when the load is turned off.

  3. Due to the high currents involved, consider using an optocoupler instead of a BJT, to fully isolate the 12V circuit from the Arduino.

  4. Consider using a logic-level N-MOSFET instead of a BJT for T1. If you decide to keep the BJT, then add a base resistor lo limit the current into the base. Also, add a pull-down resistor at the base to ensure the BJT is cut-off when the Arduino pin is at high impedance (something that can happen when the Arduino is off or when it is starting up, before the pin is configured as OUTPUT).

  • 1
    \$\begingroup\$ Agree with item 4. I would keep the BJT, because I like BJT's, but use a resistor in series with the base, and a pulldown on the base. The value of the series resistor can be around 10x the value of R1. Just as a general guide. \$\endgroup\$ – mkeith Apr 23 '17 at 19:11

Your diagram is right (but difficult to read due the blocky arrows). The current through the red element is substantial only when the load current is switched on or off. The current "?" exists during the state transition, because the mosfet is controlled by voltage. The current is needed because there exixts a substantial internal capacitance between the gate and the drain & source. Ic charges that capacitance when the loar current is turned to ON. The capacitange gets discharged through R1 when the load current is turned to OFF.

T1 is not P-type, but NPN

The red element can be a wire. Often a small resistor is used to damp unwanted radio frequency oscillations that are common in fast pulse circuits with no precautions.

If this circuit is properly realized, I1 is only a few milliamperes, the major part of the Is goes to the load.


Those arrows make everything hard to decipher, but they look correct.

The gate of a MOSFET behaves pretty much like a capacitor. So a current will flow into or out of the gate only when you are switching. (The amount of gate charge should be found in the datasheet.)

The source/drain channel of a MOSFET behaves pretty much like a resistor. (The resistance (RDS(on)) should be found in the datasheet.) In a MOSFET rated for large currents, this resistance typically is very low (milliohms), so it's usually ignored. In other words, you can assume that the load behaves as if it were connected directly to +12V.

If the load is inductive (e.g., motor, relay, transformer), it can generate large voltage spikes when switched off, and you need to add a snubber to protect the rest of your circuit.


Since the voltages throughout the circuit weren't labeled or discussed, perhaps your question stems from a common misunderstanding. This is the misconception that circuitry is based on electric current ...and that to understand circuits, we sketch in all the currents.

Actually, engineers and scientists view most circuits as voltage-controlled systems. Everything is powered by constant-voltage supplies, and the signalling is voltage-based. To understand a circuit, we sketch in all the voltages. Then, using Ohm's law, we can determine the currents if necessary (or even ignore them entirely, and instead concentrate on input/output voltages and load wattage.)

For a nice animated view of voltages (and currents) inside circuits, try the little simulator at Falstad's site. (a java applet)

For example, the current in the gate-wire of the PMOS remains zero, whether the transistor is on or off. MOS transistors are voltage-driven devices, and their gate-current is usually irrelevant.

To analyze this circuit, notice that transistor T1 and resistor R1 form a voltage-divider between 12V and 0V. When T1 is on, T1 forms a short circuit to ground, and it pulls down the PMOS gate to zero volts. When T1 is off, it acts like an open circuit, and then R1 pulls the PMOS gate up to 12V.

In other words, T1 and R1 have converted the Arduino's small output voltage into a 12V signal. This 12V signal then drives the PMOS transistor gate.

The PMOS transistor is wired as an inverter: when the voltage on the PMOS gate is zero, that transistor turns fully on, and when the voltage is 12V, it turns off. (Yes, it should handle 10amps just fine. If its on-resistance is low enough, it might not even need any heat-sink.)

Also, note that you'll need a resistor in series with the base of transistor T1. The transistor's input acts as a diode to ground, and this diode would short out your Arduino's output pin. (LEDs need a current-limiting resistor, and so does this transistor's base lead.) The added resistor should be around 10x larger than the value of R1 (so if R1 is 10K, then add a 100K resistor to the connection between the Arduino and T1.)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.