Help with H Bridge for Low Power Application

General project help for Adafruit customers

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
kw893
 
Posts: 4
Joined: Tue Jun 08, 2021 10:30 am

Help with H Bridge for Low Power Application

Post by kw893 »

Hello,

I'm new to using MOSFETs as switches and would appreciate any help with getting my project to work.

I'm building a power system for a load that requires about +/- 0.7V (it can be as high as +/- 0.8V though) with varying current (the average is about 30mA but the circuit should be able to handle at least 1A). I am trying to build an H bridge to control whether the load gets a positive voltage, negative voltage, or zero voltage. I have not gotten far enough along to try testing the entire H bridge since I've run into problems. To test the p-channel MOSFETs, first I tried just powering the load using a single logic level LP0701 p-channel MOSFET (see datasheet link below) as a high side switch to turn the load on and off. I have the source of the MOSFET connected to the 0.8V output, the gate tied to a Feather digital I/O pin (3.3V) with a pullup resistor to 3.3V rail, and the drain connected to the load. However, when I connect the load (which was showing an impedance of about 2Mohms when connected) to the drain the voltage across the load was about 0.2V instead of 0.7V-0.8V, with a voltage drop of about 0.6V over source to drain. (Note: I only have these p-channel MOSFETs in hand right now and don't have any n-channel ones.) I even tried replacing my load with a 2Mohm resistor to see if the circuit would react the same, and it still had the same problems.

I am using an L38851 LDO linear regulator (see datasheet link below) to take my Feather M0 Express's 3.3V down to 0.8V for the load. I have tried connecting the load directly too the LP38851's output and it works: the load gets about +/- 750mV as desired depending on how I have the leads connected. But it's when I connect it to the low side (drain) of the MOSFET that it doesn't work. For reference, I measured the impedance of the load when it was directly connected to the 0.8V output and functioning correctly, and it was about 30Mohm if I recall correctly. I'm thinking the MOSFET issue has to do with the threshold voltage not being low enough since the LP0701's threshold is -0.5V to -1V and I'm trying to power the load with ~0.8V. I am triggering the gate using 3.3V from a digital pin on the Feather. What is wrong with my setup? Should I theoretically be able to get an H bridge to work using these MOSFETs plus two n-channel equivalents? Or are they not the right components to use?

I'm uncertain whether MOSFETs are even the best route to go for a low power H bridge. I've researched BJTs some (I've never used them), and from what I've read it looks like they're better for low power applications - but I'm worried that they may not allow the load to have varying current. It also looks like using BJTs would require more additional components than MOSFETs, like protection diodes. I'm almost positive latching relays would work, but they are much more expensive and larger than what I think I need. Are there any p-channel and n-channel MOSFETs out there that would work for me? Should I be using BJTs? Are relays my only solution? Is an H bridge my best option to get positive and negative voltage outputs for the load? I'm in search of the overall best design I can get.

Please let me know if you have any questions for clarity. Any suggestions/advice/assistance is greatly appreciated.

LP0701 p-channel MOSFET: https://ww1.microchip.com/downloads/en/ ... 05447A.pdf
LP38851 LDO Regulator: https://www.ti.com/lit/ds/symlink/lp388 ... 7727188758

User avatar
adafruit_support_mike
 
Posts: 67446
Joined: Thu Feb 11, 2010 2:51 pm

Re: Help with H Bridge for Low Power Application

Post by adafruit_support_mike »

For voltages that low, you'll be better off using N-mosfets for both the 0V and 0.8V lines:
h-bridge.jpg
h-bridge.jpg (23.96 KiB) Viewed 396 times
There's no down side to that arrangement.. in fact it resists noise and oscillation better than an H-bridge with P-mosfets on the high side. Industrial motor controls are usually made that way. The general technique is called 'high-side switching'.

The problem with high-side switching is that the gate voltages need to be higher than the bridge's positive voltage. Most N-mosfets want at least 4.5V to hit their lowest channel resistance, but these days you can find ones that work at 3V or less. If you use 5V control signals, a bridge made from most N-mosfets should work the way you want.

The control signals Phi and /Phi mean that one line is high and the other is low at all times. It's even better to have a small delay where both lines are low before either one goes high.. a non-overlapping clock. That eliminates the chance of both mosfets in series being on at the same time, effectively shorting the 0.8V rail to GND.

What's the part number of the N-mosfets you're using?

User avatar
kw893
 
Posts: 4
Joined: Tue Jun 08, 2021 10:30 am

Re: Help with H Bridge for Low Power Application

Post by kw893 »

Thanks so much! That is very helpful. Good to know that N-mosfets are the way to go, and what you said about adding a delay between switches makes sense. I ordered TN0606 N-mosfets earlier this week (datasheet below), and I'm waiting for them to come in. They have a maximum Vgs(th) of 2V, but now I'm wondering if that's too high. I just found the TN0104 N-mosfet which has a maximum Vgs(th) of 1.6V (datasheet below), maybe this one is better?

I'm wanting to use 3.3V as the control signal since my microcontroller has 3.3V logic - is that high enough for either of these N-channel mosfets?

Something that's also been confusing to me is whether I need the mosfets to operate in the linear region or in the saturation region. I was assuming I need the linear region since the load needs variable current, but I've read mixed things online.

Thanks again!

TN0606 N-mosfet: https://ww1.microchip.com/downloads/en/ ... 05935A.pdf
TN0104 N-mosfet: https://ww1.microchip.com/downloads/en/ ... 05930A.pdf

User avatar
adafruit_support_mike
 
Posts: 67446
Joined: Thu Feb 11, 2010 2:51 pm

Re: Help with H Bridge for Low Power Application

Post by adafruit_support_mike »

The mosfets above will be okay for low current, but their channel resistance (Rds.on) bottoms out at a couple of Ohms. At 1A you'd see a couple Volts between each mosfet's drain and source.

That isn't a problem for the upper mosfets (kinda.. more on that later), but the lower ones only have 700mV of headroom. If you want to lose less than 1% of your working voltage at 1A, you'll need mosfets whose Rds.on is less than 7mohm. You'll also need a Vgs low enough to get down to the low-resistance region with the available supply voltage.

Datasheets don't show that directly, but the graph of Rds.on -vs- drain current has curves for different gate voltages. This one looks like the best fit at the best price from the through-hole options at Digikey:

https://www.digikey.com/en/products/det ... 27/1157546
gate-voltage.png
gate-voltage.png (111.46 KiB) Viewed 377 times
The graph doesn't show Vgs=2V @ 1A, but the curves all bunch together below 80A. I'm not happy about the upward tilt at the left end of the curves, but the rest of the graphs make the performance at Vgs=2.5V look good.
kw893 wrote:I'm wanting to use 3.3V as the control signal since my microcontroller has 3.3V logic - is that high enough for either of these N-channel mosfets?
The TNO606 and TNO104 have too much channel resistance to meet your design goals, and trying to work from a 3.3V supply will push the PHP191NQ06LT into the realm where its performance is iffy. Things will be easier if you use a level shifter and a 5V supply to drive the gates of the H-bridge:

https://www.adafruit.com/product/1787

That also opens up a wider range of low-Rds.on mosfets at lower prices:

https://www.digikey.com/en/products/fil ... 0DYBQBfIAA

This one looks especially good:

https://www.digikey.com/en/products/det ... BF/4807868
kw893 wrote:Something that's also been confusing to me is whether I need the mosfets to operate in the linear region or in the saturation region. I was assuming I need the linear region since the load needs variable current, but I've read mixed things online.
'Saturation' is an unfortunate name for the relationship between Vgs and Vds.. its meaning is completely different from the 'all the way on' meaning for BJTs. It's roughly the minimum headroom (Vds) necessary to get the maximum possible current (Id) through a mosfet for a given Vgs. In practical terms, low-Rds.on mosfets never leave their linear region, and their saturation regions are defined for theoretical currents that would vaporise them.

The formal terms you want are 'shallow inversion' and 'deep inversion', neither of which are ever used outside a textbook.

'Shallow inversion' is what we normally think of as the triode region (which is nonlinear): Vgs is close to the mosfet's threshold voltage (Vgs.th), the current through the mosfet is roughly a function of (Vgs-Vgs.th)^2, and R.ds is roughly a function of 1/(Vgs-Vgs.th)^2. Physically, the gate voltage pulls charge carriers up from the mosfet's substrate and into a region immediately below the gate called the 'inversion layer'. The channel resistance is controlled by the thickness of the inversion layer.

'Deep inversion' is where the triode region stops working at the low end. Vgs-Vgs.th is large, and Rds no longer falls off as a function of 1/(Vgs-Vgs.th)^2. Other factors become dominant, like the dimensions of the channel and the physical properties of the silicon. Basically, the inversion layer can't get any thicker (which would be a dandy place to use the word 'saturation' if it wasn't already taken) and Rds is as low as it can get.

You want to run the H-bridge mosfets in deep inversion to keep their Vds as low as possible. To regulate the current, you need another mosfet operating in shallow inversion. As a practical matter, it's nearly impossible to regulate a mosfet's current just looking at Vgs. You have to put the mosfet into a feedback loop that measures the current.

When you need to control both current and voltage, the standard approach is to put the current regulator outside of the voltage regulator.

A basic current regulator looks like this:
current-limit.jpg
current-limit.jpg (22.67 KiB) Viewed 377 times
You can use that between your voltage regulator's GND and the power supply's GND, but then your whole voltage-regulated circuit floats at a voltage prortional to the load current. You can make an equivalent circuit with a P-mosfet, but then your control voltage is a negative offset from VCC, which is inconvenient.

This does the job better:
floating-current-reg.jpg
floating-current-reg.jpg (53.61 KiB) Viewed 377 times
A1 controls the gate of Q1, which operates in its triode region (shallow inversion). Almost all the current from Q1's source flows through Rsense into the voltage regulator.

A small amount of current also flows through Ra, whose value is much larger than Rsense.. maybe a 1k where Rsense is 0.1 Ohm.

A2 controls Q2: a PNP emitter follower. Together they work to make the voltage across Ra equal the voltage across Rsense. All of the current through Ra also flows through Rb, giving you a ground-referred voltage proportional to the current through Rsense. You can scale the voltage to any ratio you want by playing with the ratio of Rb to Ra.

The whole circuit with A2, Q2, Rsense, and Ra is basically the guts of an INA169:

https://www.adafruit.com/product/1164

The path from A1's output back to its negative input contains one source follower and one emitter follower. The Ra-Q2-Rb path has an inversion and a polarity flip that cancel each other, so we can hand-wave the details and say A1 is a buffer that keeps the voltage across Rb equal to Vref. The voltage across Rb just happens to be proportional to the current going into the voltage regulator.

Counting the voltage drops, the output from the voltage regulator is around 0.8V and the LP38851 wants about 150mV of headroom when the load current is 800mA. If we assume Rsense is 0.1 Ohm, its voltage will be 0.1V when the load current is 1A. That puts the minimum working voltage at the left end of Rsense around 1.1V.

The current sensor needs 100mV for Ra, 0.7V for the PNP transistor, and whatever voltage you want for Rb when the load current is 1A. You'll probably want at least 1mV per 1mA, so at 1A you'll need at least 1.8V from GND to the top of Ra. That's larger than the other path's voltage, so the current sensor sets the minimum working voltage.

Then you need enough Vgs to get 1A though Q1, which will probably be around 2.5V with a PHP191NQ06LT. That means you'll need at least 4.3V to make all the pieces work without choking each other out. A 5V supply will give you about 700mV of wiggle room, which is adequate but not luxurious.

I'd suggest using two different resistors for Rb.. assuming Ra=1k, a 10k will give you 10mV per 1mA load current, or a working range of 300mV to 1V for 30mA to 100mA. Then you can use a 1k for higher current, giving you a range of 100mV to 1V for 100mA to 1A.

If you need fine control over the whole range, you can put multiple copies of the circuit above in parallel. Just connect them all at the point where power goes into the voltage regulator. Then you can have a coarse setting of 0V to 1V for 0mA to 1A, and a fine adjust of 0V to 1V for 0mA to 20mA or so.

Alternatively, there's a neat coarse/fine trick you can do with a dual gang potentiometer and a single pot with a lower value:
pots.jpg
pots.jpg (32.79 KiB) Viewed 377 times
https://www.adafruit.com/product/3393
https://www.adafruit.com/product/1789

The gang pots turn together, so the total resistance from VCC to GND is always 11k for the values given. The voltage across the 1k pot will always be 1/11th of the voltage between VCC and GND. Assuming a 5V supply, the 1k pot's full swing would be about 450mV, and the gang pot would move that 450mV slice anywhere between 0V and 5V.

If you want finer control, you can use a higher resistance ratio.. a 220 Ohm pot in the center would sweep a range of about 100mV for the same 5V supply.

User avatar
kw893
 
Posts: 4
Joined: Tue Jun 08, 2021 10:30 am

Re: Help with H Bridge for Low Power Application

Post by kw893 »

Thank you for the in-depth response! I'm new to designing circuits at this level (my background is in systems engineering and not electrical), and I really appreciate all of the information. I'm going to take some time to review these notes and redesign my circuit. I'll get back with you once I have something drawn up/as questions arise.

One last question for now though (and please forgive any misunderstandings). For the second current sensor circuit (the one with A2 and Q2), what would be the values of the voltage sources indicated (the one for Q1 and the other in the bottom left)? Is the Q1 voltage source whatever I want my voltage regulator to have for Vin (e.g. 3.3V from the Feather)?

Thank you for your time!!

User avatar
adafruit_support_mike
 
Posts: 67446
Joined: Thu Feb 11, 2010 2:51 pm

Re: Help with H Bridge for Low Power Application

Post by adafruit_support_mike »

kw893 wrote:For the second current sensor circuit (the one with A2 and Q2), what would be the values of the voltage sources indicated (the one for Q1 and the other in the bottom left)?
You can choose the voltage range you want, but that choice can force you to change the supply voltage to Q1.

It starts with the value of R.sense and the current that flows through it. 0.1 Ohm is a good choice, and at your given maximum current of 1A, the maximum voltage across Rsense will be 100mV.

A2-Q2 keep the voltage across Ra equal to the voltage across Rsense. If the voltage across Rsense is 100mV, the voltage across Ra will also be 100mV.

A2-Q2 also pass all the current through Ra down to Rb, so the ratio of Rb/Ra is a multiplier for the voltage across Rsense. If Rb=10Ra, 100mV across Rsense would become 1V across Rb.

I spent some time looking at how the voltages stacked up in the previous circuit, and how they could be rearranged or eliminated, I came up with this, which should run from a 3.3V supply:
3v3-current-reg.jpg
3v3-current-reg.jpg (67.02 KiB) Viewed 338 times

The main trick was replacing Q1 and Q2 with P-mosfets. That eliminated 2.5V of required headroom for Q1, and 0.7V of base-emitter voltage for Q2.

The overall circuit is still the same. The op amp pointing down is A2, and the one pointing up is A1. Both P-mosfets still work as source followers, so they won't oscillate or get unstable. A1 and its P-mosfet still make the voltage across Ra equal the voltage across the 0.1 Ohm sense resistor. All the current through Ra still flows through Rb, so Rb/Ra is still a multiplier for Rsense.

The 0V to 3V control voltage can come from a potentiometer, or from a 3.3V microcontroller with a DAC. The 0V-3V across Rb can be read by a 3.3V microcontroller with an ADC.

The mosfet gate voltages aren't important (or particularly accurate), I just wanted to make sure I wasn't asking them to do anything that would cause problems.

I think that's about as good as is physically possible for a 3.3V circuit.

User avatar
kw893
 
Posts: 4
Joined: Tue Jun 08, 2021 10:30 am

Re: Help with H Bridge for Low Power Application

Post by kw893 »

I appreciate all of the assistance! I’ve put the H-bridge temporarily on the back burner, as I’m trying to sort out a simpler circuit for testing my load. For this design, a physical switch will be used to toggle between the voltages rather than using electrical switching. The goal is to power it with two parallel AAA 1.5V cells and simply take the 1.5V and get 0.7-0.8V that connects to a DPDT (on-off-on) switch where the power and ground leads will be swapped on one side of the switch to create a negative voltage. I’ve attached my current schematic for it, but I’m unable to get it to work (I’m using LP38851 instead of LP38852 for my breadboard setup - the difference being the LP38852 handles higher current). The LT1307 5V regulator works, but it is unable to provide 5V to the LP38851 when it’s connected to the Vbias; Vbias is only reading 1.2V. Thus, the output voltage is incredibly low (13 – 20 mV). I know it has to do with the batteries, as I’ve gotten the circuit to work when I power it with the 3.3V logic from my Feather or use a 3.7V Li-ion cell. I even tried connecting the batteries in series to create a ~3V source voltage, but it still didn’t work. Are the AAA cells too low-power? With as simple of a goal as I have for the circuit, I feel like the solution should also be simple and straight-forward. I can’t seem to find a thru-hole regulator that can take 1.5V to 0.8V, and I want to be able to test the circuit on a breadboard before designing a PCB. I know a voltage divider with resistors would be the simplest, but I’m concerned about the inefficiency.

Is rail splitting possible and/or recommended at this voltage level? I can’t find components capable of splitting 1.5V (since 0.75V would be sufficient for the load) that are thru-hole.

Note: WIN_PWR and WIN_GND in the schematic are just the positive and negative leads of the load.

Datasheets:
LT1307: https://www.analog.com/media/en/technic ... 1307fa.pdf
LP38851: https://www.ti.com/lit/ds/symlink/lp388 ... 7727188758
LP38852: https://www.ti.com/lit/ds/symlink/lp388 ... 3671024763
(The DPDT switch is just a component in the EasyEDA library, a different one would be selected)
Attachments
Basic_Ckt.PNG
Basic_Ckt.PNG (92.87 KiB) Viewed 144 times

User avatar
adafruit_support_mike
 
Posts: 67446
Joined: Thu Feb 11, 2010 2:51 pm

Re: Help with H Bridge for Low Power Application

Post by adafruit_support_mike »

Yeah, AAA cells are probably too small for your application. There are also major penalties for boosting the voltage to 5V then regulating it down to 0.8V.. I'd guess only 10% of the power that comes out of the battery would make it to the load. You'll probably lose about 10% in the boost circuit, then you'll burn off 85% of what's left as heat in the 0.8V reg.

If you want more current capacity use C or D cells, or a LiPo.

Locked
Please be positive and constructive with your questions and comments.

Return to “General Project help”