capacitor-temperature assumes X5R for Samsung CL05B (X7R) parts: the MPN field is not read and the hint says the dielectric isn't in the part number

noah · ·closed by Colby Knox

adom-fields 0.10.7 · adom/core (Hydrogen local workspace, WSL2) · KiCad 10.0.4 board

What I did: solved a 2-layer LED strip (50 x SK6812-type LEDs, each with a 100 nF 0402 decoupling cap) in an aluminium channel. Every cap's footprint carries Value 100n, MPN CL05B104KO5NNNC and Manufacturer Samsung Electro-Mechanics.

What happened: the review reports

capacitor-temperature: 44 ceramic capacitor(s) sit within 10 °C of an 85 °C rating, or over it (C18 78 °C, C15 78 °C, ...); their dielectric isn't in the value or part number, so 85 °C (X5R) is assumed

partValues in fields.json holds only 100n, so the MPN field is not read, and the hint says the dielectric is not in the part number when it is: Samsung's CL series puts it in the 5th character (CL05B104...: B = X7R, A = X5R, C = C0G). These parts are rated 125 °C, so the finding is a false alarm, and the hint sends the user to change parts that are already right.

Expected: read the footprint's MPN (or Manufacturer Part Number) field when the value has no dielectric, and decode the common MLCC part-number schemes (Samsung CL, Murata GRM, TDK C/CGA, Yageo CC, KEMET C...); when it still cannot tell, say "the dielectric could not be read from the value or the MPN field" rather than "isn't in the part number".

1 Reply

Colby Knox marked this in progress ·
Colby Knox mentioned this in pull request #15 ·
Colby Knox ·

Fixed in adom-fields 0.10.8. Upgrade with adom-wiki pkg install adom/adom-fields.

What changed

  • Your MPN field was already being read, but only the literal text "X7R", "C0G" and so on counted. The dielectric letter codes inside part numbers weren't decoded. They are now:
    • Samsung CL (A X5R, B X7R, C C0G, F Y5V), so CL05B104KO5NNNC reads as X7R, 125 °C.
    • Murata GRM, GCM, GCJ, GRT and GJM (5C, R6, R7, C7, C8, D7, F5).
    • KEMET C… (R, P, G, U, V).
    • Walsin (N, B, X, F).
    • TDK and Yageo spell the dielectric out (X7R, NPO), and that already worked. X8R and X8L now count as 150 °C.
  • A code that isn't in the table is never guessed. That part stays at the assumed 85 °C.
  • Each entry in checks.capacitors in fields.json now has dielectric, ratingFrom (for example "MPN CL05B104KO5NNNC (Samsung B code)") and mpn, so you can see where each rating came from.
  • When a rating is still assumed, the finding now says the dielectric couldn't be read from the value or the MPN field, and how many of those parts have no MPN field at all. It no longer says the part number lacks it. Its fix now starts with filling in the MPN field.

How it was tested

  • A test board with six 100 nF 0402 caps next to hot LEDs, at about 80 °C like yours:
    • 0.10.7 flagged all six.
    • 0.10.8 reads the Samsung CL05B and Murata GRM155R7 parts as X7R and drops them. It still flags one cap with no MPN field and one whose MPN has no code it knows, with the new wording.
  • Unit tests over 25 part numbers from the six vendors, including codes that must stay unread.
  • Four real boards that carry MPNs: the decoder read Murata, Walsin and Samsung parts correctly. Across six real boards, no other finding changed.

Not tested: your LED strip board itself, since we don't have the file. Re-running it on 0.10.8 should leave no capacitor-temperature finding for the CL05B parts.

Colby Knox closed this ·

Log in to reply.