Mosfet and GPRS shield causing reset


I am using a 9 Volt battery to run my Arduino. I use the 5V from the VCC of the Arduino and use Mosfet to switch this Voltage to a GPRS shield. When I have not connected the GPRS shield across the diode of mosfet circuit, the voltage appears to act normal. When the gate voltage is a high from the arduino, the voltage across the diode is zero and when the voltage from the arduino is low the voltage across the diode is +5. Therefore, the mosfet switch circuit is working fine. I have run an LED from this switch and it works fine. Infact, I got the GPRS shield to turn on and off for around four to five times but then the problem occurred.

I had tested the mosfet circuit with a GPRS shield and arduino. Then I tested the mosfet circuit with a bread board implementation of the arduino setup and it started going wrong. Now the mosfet switch works fine with voltages but when i connect the GPRS shield in parallel with the diode there is a reset problem. When the mosfet switch is on and there should be no voltage on the diode. But when I connect the GPRS shield a voltage of 0.7 V appears. Then when the gate voltage goes low, the voltage on the GPRS shield goes to 5 but then suddenly the micocontroller is reset.

Is there a problem with the GPRS shield ? Do I need to make some changes to circuit or should I remove the diode ? One thing which is also worth nothing that where is the voltage coming from when I connect the GPRS shield to the diode in parallel. If I connect suppose an LED, the voltages are zero and 5 in off on position and everything works fine.

Please help !


You need to use a power supply that is adequate - GPRS shield will take large peak currents (perhaps 0.5A, perhaps more) - a 9V battery will barely manage 0.1A.

You failed to give details of the hardware - can you provide a link to the data on your shield? Does it mention a maximum current draw?
A regulated 5V supply able to exceed the total current draw of all your devices (Arduino + shields + whatever sensors) is required - allow a good 20% safety margin is wise too (so if 0.6A is needed something like a 0.75A supply or better is a sensible choice - you might want to add a few more sensors or LEDs at some point anyway).


I do not think it is a battery issue. I have been using the different batteries to drive the shield and arduino for the last three months or so and there has been no problem. Even now if I try to remove the mosfet circuit and run the gprs shield and arduino it works.

I am using the GPRS shield provided by seedstudio

Big 9V batteries then?? I’m surprised.

Anyway the other issue is the decoupling surge when the MOSFET switches. The GPRS board no doubt has quite a lot of decoupling
(partly to suppress the high current pulses demanded of the supply).

So when you short it to the supply rail the decoupling caps are discharged and pull the supply rail down towards 0V briefly before they charge

Two quick fixes: Add an order-of-magnitude more decoupling across the supply/battery than exists on the GPRS board. Or add a diode inline with the supply to the Arduino (so its decoupling caps don’t feed current back to the GPRS board while the switching transient happens).

Another fix is to place a current-limited regulator after the MOSFET switch. It needs to be a regulator than does current limiting, not just over-current shutdown.

Yet another approach is to add extra resistance on the MOSFET gate line to slow down its switching - this will limit the initial “inrush” current spike.

I think its not about the battery. The GPRS shield takes around 10 milli Amps in sleep mode and while it is attached to the network, it takes an average of around 70 milli amps. I have measured it myself and just to note that on their website they have written 2.5 milli amps in the sleep mode.

I will try the solutions which involve diode and resistor because I do not have direct access to other things you mentioned. Can you tell me what should be the direction of diode. I mean where should be the cathode and where should be the anode when I am connecting it in series. And should I connect the diode in parallel as well ?

Thank you so much for the help. Tomorrow I will try these things and get back with the results.


I think its not about the battery. The GPRS shield takes around 10 milli Amps in sleep mode and while it is attached to the network, it takes an average of around 70 milli amps. I have measured it myself and just to note that on their website they have written 2.5 milli amps in the sleep mode.

Ah, you do know that transmit power on GSM is auto-negotiated? The transmit power will vary depending on nearest free cell's proximity, you have to assume the worst case current consumption if you want reliable behaviour (you have no control on the transmit power selected, that's dependent on the GSM service provider's base station settings)

Also you have to know the peak current consumption (GSM usually is only transmitting for 1/8th of the time, so the peak can be upto 8 times the average).

Interesting observation…I have been optimizing the GSM radio networks but I think it does not has do with that because immediately after the setup failed, I tried to bypass the mosfet circuit and it worked. If there was case of bad coverage and increased transmit power, it should not have this random behavior.

I think it has something to do with the GPRS shield and its responce to the voltage and current being increased. I am still wondering about the voltage of 0.7 which appears when I connected the GPRS shield to the diode in parallel during off state


Thank you so much for the suggestions. I put up a 200 ohm resistors before the gate and also a 1 ohm resistors before the voltage being supplied to the GPRS sheild and it worked. I am at the moment easily driving it with the mosfet switch circuitry.

One question which came in to my mind. I used the Voltage regulator to move the voltage to 5 volts for running the arduino. However, when I use an solar battery with 5V output and use it without regulattion, during the peak currents of the GPRS shield, it can not hold and the shield switches off. Is it has to do something with the max current the solar battery can provide ?

"Solar battery" meaning what exactly?

PV cells are not batteries, they store nothing - either there's enough light for the current draw you are asking for or there isn't.

It is a solar panel which charges a battery of capacity 1500 mah.

Do you think I should charge the battery more and the check whether it is able to provide the required current. When I run the solar power battery with another 9V battery it runs fine.