Sign in with STEVE

steve/sot-package

Small-outline transistor packages by TI outline: SOT-23, thin SOT-23-5/6/8, SC-70-3/6, SOT-553 and SOT-563.

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 67 lines · Python · STEVE runtime · checked
Download
1"""Small-outline transistor package (SOT-23, thin SOT-23, SC-70, SOT-563/553) by TI package outline. Centred on the origin with the seating plane on the XY
2plane; pins 1 to k on the -Y side running +X, the others on +Y running back. Dimensions from the TI outline named by `package`; see the README."""
3from steve import Model
4
5package = "DBZ0003A" # TI package outline
6detail = "full" # full: body, pin-1 mark and leads; simple: the body only
7
8# outline: (label, lead form, pitch, pin slots on -Y, pin slots on +Y, body length along the pin rows, body width across them, lead tip to tip, height
9# max, standoff, lead width, foot length, lead thickness), ranges as (min, max), all in mm. Pin slots are pin positions in pitches from the centre.
10# TI package outlines, https://www.ti.com/lit/pdf/<doc>: DBZ0003A mpds108 (4214838/F 08/2024), DDC0005A mpds123 (4220752/C 08/2024), DDC0006A mpds124
11# (4214841/E 08/2024), DDF0008A mpds569 (4222047/E 07/2024), DCK0003A mpds295 (4220745/F 11/2024), DCK0006A mpds114 (4214835/D 11/2024), DRL0005A mpds158
12# (4220753/E 11/2024), DRL0006A mpds159 (4223266/F 11/2024). DDF0008A's tip to tip is given as typical. DRL leads are flat: the foot is the length on the
13# underside, and the standoff the drawn 0.00 to 0.05 gap.
14OUTLINES = {
15 "DBZ0003A": ("SOT-23", "gull", 0.95, (-1, 1), (0,), (2.80, 3.04), (1.2, 1.4), (2.10, 2.64), 1.12, (0.01, 0.10), (0.3, 0.5), (0.2, 0.6), (0.08, 0.20)),
16 "DDC0005A": ("SOT-23-5-thin", "gull", 0.95, (-1, 0, 1), (1, -1), (2.75, 3.05), (1.45, 1.75), (2.55, 3.05), 1.1, (0.0, 0.1), (0.3, 0.5), (0.3, 0.6), (0.12, 0.20)),
17 "DDC0006A": ("SOT-23-6-thin", "gull", 0.95, (-1, 0, 1), (1, 0, -1), (2.75, 3.05), (1.45, 1.75), (2.55, 3.05), 1.1, (0.0, 0.1), (0.3, 0.5), (0.3, 0.6), (0.12, 0.20)),
18 "DDF0008A": ("SOT-23-8-thin", "gull", 0.65, (-1.5, -0.5, 0.5, 1.5), (1.5, 0.5, -0.5, -1.5), (2.85, 2.95), (1.55, 1.65), (2.65, 2.95), 1.1, (0.0, 0.1), (0.22, 0.38), (0.3, 0.6), (0.08, 0.20)),
19 "DCK0003A": ("SC-70-3", "gull", 0.65, (-1, 1), (0,), (1.85, 2.15), (1.1, 1.4), (1.8, 2.4), 1.1, (0.0, 0.1), (0.15, 0.30), (0.26, 0.46), (0.08, 0.22)),
20 "DCK0006A": ("SC-70-6", "gull", 0.65, (-1, 0, 1), (1, 0, -1), (1.85, 2.15), (1.1, 1.4), (1.8, 2.4), 1.1, (0.0, 0.1), (0.15, 0.30), (0.26, 0.46), (0.08, 0.22)),
21 "DRL0005A": ("SOT-553", "flat", 0.5, (-1, 0, 1), (1, -1), (1.5, 1.7), (1.1, 1.3), (1.5, 1.7), 0.6, (0.0, 0.05), (0.15, 0.27), (0.2, 0.4), (0.08, 0.18)),
22 "DRL0006A": ("SOT-563", "flat", 0.5, (-1, 0, 1), (1, 0, -1), (1.5, 1.7), (1.1, 1.3), (1.5, 1.7), 0.6, (0.0, 0.05), (0.15, 0.27), (0.2, 0.4), (0.08, 0.18)),
23}
24# The gull wing's bend heights and the pin-1 mark are proportions, for looks.
25
26
27def mid(pair):
28 return (pair[0] + pair[1]) / 2
29
30
31label, form, pitch, low, high, L, W, span, top, standoff, lead_w, foot, lead_t = OUTLINES[package]
32length, width, span, standoff, lead_w, foot, lead_t = mid(L), mid(W), mid(span), mid(standoff), mid(lead_w), mid(foot), mid(lead_t)
33model = Model()
34model.plane("body_plane", on="XY", offset=standoff, name="Body")
35with model.sketch("body_sketch", on="body_plane", name="Body") as sk:
36 sk.rect("body_rect", (-length / 2, -width / 2), (length / 2, width / 2))
37model.extrude("body", "body_sketch", distance=top - standoff, name="Body")
38if detail == "full":
39 model.plane("top_plane", on="XY", offset=top, name="Top")
40 with model.sketch("mark_sketch", on="top_plane", name="Pin-1 mark") as sk:
41 sk.circle("mark_circle", (-length / 2 + 0.2 * width, -width / 2 + 0.2 * width), 0.07 * width)
42 model.extrude("mark", "mark_sketch", distance=-0.03, op="cut", name="Pin-1 mark")
43 arm_z = (top + standoff) / 2
44 for tag, side, slots in (("low", -1, low), ("high", 1, high)):
45 y_out, y_body = side * span / 2, side * width / 2
46 y_bend = side * (span / 2 - foot) if form == "gull" else y_body
47 y_in = y_bend if form == "gull" else side * (span / 2 - foot)
48 with model.sketch(f"feet_{tag}", on="XY", name="Leads") as sk:
49 for i, slot in enumerate(slots):
50 x = slot * pitch
51 sk.rect(f"foot_{tag}_{i}", (x - lead_w / 2, min(y_in, y_out)), (x + lead_w / 2, max(y_in, y_out)))
52 model.extrude(f"feet_{tag}_body", f"feet_{tag}", distance=lead_t, name="Leads")
53 if form == "gull":
54 model.plane(f"arm_plane_{tag}", on="XY", offset=arm_z, name="Leads")
55 with model.sketch(f"arms_{tag}", on=f"arm_plane_{tag}", name="Leads") as sk:
56 for i, slot in enumerate(slots):
57 x = slot * pitch
58 sk.rect(f"arm_{tag}_{i}", (x - lead_w / 2, min(y_body, y_bend) - lead_t / 2), (x + lead_w / 2, max(y_body, y_bend) + lead_t / 2))
59 model.extrude(f"arms_{tag}_body", f"arms_{tag}", distance=lead_t, name="Leads")
60 with model.sketch(f"legs_{tag}", on="XY", name="Leads") as sk:
61 for i, slot in enumerate(slots):
62 x = slot * pitch
63 sk.rect(f"leg_{tag}_{i}", (x - lead_w / 2, y_bend - lead_t / 2), (x + lead_w / 2, y_bend + lead_t / 2))
64 model.extrude(f"legs_{tag}_body", f"legs_{tag}", distance=arm_z + lead_t, name="Leads")
65model.material("pla", color="#26282b")
66result = model.result()
67

Small-outline transistor packages for board layouts: body, pin-1 mark and leads, each from a named TI package outline. See the README.

Small-outline transistor package

Small-outline transistor packages (SOT-23, thin SOT-23, SC-70, SOT-553 and SOT-563), each modelled from a named TI package outline. The package is centred on the origin with the seating plane on the XY plane. Pins 1 to k are on the -Y side running +X, and the others are on +Y running back, at the positions the outline shows.

Source

TI package outlines at https://www.ti.com/lit/pdf/<document>:

Outline Package Pins Pitch Height max Document Drawing
DBZ0003A SOT-23 3 0.95 mm 1.12 mm mpds108 4214838/F 08/2024
DDC0005A SOT-23, thin 5 0.95 mm 1.1 mm mpds123 4220752/C 08/2024
DDC0006A SOT-23, thin 6 0.95 mm 1.1 mm mpds124 4214841/E 08/2024
DDF0008A SOT-23, thin 8 0.65 mm 1.1 mm mpds569 4222047/E 07/2024
DCK0003A SC-70 3 0.65 mm 1.1 mm mpds295 4220745/F 11/2024
DCK0006A SC-70 6 0.65 mm 1.1 mm mpds114 4214835/D 11/2024
DRL0005A SOT-553 5 0.5 mm 0.6 mm mpds158 4220753/E 11/2024
DRL0006A SOT-563 6 0.5 mm 0.6 mm mpds159 4223266/F 11/2024

Each outline gives body length and width, lead tip to tip, maximum height, standoff, lead width, foot length and lead thickness. The model uses the middle of each range, and the height is the maximum, so read it as an envelope. DDF0008A gives its tip to tip as typical. The SOT-553 and SOT-563 leads are flat on the underside: their foot is the lead length under the package.

The thin SOT-23 outlines (1.1 mm maximum) are what catalogues call TSOT-23. The standard-height SOT-23-5 and SOT-23-6 (1.45 mm maximum) aren't this part yet.

Proportions, for looks only: the gull wing's bend heights and the pin-1 mark.

Other SOT packages (SOT-89, SOT-223, SOT-143 and so on) aren't here yet; see COVERAGE.md.

  1. 1.0.0 Latest
More #ic-package
STEVEMIT

steve/son-package

No-lead small-outline IC packages by TI outline: WSON-8/10/12/16, VSON-8 and X1SON-8, 0.4 to 0.8 mm pitch, with exposed thermal pad.

1 7 sizes 0 2 hours ago v1.1.0
STEVEMIT

steve/so-package

Small-outline IC packages by TI outline: SOIC-14/16 and 20W, SSOP-16/20/28, TSSOP-8 and TSSOP-48/56 (6.1 mm body).

0 10 sizes 0 2 hours ago v1.0.0
STEVEMIT

steve/tssop-package

TSSOP package, 4.4 mm body, 0.65 mm pitch: 14, 16, 20 and 24 pins.

0 5 sizes 0 2 hours ago v1.0.0
STEVEMIT

steve/qfn-package

Quad flat no-lead IC packages by TI outline: VQFN-20 (0.65 mm pitch) and VQFN-24/32/48/64 (0.5 mm pitch), with exposed thermal pad.

0 6 sizes 0 2 hours ago v1.0.0