Thanks for the analysis and comments! As you can see, even when having success designing a working circuit, my analysis skills are clearly still lacking, and as many other designers, I still design somewhat by trial and error when it comes to power layouts. I did run spice analysis beforehand to compare what happens when I place 2nH of parasitic inductances in different legs, and to some degree, tried to simulate parasitic capacitances from the ground plane. I also simulated the diodes, and they did have similar effect in simulation as they did in real world. In simulation, they also go in conduction (not only acting as capacitance).
Although you didn't provide exact dimensions of the source trace, it looks roughly like 3 x 12 mm (counting length from the pin/pad). You didn't mention the stackup, but if the top prepreg is 10 mils (0.25 mm) (typical for a 1.6mm overall thickness, 4 layer proto fab?)
Well guessed
.
Add 10nF (C0G) in parallel with each transistor, as close as possible. Probably divide in half (use pairs of 4.7nF), so each one can flank the transistors. You can't make a low inductance capacitor (an SMT chip is about 1nH, period), but you can put in more of them, at least where you have any room to place them at all...
I do have 4.7nF of capacitance there right now - but as the RC snubber. R is around 1 ohm. I was thinking that damping the resulting LC circuit with R would be a good idea, forming a traditional RC snubber. The snubber is as close as humanly possible, as you can see from the layout, but I can see that the resistor inevitably adds another 1nH or even more to the 1nH coming from the capacitor already.
The energy is E = 0.5 * (10nF) * (14V)^2 = 0.98uJ. At 150kHz, this is 0.147W.
Currently I'm losing half of that in the RC snubber. It's not an efficiency issue. If I had to go to 22nF range and above, it would start hurting. But with 4.7nF RC snubber, the SW overshoot is kept below 20% which I consider good enough.
And indeed, this is a sign that your circuit, as shown, is very poorly matched. When Zsw = Zo, the losses due to magnetic (current commutation) and electric (voltage commutation) transitions will be equal.
Am I reading you correctly that the way to "match" the circuit is to increase the capacitance from what I'm having from FET Coss alone, because reducing inductance any more is not practical? When the capacitance and inductance are in match, Zo is minimized.
Does the RC snubber serve some kind of double purpose here, acting to make the layout less inductive by adding capacitance, and also providing damping by using R?
The ~40ns deadtime the ADP3120 provides is a huge margin.
This is indeed more than enough, and unoptimally long. I still opted to use an integrated driver with deadtime generation. Maybe if I were more ambitious, I could have found and considered using a bootstrap driver
without any kind of deadtime logic and crossconduction prevention; it's just I've never seen those. I went for the easy solution.
Driving the output stage with adjustable deadtime, or even on-purpose cross-conduction, would have really been easy from the control viewpoint (STM32F334).
It takes a minimum time of:
dt = L dI / V
= (5nH) * (20A) / (14V)
= 7ns
to fully commutate the load current from +V to GND, and vice versa.
This happens to be quite well in line with my measured switching time of 7ns
.
My thought regarding making it more compact was to skip the common source inductance approach and try to make it compact and "stiff" enough so that you can live with the diode's reverse recovery induced current spike, and to limit its capability to turn this into an unwanted voltage spike at SW and/or Vbus. As your design is already double sided, how about placing both FETs back to back at the same position. You could collect all supply capacitance at the one end, and the inductor at the other. Snubber aside the two.
This double sided solution would seem to have similar inductance to what I'm having now - going to the opposite side adds 1.55mm automatically, which is practically the same as the distance between the FETs currently.
I have tough about all kind of gimmicks. One crazyish idea I came with was that idea of FETs on the opposite sides, with ground plane and Vin plane on opposite sides as well, then placing 0603 ceramics in the holes, soldering the ends to the planes. This could be risky because the ceramic could crack, but this would reduce the extra inductance of going through a via first.
For bulk capacitance, I suggest to use the largest available value in your desired package (0603?), use capacitors with at least doubled voltage rating (X7R / X5R nonlinearity when going too close to its rated voltage). Don't mix small and large capacitance values, like 100nF + 10uF, as this adds a parasitic pole (resonance between the 100nF and ESL of the 10uF cap).
I'm using 4.7uF 25V Samsung X5R (X5R was chosen because of price, availability and because this will be actively fan cooled and used in lab environment) in 0805. I placed in two 100nF caps nearest to the FETs because this seems to be the general advice, and I even included this in my spice simulation (adding a smaller cap with less parasitic inductance), and it did help in simulation. Removing these 100n caps would be a good test; if they serve no purpose or are detrimental, they should be removed
.
You say that you will run your circuit in two quadrants. In the (reverse?) boost direction you run into the problem that current through the inductor is reversed. This creates possible problems:
- the low side is now switching "at voltage", generating switching losses on top of its conduction losses
- you will have ringing below GND, do you have measurements?
- the diode reverse recovery problem jumps over to the high side switch
I don't have too many measurements of the boost operation right now! I have tested it up to 18A boost, and scoped it up to 10A, but didn't save the images
. This is what you get when you test it in the middle of the night, and say: no problems in sight! There still might be some lurking.
Regarding inductor choice: a good start is double overrating. The thermal figures mostly only account for conduction losses, depending on operating frequency you need to add a similar figure for magnetization losses. Maybe testing different series from a selection of manufacturers. High frequency capability in the datasheet is also a hint. I have good experience with Vishay IHLP series.
Yes, the total lack of core loss specifications is bugging me; I also can't use super expensive inductors. About $3 is maximum. I went with SRP1265A-3R3M for prototypes ($1 price is great), DC loss specified to 18A, but with fan cooling in room temp environment, I'm getting 17A out of it without problems even AC losses included. Anyways, I'm considering upgrading to Vishay IHLP6767GZER3R3M01, DC loss specified to 28A, as the inductor is the weakest link right now, the FET planes are relatively cool to touch at 17A. This would allow me to go to about 22-23A, where the losses are rather well balanced; all the components used are starting to be limiting at the same time.
If a few bucks don't count in this hobby project, you could choose beafier MOSFETs, available parts for similar package / voltage combo go down into the micro-ohms range. For example PSMN1R2-25YLD, that is around 1mOhm. (It has also double recovery charge though...)
It's not a hobby project actually, and cost is somewhat important factor.
More importantly, lowering Rds(on) too much easily makes switching losses go up (also the PSMN**-YLD package you suggest has more parasitic induncance than the -MLC packaging option I'm using!).
You can already see the difference when you compare PSMN2R8-25MLC and PSMN9R0-25MLC; Qgtot is 16.3nC vs. 5.4nC; tr, tf are 25, 13 ns vs. 10, 6 ns.
Of course, if there was an imaginary PSMN7R5-25MLC part with it's static and dynamic properties linearly interpolated between PSMN2R8 and PSMN9R0, I'd be using it on the top side
. Currently, on the top, there is a little bit more conduction loss than would be optimal, possibly. It's not limiting, however.
Indeed, using PSMN1R2 on the bottom and PSMN2R8 on the top, then reducing fsw to limit switching losses, then using a considerably bigger inductor, would allow me to increase the efficiency further from the current 94% to maybe 96%. Then again, much more losses are happening on wiring, fusing and connectors; 4mm banana lead connections used for outputs have 5mOhm of resistance, fuses create 3mOhm, inductor is 6.8mOhm (the replacement will be 3.9 mOhm) and so on. In this regard, combined FET Rds(on) 2/3*2.8mOhm+1/3*8.65mOhm = 4.7mOhm is well in line.
You said that your transistors died in the past. I am still convinced that D-S overvoltage from ringing cannot be the cause. Possibly gate breakthrough, maybe add zener diodes parallel to the gate, close to the transistors.
It's possible you are right; that earlier design did have the FET driver further away. Now the driver is on the top layer, as close as the FETs as possible. Earlier design also had more ringing and more overshoot, which could couple to gates, too. Removing this overshoot and ringing with RC snubber solved this anyway.
- they specify -10V absolute maximum negative ringing for the SW node. Not sure what happens beyond that. Is it possible that you exceeded this during boost mode?
I have seen negative spikes down to about -2.5V in my scope during boost, but have no records of this
.
- how do you drive the /OD pin when the supply voltage is decreasing? The chip has UVLO of 3.7V, which is too low for the MOSFETs.
ADC converts Vin at 150 kHz continuously running; when it drops below 8V, an ADC-integrated watchdog quickly provides highest-priority ISR pre-empting any other ISR, this ISR overrides the PWM generation, asserts the FET driver for 7 to 14 microseconds to discharge the inductor in the right (decreasing) direction if the latest current measurement is over 14A, to make sure the small freewheeling diodes (the original reason for this topic
) can handle the pulse. Then the output disable pin is asserted. All of this takes little enough time so that the capacitors can supply it. The ISR even has time to print debug information to UART after the shutdown, using the Vin caps.
This continuous ADC with ADC watchdog functionality leading to safety_shutdown() ISR function was the first thing I implemented and tested, and I have only blown 1 FET during all the time doing lots of stupid things in both SW and HW side
. It detects Vin<8V, Vin>14.5V, Vout>5V, ILpk < -26A, ILpk > +26A and works with less than a few microseconds of latency during any of these issues.