component
LTC2945CMS#PBF - Wide Range I2C Power Monitor
Public Made by Adomby adom
Analog Devices (Linear Technology) LTC2945CMS#PBF: wide range I2C power monitor, 0 V to 80 V current and voltage sensing, 12-bit ADC, 24-bit power, min/max and alerts, split SDA for opto-isolation, 0 C to 70 C, MSOP-12. KiCad, Fusion and Altium libraries, 3D model and datasheet.
main
#!/usr/bin/env python3
"""Super-low detail stand-in for the MS12 (MSOP-12) model, built from the dimensions measured on the high model
(provenance/dims-model.json): body box 3.00 x 4.039 x 0.85 mm from z = 0.10, and per lead a flat foot on the seating
plane, a riser and a shoulder into the body, 0.30 mm wide, pitch 0.65, tips at x = +-2.45.
Same frame and colours as the high model (Z up, seated on z = 0, pin 1 at -x/+y); no marking, no pin-1 dimple.
usage: superlow_ms12.py out.step (CadQuery python)"""
import sys
import cadquery as cq
out = sys.argv[1]
BODY = (0.0192, 0.0185, 0.0185); LEAD = (0.6453, 0.6383, 0.5721)
body = cq.Workplane("XY").box(3.0, 4.039, 0.85, centered=(True, True, False)).translate((0, 0, 0.10))
leads = None
for sx in (-1, 1):
for i in range(6):
y = -1.625 + i * 0.65
foot = cq.Workplane("XY").box(0.46, 0.30, 0.18, centered=(False, True, False)).translate((-2.45 if sx < 0 else 1.99, y, 0))
riser = cq.Workplane("XY").box(0.20, 0.30, 0.525, centered=(False, True, False)).translate((-1.99 if sx < 0 else 1.79, y, 0.0))
shoulder = cq.Workplane("XY").box(0.30, 0.30, 0.18, centered=(False, True, False)).translate((-1.79 if sx < 0 else 1.49, y, 0.345))
part = foot.union(riser).union(shoulder)
leads = part if leads is None else leads.union(part)
def srgb(c): # cq.Color takes sRGB and stores linear; pass the encoded value so the STEP keeps the high model's linear colour
return tuple(12.92 * v if v <= 0.0031308 else 1.055 * v ** (1 / 2.4) - 0.055 for v in c)
asm = cq.Assembly(name="MSOP-12-superlow")
asm.add(body, name="body", color=cq.Color(*srgb(BODY)))
asm.add(leads, name="pins", color=cq.Color(*srgb(LEAD)))
asm.save(out)
print("OK", out)