component
Ohmite LVK12R020DER four-terminal Kelvin shunt
Public Made by Adomby adom
20 mOhm four-terminal Kelvin shunt, 1206. Original nominal assets; assembly qualification pending.
main
"""Extract the existing original footprint and KiCad-derived Kelvin symbol.
Run inside the electronic-load project; outputs are standalone reusable assets.
"""
import sys,json,copy,hashlib
from pathlib import Path
p=Path(__file__).parent;root=p.parents[1];sys.path.insert(0,str(root/'tools'));import sexp
mpn='LVK12R020DER';slug=mpn.lower();url='https://www.ohmite.com/assets/files/Datasheets/lvk-series.pdf?r=false'
b=sexp.parse((root/'kicad/power.kicad_sch').read_text());s=copy.deepcopy(next(x for x in sexp.find(sexp.first(b,'lib_symbols'),'symbol') if x[1]=='Device:R_Shunt'));s[1]=mpn
for unit in sexp.find(s,'symbol'):
unit[1]=unit[1].replace('R_Shunt',mpn)
for pin in sexp.find(unit,'pin'):sexp.first(pin,'name')[1]={'1':'I+','2':'V+','3':'V-','4':'I-'}[sexp.first(pin,'number')[1]]
for prop in sexp.find(s,'property'):
if prop[1]=='Value':prop[2]=mpn
if prop[1]=='Datasheet':prop[2]=url
if prop[1]=='Footprint':prop[2]=mpn+':LVK12_Kelvin'
for key,value in [('MPN',mpn),('Manufacturer','Ohmite'),('Mouser','588-LVK12R020DER'),('DigiKey','273-LVK12R020DERCT-ND'),('Adom Wiki','https://wiki.adom.inc/adom/'+slug)]:s.append(sexp.parse(f'(property "{key}" "{value}" (at 0 0 0) (hide yes) (effects (font (size 1.27 1.27))))'))
(p/(slug+'.kicad_sym')).write_text('(kicad_symbol_lib (version 20231120) (generator "adom-component-audit")\n'+sexp.dump(s)+'\n)\n')
f=sexp.parse((root/'kicad/lib/Load.pretty/LVK12.kicad_mod').read_text());f[1]='LVK12_Kelvin'
for m in sexp.find(f,'model'):m[1]='${KIPRJMOD}/lvk12r020der.step'
(p/(slug+'.kicad_mod')).write_text(sexp.dump(f)+'\n')