SMD MOSFET to power down my SMD H-Bridge

SouthernAtHeart:
5 volt system.
An atmega328P-AU, DS3234, & h-bridge (Si9986)

My atmega will be sleeping, waiting for the interrupt from the DS3234 timer. DS3234 will have Vcc cut off from an Arduino pin, so it runs on Vbatt. But if I'm reading the datasheet correctly on the Si9886, it uses 300 uA in standby mode.

300uA maximum, but more like 65uA typical @ Vdd=5V judging from page 3 of the datasheet.

Low-side switching to turn the power supply to the H-bridge off using an N-channel mosfet is OK provided you set INA and INB high first. Similarly, turn the mosfet on before you set the pins driving INA and INB to be outputs. It's slightly better to put the 10K resistor to ground on the other side of the 330 ohm resistor unless there is a connector involved, that way the mosfet gate gets the full ~5V drive from the atmega328p instead of ~97% of it.

...would this solid state DC relay be a better choice to power down an H-bridge? I didn't seem anything in the datasheet that would indicate I couldn't switch the high side, which sounds safer than turning everything on/off high/low in the right order as suggested to switch the low side...
Seems this only has 1uA of current when off?

Thanks for taking a look at this. This does seem a good solution to me, I'll be anxious to get some feedback on this relay.

...and if there's a better more obvious way to cut power to an H-bridge so my project can run on just a few uA, don't hesitate to tell me I'm missing something. I thought of trying to skip the h bridge but couldn't come up with a way to run a 200-500mA motor in both directions.

If you switch the high side of the H-bridge, you will still have to make sure you set the outputs correctly (i.e. low) before you power it down. So switching the high side instead of the low side doesn't gain anything.

Using an SSR is overkill, you don't need isolation in this case.

Low-side switching to turn the power supply to the H-bridge off using an N-channel mosfet is OK provided you set INA and INB high first. Similarly, turn the mosfet on before you set the pins driving INA and INB to be outputs.

Ok, if I switch the low side, I won't need the extra MOSFET driver transistor, just this setup in the attached picture. But then to do all that I've quoted you here. ...can I do this if I'm turning on power, running the motor a few seconds, turning off power, rinse repeat twice a day?
Can you list the order of proper startup/ shutdown? The way I see it if I set INA/B high first, then shut down the MOSFET, won't I leave them high until after I power it up again? But you said to turn on the MOSFET before setting INA/B as outputs, but they'll already be outputs, & set to high. ???

I don't mind using a P channel, or using extra components, I just want to do it properly-what ever is the best most acceptable way of turning off power so as to bring my total quiescent current down to just a few uA. From all that I've read, it seems a P channel is more commonly used to switch the high side, but I did notice those P channel circuits all have a pull up resister, and that in itself will draw more current than I want.

If your H-bridge and the Arduino are running from the same +5V supply, then you can switch either the high side or the low side of the H-bridge. You can use either a logic-level P-channel mosfet to switch the high side, or a logic-level N-channel mosfet to switch the low side. The P-channel mosfet needs a pullup resistor between gate and +5V to hold it off while the system is powering up; the N-channel mosfet needs a pulldown resistor to ground for the same reason. In both cases, when the mosfet is off, there is no voltage across the resistor, so no associated current drain.

If your H-bridge uses a different +5V (or higher) power supply from the one powering the Arduino, then you must use high-side switching, with a P-channel mosfet and an NPN BJT or similar to level-shift the mosfet gate drive. The usual level shifting circuit consumes no power when the mosfet is off.

I suggest you include 1K resistors between INA, INB and the corresponding Arduino pins, to protect the chips in the event of you getting the sequence wrong.

Here is my suggested operating sequence:

  1. Low side switching with N-channel mosfet (output pin high to turn mosfet on)

Initialise:
digitalWrite LOW to mosfet control
mosfet control pinMode to OUTPUT
digitalWrite HIGH to INA, INB
INA, INB pinMode to OUTPUT (both will be set HIGH because of the previous command)

Power up:
INA, INB should both already be HIGH
Mosfet control HIGH to enable power to H-bridge

Power down:
INA, INB HIGH
Mosfet control LOW to power down H-bridge

  1. High side switching, direct connection to P-channel mosfet (output pin low to turn mosfet on)

Initialise:
digitalWrite HIGH to mosfet control
mosfet control pinMode to OUTPUT
DigitalWrite LOW to INA, INB
INA, INB pinMode to OUTPUT

Power up:
INA, INB should already be LOW
Mosfet control LOW

Power down:
INA, INB LOW
Mosfet control HIGH.

  1. High side switching with level shift: as (2) but reverse mosfet control pin HIGH/LOW.

Thanks dc42,
I really would like to understand this stuff better. So my scenario is #3, since my motor voltage is 6 volts and my Arduino voltage is 4.5 volts.
This photo is what I've found from another thread. Is this correct? I've read that the pull up resistor on the MOSFET's gate is needed to turn it off. But the continuous current drain across that 10K resistor will defeat the purpose of attaining ultra low quiescent current. My motor voltage is 6 volts, so across 10K, that'd be a 600 uA, no?

image.jpg

That circuit is OK, although personally I would reduce the value of the pullup resistor to +6V to 2k2 or 4K7, at the expense of slightly increased current consumption when the H-bridge is powered up. This resistor will only draw current when the transistor is turned on and the H-bridge is powered up, so it doesn't defeat the purpose of switching the H-bridge supply.

As you have a little under 6V gate drive available, you will need to use a logic level P-channel mosfet.

Ok, I think I got it! Here's a photo of what I've got, and the components. Oh, I don't have it... I just discovered the 2N3904 transistor doesnt come in SMD at Digikey. What would a good NPN transistor be to turn on/off my MOSFET? I have some BSS138W-7-F in stock. Would they be a good choice? If not ill be ordering from Digkey anyway.
and does the P channel mosfet look appropriate?

BSS1338 transistor: (I guess it's not a transistor, but an NPN MOSFET)
http://www.diodes.com/datasheets/ds30206.pdf

The P channel MOSFET (DMP2305U)
http://www.diodes.com/datasheets/ds31737.pdf

H-Bridge
http://www.vishay.com/docs/70007/si9986.pdf

Looks OK to me. The Vgs rating of that P-channel mosfet is only 8V, uncomfortablly close to the 6V drive it is getting, so it is probably better to spit the 2K2 resistor into 2 x 1K and drive the gate from the junction of the two. Alternatively, pick a mosfet with a higher Vgs rating but designed for 5V gate drive, such as TSM2313CX.

For the transistor, use either a bipolar NPN transistor such as BC817 and omit the 10K resistor to ground, or a small signal mosfet such as your BSS138W and omit the 10K series resistor..

PS - don't forget to add some good decoupling capacitors between the source terminal of the P-channel mosfet and the ground connection of the H-bridge.

Alternatively, pick a mosfet with a higher Vgs rating but designed for 5V gate drive, such as TSM2313CX.

...still looking for something at Digikey. I can't get the one you mentioned at Digikey, and at Mouser it's a non stocked item which you've gotta order 15000 of…
Digikey's filtering system doesn't have the criteria of Vgs, so I'm having trouble selecting one. Once I find something I'll post my updated schematic.

Perhaps PMV48XP then?

dc42:
Perhaps PMV48XP then?

Thanks! Here's what I came up with...
Is R1 needed? I usually put something like that to make sure the motor is off while the Arduino boots up.
So nothing is needed between the Arduino pin and the gate of the BS1338?
Sure appritiate all the help!

I'll be glad to go this route rather than just a relay.

R1 is worth including. Its purpose is to ensure the mosfet is kept off when the system is powered up but the Arduino pin has not yet been configured as an output. It isn't needed if the pin feeds a BJT, but then you need a series resistor instead.

Looks OK to me. The Vgs rating of that P-channel mosfet is only 8V, uncomfortablly close to the 6V drive it is getting, so it is probably better to spit the 2K2 resistor into 2 x 1K and drive the gate from the junction of the two. Alternatively, pick a mosfet with a higher Vgs rating but designed for 5V gate drive, such as TSM2313CX.

I have changed from a 6 volt motor supply to a 9 volt supply, (and tapping off 4.5v for the 328 chip), but I don't understand this Vgs thing, so will this schematic still work to turn on/off Vcc to my motor driver chip?
Will I still need to have the 2k2 resister split into 2 1k resistors? I don't understand thus part.
Thanks.

Running from 9V, you definitely need R1, R2 to be 2 x 1K. However, your schematic is wrong. They need to be in series, not in parallel, and the gate drive to the P-channel mosfet needs to be taken from the junction of the two.

I would connect the 100nF capacitor to the source terminal of the P-channel mosfet instead of the drain terminal, and put a much larger electrolytic capacitor (e.g. 1000uF) in parallel with it. Position the P-channel mosfet and capacitors close to the 9986, and keep the traces connecting these 4 components short.

OK! I think I've got it. I made the schematic on eagle, trying to make it all clear so I could get a second opinion on it. If you could note that it looks okay, and that the mosfet are connected to the correct gates. I've included datasheets for the components...
thanks again,

BSS138W N Channel Mosfet:
http://www.diodes.com/datasheets/ds30206.pdf

PMV48XP P Channel Moseft:
http://www.nxp.com/documents/data_sheet/PMV48XP.pdf

Si9986 H-Bridge
http://www.vishay.com/docs/70007/si9986.pdf

As I tried to make clear in my previous reply, I think you should omit C3. Otherwise, every time you turn on the P-channel mosfet, there will be a large surge of current through the mosfet as C1 charges. If you do decide to keep C3, then you can omit C1 but I think you should also deliberately slow down the turn-on speed of the P-channel mosfet by connecting a capacitor of about 10nF in parallel with R2.

You will need to make sure that the 2 input signals to the 9986 are low before you turn off the P-channel mosfet, and remain low until after you have turned it on.

I will just omit C3. I didn't realize it was a problem. I added C1 thinking that was what you meant to do. C3 is just what I put next to all chips I use as a decoupling cap. I didn't know it was interfering with the P channel MOSFET. Thanks for explaining that. I kinda understand it now.
I'll be sure to turn the h bridge signals off before turning off the P channel.
Thanks!

On the same project, I need to turn off the Vcc to the DS3234 RTC chip. If I should start a new thread for that let me know.
The 3 chips in my project are:
Atmega328P-AU (first time to boot load the SMD variant)
si9986 H-Bridge
DS3234 RTC

Vcc for the Atmega328 & DS3234 is 4.5v (3 C cells)
...trying to last a year on batteries, I will power down the Atmega328P, and have the alarm from the DS3234 interrupt wake it up. But if the DS3234 has Vcc it uses a lot of current. If I turn Vcc off, it uses only 1-2 uA from Vbatt (a coin cell battery).
So I need to "disconnect" Vcc from the DS3234. Would this same technique I used on the si9986 work?