Finding the right switches for your DCDC-Converter might be not as straight forward as it looks on first sight. Both switches operate in rather different conditions and especially the reverse recovery loss appears to be often overlooked. This program tries to help you with the selection.
What it does:
- Read search results from part suppliers
- Download parts datasheets in PDF
- Extract specification values from the PDF files
- Store gathered parts specifications in a database or CSV file
- Compute power Loss estimation for a given DC-DC converter
-
acquire a parts list from digikey. go to digikey.com
-
narrow down the search filters so your have 500 or less results.
-
download the CSV files (click Download Table / First 500 Results)
-
Open
main.py
and adjust the path to the downloaded csv file:
read_digikey_results(csv_path='digikey-results/80V 26A 10mOhm 250nC.csv')
- Adjust the DCDC operating point:
dcdc = DcDcSpecs(vi=62, vo=27, pin=800, f=40e3, Vgs=12, ripple_factor=0.3, tDead=500e-9)
# buck converter
vi input voltage
vo output voltage
pin input power, alternatively you can set kwargs io (I_out) or ii (I_in).
f switching frequency
Vgs gate drive voltage for both HS and LS
ripple_factor the difference between the min and max coil current divided by mean coil current (assuming CCM)
tDead gate driver dead-time (happens 2 times per period)
- Run
python3 main.py
and it will download all datasheets (if not already found), extract values and compose a CSV file with loss estimations for the given DC-DC converter.
P_on HS conduction loss ~ D
P_on_ls LS conduction loss ~ (1 - D)
P_sw HS switching loss
P_rr reverse recovery loss when used as LS (sync fet)
P_dt_ls LS dead time loss ~ (dt * Vsd)
P_hs total loss caused by HS switch
P_2hs total HS loss with 2 parallel switches
P_ls total loss in LS switch
P_2ls total LS loss with 2 parallel switches
The program collects part specification values from different sources:
- Values from search results (Rds_on, Qg, Vds)
- Manual fields from
dslib/manual_fields.py
- Nexar API
- PDF Datasheet
- Text regex
- Tabula
- Table header aware iteration
- Row regex iteration
Values for Rds_on and Qgd are usually shown in the search results (Digikey, LCSC). Nexar API doesn't show the Qrr, and (tRise+tFall) only for some parts (especially values for newer chips are missing here). So I found the only way is to extract Qrr from the Datasheet. We use 2 techniques:
- Convert the PDF to txt and find the values with regular expressions. this can be tedious work, as table structure is not homogenous across manufacturers and some manufacturers use different formats across product series and release date. each extracted field usually requires its own regex since tables include testing conditions or design notes.
- use tabula (or another pdf2table program) to read the tables from the PDF. there is a python binding available that produces pandas DataFrames. find values by iterating the rows.
Downloads for some datasheet are protected by anti-robot mechanism. To avoid this, we use pyppeteer (Python port of puppeteer) with Chromium to simulate human user interaction. This will handle JS challenges, redirects and if the link points to a PDF-Preview page, we look for a download button and click it.
Chromiums PDF must be disabled, because we cannot access it through pupeteer.
chromiumUserDataPath/Default/Preferences
:
"plugins": {"always_open_pdf_externally": true},
- Tabula on macos: I had some issues getting java running on Mac M2, use zulu JDK
The power loss model for a DC-DC buck is based on this rOHM article. We assume CCM mode, coil current never touches
zero.
Note that loss from LS reverse recovery P_rr
is dissipated in HS. In other words, bad behaviour of LS heats up the HS.
The generated CSV file includes the estimated losses caused by a transistor when placed in the HS or LS slot.
Note that this power is not necessarily dissipated in the same switch.
In a buck converter, the high-side switch is desirably fast (low Q_d, r_g) and has low Rds_on. The LS sync fet operates in a rather different way, parasitic turn-on can become a problem here. Because we make use of the body diode, reverse recovery charge can cause high current peaks increasing losses in the HS switch and input capacitor. this eetimes article gives a good overview. https://github.com/fl4p/Fugu2/blob/main/doc/Mosfets.md
Most part suppliers have a parametric search function that is just good enough.
We can usually filter and sort by Vdss
, Id
, Qg
, Rds_on
.
For some specific applications we might want to filter more parameters that we can only find in the datasheet, such
as Qrr
.
synchronous DC-DC converter
- Conduction loss (Rds_on)
- Switching losses (tRise+tFall)
- Reverse recovery losses (Qrr)
- Gate drive losses
According to the Rohm AN, high-side (control fet) switching losses are ~= C * (tRise + tFall) with C=0.5 * V_in * I_o * f_sw.
To rank MOSFETS, we can come up with a FoM like Rds_on * Qrr * (tRise+tFall)
To reduce gate drive current and loss: Rds_on * Qgd * Qrr * (tRise+tFall)
FOM (Figure of Merit) is a common performance indicator to rank MOSFET power loss for DC-DC converter applications. Our aim is to reduce total mosfet loss:
P_mosfet = Pon + Psw + Prr + Pgd
Pon = A * Rds # A ~ Io * Vo/Vi
Psw = B * (tRise+tFall) # B ~ Vin * Io * f
Prr = C * Qrr # C = Vin * f
Pgd = D * Qg # D ~ Vgs^2 * f
P_mosfet = A * (Rds) + B * (tRise+tFall) + C * (Qrr) + D * (Qg)
It tries to indicate a score about how efficient the MOSFET is in a switching app (the lower the better).
FOM = Rds_on * Qg
Yoo et al propose a new FOM [2007, link]:
FOM_new = (Il²) * Rds_on + (4 * fs * Vgg) * Qg`
Il
: average load currentfs
: switching frequencyVgg
: gate driver supply voltage
However, with modern high-current gate drivers, low Qg
becomes less important.
High-efficiency converter use fast switching times and Qrr
becomes more
important src
Note that GaN-switches have a Qrr
of zero.
To find the best chip for a specific app, we can define our own custom scores, such as:
Rds_on * Qg / Vds
sqrt(Rds_on * Qg * Qrr)
Rds_on * Qrr
Rds_on * Qrr * Qg * (t_rise+t_fall)
In a half-bridge topology for synchronous DC-DC converters the HS and LS switch work in quite different conditions. Current through the LS usually flows from Source to Drain in the direction of the body diode. It acts as a synchronous rectifier aka. ideal diode
HS:
- Low Q_sw.
- Fast rise and fall time
LS:
- Low Q_rr
- Low Qgd/Qgs ratio
- High Vth
Qrr is usually defined by design and values from the data-sheet are not subject to production test. Qrr depends on temperature, reverse voltage V_R, forward current I_F and forward current transient dif/dt. Most datasheets only specify a single value under some given conditions. DS of IQD016N08NM5 includes one for dif/dt=100A/us and dif/dt=1000A/us
Most part suppliers dont have a parametric search for Qrr. Also filtering and sorting by FoM and custom FoM is not possible.
- 'PSMN4R2-80YSEX': Qrr timing plot
- UM1575 User manual spice models
- PSMP050N10NS2_T0_00601: Vplateau
- IPA050N10NM5S : Vplateau
- csd19506
- Digikey: use the filters to reduce number of results to 500 or less. then export csv
- N-Ch, 80V, Idc>25A, Qg<250nC, RdsON< 10mOhm 453 results 80V 26A 10mOhm 250nC.csv
- 100V
- LCSC: use Browser Developer Tools to copy HTML DOM of each results page.
- Use ocr (sample 'BUK7E4R0-80E,127.pdf', 'IPB019N08N3GATMA1' )
ocrmypdf
can recover the text, but doesn't recognize symbols correctly. - Mouser, API?
- Extract more fields
- Qgd/Qgs (self turn on)
- Vsd (body diode forward voltage)
- r_g
- https://www.discoveree.io/
- https://octopart.com/ (Ciss, rise&fall times, )
- https://epc-co.com/epc/design-support/part-cross-reference-search
- a very useful tool that comes with power loss calculations. i found some values to be off, e.g. IPA050N10NM5S Rds_on_max@10V is 5, in the app its 5.6.
https://www.discoveree.io/collateral/continental/PCIM2020_DiscoverEE_PowerLossModeling_AudioVisual.mp4 https://www.discoveree.io/collateral/PCIM_Europe_2020/PCIM2020_DiscoverEE_PowerLossModeling_Slides.pdf https://pcimasia-expo.cn.messefrankfurt.com/content/dam/messefrankfurt-redaktion/pcim_asia/download/pac2020/speakers-ppt/1/Shishir%20Rai.pdf https://ww1.microchip.com/downloads/en/Appnotes/01471A.pdf https://www.st.com/resource/en/application_note/dm00380483-calculation-of-turnoff-power-losses-generated-by-a-ultrafast-diode-stmicroelectronics.pdf https://www.vishay.com/docs/73217/an608a.pdf
fetlib mosfetlib fetfinder findfet mosdb