Skip to content

Latest commit

 

History

History
270 lines (201 loc) · 14.9 KB

Notes.MD

File metadata and controls

270 lines (201 loc) · 14.9 KB

Extensive parametric search of MOSFETs for DC-DC converters

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

How to use

  1. acquire a parts list from digikey. go to digikey.com

  2. narrow down the search filters so your have 500 or less results.

  3. download the CSV files (click Download Table / First 500 Results)

  4. Open main.py and adjust the path to the downloaded csv file:

read_digikey_results(csv_path='digikey-results/80V 26A 10mOhm 250nC.csv')
  1. 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)
  1. 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

Acquiring part specifications

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:

  1. 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.
  2. 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.

Datasheet download

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},

Troubleshooting

  • Tabula on macos: I had some issues getting java running on Mac M2, use zulu JDK

Power Loss Model

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.

DCDC

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.

Ranking mosfets

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)

Mosfet FOM

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 current
  • fs: switching frequency
  • Vgg: 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

Notes about Qrr

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.

Special Qrr Datasheets

  • 'PSMN4R2-80YSEX': Qrr timing plot
  • UM1575 User manual spice models
  • PSMP050N10NS2_T0_00601: Vplateau
  • IPA050N10NM5S : Vplateau

Qg_th

  • csd19506

Acquiring Parts Lists from Suppliers (Search Results)

  • Digikey: use the filters to reduce number of results to 500 or less. then export csv
  • LCSC: use Browser Developer Tools to copy HTML DOM of each results page.

TODO

Coss power loss

  • 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

Resources

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

names

fetlib mosfetlib fetfinder findfet mosdb