Compare versions
3 files changed, +164 −23
| @@ -1,11 +1,11 @@ | ||
| 1 | """Through-hole transistor packages standing on the board: TO-220AB (3 leads), TO-220AC (2 leads), TO-247AC (3 leads) and TO-92 (straight | |
| 2 | leads). Lead 1 is at the origin, the leads run along +X, the moulded front faces -Y (TO-92: the flat face) and the metal tab or pad is at the | |
| 3 | back (+Y). The board is the XY plane: the leads' shoulders (TO-92: the seating plane) rest on it and the leads go down through it. | |
| 4 | Dimensions from the makers' package drawings, listed in the README.""" | |
| 1 | """Through-hole transistor packages standing on the board: TO-220AB, TO-220AC, TO-220F, TO-262, TO-251AA, TO-247AC, TO-126, TO-92 (straight | |
| 2 | leads) and the TO-3, TO-18, TO-39 and TO-46 metal cans. Lead 1 is at the origin, the leads run along +X, the moulded front faces -Y (TO-92: | |
| 3 | the flat face) and the metal tab or pad is at the back (+Y). The board is the XY plane: the leads' shoulders (TO-92: the seating plane; the | |
| 4 | cans: the flange) rest on it and the leads go down through it. Dimensions from the makers' package drawings, listed in the README.""" | |
| 5 | 5 | from steve import Model |
| 6 | 6 | import math |
| 7 | 7 | |
| 8 | package = "TO-220AB" # TO-220AB, TO-220AC, TO-220F, TO-220F-2, TO-262, TO-247AC, TO-126, TO-92, TO-18, TO-18-2, TO-39 or TO-46 | |
| 8 | package = "TO-220AB" # TO-220AB, TO-220AC, TO-220F, TO-220F-2, TO-262, TO-251AA, TO-247AC, TO-126, TO-92, TO-3, TO-18, TO-18-2, TO-39 or TO-46 | |
| 9 | 9 | detail = "full" # full: body, tab and leads; simple: the body and tab only |
| 10 | 10 | |
| 11 | 11 | # Vishay Siliconix, "TO-220AB (High Voltage)", Package Information, document 92506, revision 30-Sep-2024 (DWG 6031), page 2 table; and |
| @@ -76,8 +76,35 @@ | ||
| 76 | 76 | E=(9.65, 10.67), E1=(6.22, 6.22), e=(2.54, 2.54), L=(13.46, 14.10), L1=(1.65, 1.65), L2=(3.56, 3.71)) |
| 77 | 77 | # Proportions, for looks: the TO-262 tab above the body is the body's width with its top corners chamfered 0.04 x the width (drawn, not |
| 78 | 78 | # dimensioned), and the thermal pad on the back is flush, from the body's top down. |
| 79 | # Vishay Siliconix, "Case Outline for TO-251AA (High Voltage)", Package Information, document 91362, revision 27-Dec-2021 (ECN E21-0682 | |
| 80 | # rev C, DWG 5968), Option 1, page 1 table (min, max) in mm, the middle (a single value where the table gives only a min: D1, E1). A body | |
| 81 | # thickness, A1 the leads' back face to the back, b lead width, b2 shoulder width, b4 tab width, c lead thickness, c2 tab thickness, D body | |
| 82 | # height, D1 the thermal pad from the tab's top down, E width, E1 the pad's width, e pitch, L lead length below the body, L1 shoulder length | |
| 83 | # below the body (the leads narrow from b2 to b there; section C-C is cut inside it), L2 the tab above the body, L3 the zone below the body | |
| 84 | # where the lead is uncontrolled (inside L1, not modelled). THETA2: the tab's top corners are chamfered at 25 to 35 deg (the middle, 30). | |
| 85 | TO251AA = dict(A=(2.18, 2.39), A1=(0.89, 1.14), b=(0.64, 0.89), b2=(0.76, 1.14), b4=(4.95, 5.46), c=(0.46, 0.61), c2=(0.46, 0.86), | |
| 86 | D=(5.97, 6.22), D1=(5.21, 5.21), E=(6.35, 6.73), E1=(4.32, 4.32), e=(2.29, 2.29), L=(8.89, 9.65), L1=(1.91, 2.29), | |
| 87 | L2=(0.89, 1.27), L3=(1.14, 1.52)) | |
| 88 | THETA2 = (25, 35) | |
| 89 | # Proportions, for looks: the TO-251AA tab's corner chamfers drop a third of L2 (as drawn); the moulding's ejector mark, the body's draft and | |
| 90 | # the lead tips' taper aren't modelled. | |
| 91 | CHAMFER_DROP = 1 / 3 | |
| 92 | # Central Semiconductor, "Package Details - TO-3" (REV R2, R0 9-April 2009), table (min, max) in mm, the middle: A flange length, B can | |
| 93 | # diameter, C height above the flange's underside, D lead length below it, E flange thickness, F lead diameter, G mounting holes apart, | |
| 94 | # H the leads' line to the far hole, J lead 1 to lead 2, K lead 2 to the holes' axis, L hole diameter, M flange width. The drawing's lower | |
| 95 | # view is from below (the can dashed): turned to look from above, with lead 2 along +X from lead 1, the far hole is toward +Y. | |
| 96 | TO3 = dict(A=(38.50, 39.96), B=(19.00, 22.23), C=(6.35, 11.43), D=(11.00, 13.10), E=(1.38, 1.65), F=(0.90, 1.15), G=(29.90, 30.40), | |
| 97 | H=(16.50, 17.30), J=(10.67, 11.18), K=(5.21, 5.72), L=(3.84, 4.36), M=(25.00, 26.67)) | |
| 98 | # Proportions, for looks: the flange outline is read as drawn, round the holes ((A - G) / 2 radius) and round the centre (diameter M) | |
| 99 | # joined by tangent lines; the can's top edge is rounded 0.08 x B (drawn, not dimensioned). | |
| 100 | CAN_ROUND = 0.08 | |
| 101 | # The cans are drawn steel shells, closed at the top and open into the header. No sheet gives the wall, so it is fitted to the can's mass on | |
| 102 | # Central's material sheets (TO-3 R3 20-September 2018: 2,550 mg; TO-18 R4 10-February 2020: 114.99 mg; TO-39 R4 16-July 2018: 350 mg; | |
| 103 | # TO-46 R2 16-July 2018: 109.313 mg), at the model's density (iron 7.87, steel 7.85), rounded to 0.01 mm. A proportion, not a drawn size. | |
| 104 | CAN_WALL = {"TO-3": 0.44, "TO-18": 0.20, "TO-39": 0.25, "TO-46": 0.70} | |
| 79 | 105 | |
| 80 | PACKAGES = ("TO-220AB", "TO-220AC", "TO-220F", "TO-220F-2", "TO-262", "TO-247AC", "TO-126", "TO-92", "TO-18", "TO-18-2", "TO-39", "TO-46") | |
| 106 | PACKAGES = ("TO-220AB", "TO-220AC", "TO-220F", "TO-220F-2", "TO-262", "TO-251AA", "TO-247AC", "TO-126", "TO-92", "TO-3", "TO-18", "TO-18-2", | |
| 107 | "TO-39", "TO-46") | |
| 81 | 108 | if package not in PACKAGES: |
| 82 | 109 | raise ValueError("package: " + ", ".join(PACKAGES)) |
| 83 | 110 | |
| @@ -105,6 +132,22 @@ | ||
| 105 | 132 | else: |
| 106 | 133 | sk.polyline(f"{fid}_outline", profile, closed=True) |
| 107 | 134 | model.extrude(fid, f"{fid}_sketch", distance=y0 - y1, op=op, body=body, name=name) |
| 135 | ||
| 136 | ||
| 137 | def can_shell(fid, x, y, z0, zt, R, t, r, name): | |
| 138 | """A can revolved about the vertical axis at (x, y): radius R from z0 to zt, wall t, closed at the top (its edge rounded r) and open at | |
| 139 | the bottom.""" | |
| 140 | if r > 0: | |
| 141 | ri = max(r - t, 0.0) | |
| 142 | arc = [(R - r + r * math.cos(math.pi / 2 * k / 8), zt - r + r * math.sin(math.pi / 2 * k / 8)) for k in range(9)] | |
| 143 | inner = [(R - t - ri + ri * math.cos(math.pi / 2 * k / 8), zt - t - ri + ri * math.sin(math.pi / 2 * k / 8)) for k in range(9)] | |
| 144 | else: | |
| 145 | arc, inner = [(R, zt)], [(R - t, zt - t)] | |
| 146 | sec = [(R - t, z0), (R, z0)] + arc + [(0.0, zt), (0.0, zt - t)] + inner[::-1] | |
| 147 | model.plane(f"{fid}_plane", on="XZ", offset=-y, name=name) | |
| 148 | with model.sketch(f"{fid}_sketch", on=f"{fid}_plane", name=name) as sk: | |
| 149 | sk.polyline(f"{fid}_section", [(x + u, z) for u, z in sec], closed=True) | |
| 150 | model.revolve(fid, f"{fid}_sketch", axis=((x, y, 0.0), (0.0, 0.0, 1.0)), op="new", body=f"{fid}_body", name=name) | |
| 108 | 151 | |
| 109 | 152 | |
| 110 | 153 | def leads(xs, b, c, L, shoulder, widths, top): |
| @@ -162,6 +205,68 @@ | ||
| 162 | 205 | bodies = {"body_body": ("pa6", "#1c1c1e"), "tab_body": ("copper", "#c8ccd0")} |
| 163 | 206 | if detail == "full": |
| 164 | 207 | leads(xs, t["b"], t["c"], t["L"], t["L2"], [t["b2"]] * 3, z0) |
| 208 | elif package == "TO-251AA": | |
| 209 | # Moulded body with the metal tab: c2 thick, flush with the back, showing as the thermal pad E1 wide from D1 below the tab's top up to | |
| 210 | # the body's top, and rising L2 above the body b4 wide, its top corners chamfered at THETA2. | |
| 211 | t = mid(TO251AA) | |
| 212 | xs = [0.0, t["e"], 2 * t["e"]] | |
| 213 | cx = t["e"] | |
| 214 | back = t["c"] / 2 + t["A1"] | |
| 215 | front = back - t["A"] | |
| 216 | z0 = t["L1"] # the shoulders rest on the board | |
| 217 | top = z0 + t["D"] | |
| 218 | E, w = t["E"], t["b4"] / 2 | |
| 219 | box("body", cx - E / 2, cx + E / 2, front, back, z0, top, "body_body", "new", "Body") | |
| 220 | pad0 = top + t["L2"] - t["D1"] | |
| 221 | box("pad_recess", cx - t["E1"] / 2, cx + t["E1"] / 2, back - t["c2"], back, pad0, top, "body_body", "cut", "Thermal pad recess") | |
| 222 | box("pad", cx - t["E1"] / 2, cx + t["E1"] / 2, back - t["c2"], back, pad0, top, "tab_body", "new", "Thermal pad") | |
| 223 | dz = CHAMFER_DROP * t["L2"] | |
| 224 | dx = dz / math.tan(math.radians(sum(THETA2) / 2)) | |
| 225 | through_y("tab_top", [(cx - w, top), (cx + w, top), (cx + w, top + t["L2"] - dz), (cx + w - dx, top + t["L2"]), | |
| 226 | (cx - w + dx, top + t["L2"]), (cx - w, top + t["L2"] - dz)], back, back - t["c2"], "tab_body", "join", "Tab") | |
| 227 | bodies = {"body_body": ("pa6", "#1c1c1e"), "tab_body": ("copper", "#c8ccd0")} | |
| 228 | if detail == "full": | |
| 229 | leads(xs, t["b"], t["c"], t["L"], t["L1"], [t["b2"]] * 3, z0) | |
| 230 | elif package == "TO-3": | |
| 231 | # Flange (header) on the board, holes along Y; the can on it; lead 1 at the origin, lead 2 J along +X, the holes' axis K back from | |
| 232 | # lead 2 and the far hole H from the leads' line. | |
| 233 | t = mid(TO3) | |
| 234 | hx = t["J"] - t["K"] | |
| 235 | yc = t["H"] - t["G"] / 2 | |
| 236 | re_, R = (t["A"] - t["G"]) / 2, t["M"] / 2 | |
| 237 | circles = [(hx, yc - t["G"] / 2, re_), (hx, yc, R), (hx, yc + t["G"] / 2, re_)] | |
| 238 | pts = sorted({(round(x + r * math.cos(2 * math.pi * k / 144), 4), round(y + r * math.sin(2 * math.pi * k / 144), 4)) | |
| 239 | for x, y, r in circles for k in range(144)}) | |
| 240 | ||
| 241 | def cross(o, a, b): | |
| 242 | return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]) | |
| 243 | ||
| 244 | hull = [] | |
| 245 | for seq in (pts, pts[::-1]): # Andrew's monotone chain: lower then upper hull | |
| 246 | part = [] | |
| 247 | for p in seq: | |
| 248 | while len(part) >= 2 and cross(part[-2], part[-1], p) <= 0: | |
| 249 | part.pop() | |
| 250 | part.append(p) | |
| 251 | hull += part[:-1] | |
| 252 | model.plane("flange_plane", on="XY", offset=0.0, name="Flange") | |
| 253 | with model.sketch("flange_sketch", on="flange_plane", name="Flange") as sk: | |
| 254 | sk.polyline("flange_outline", hull, closed=True) | |
| 255 | model.extrude("flange", "flange_sketch", distance=t["E"], op="new", body="header_body", name="Flange") | |
| 256 | model.plane("holes_plane", on="XY", offset=-0.1, name="Mounting holes") | |
| 257 | with model.sketch("holes_sketch", on="holes_plane", name="Mounting holes") as sk: | |
| 258 | for i, s_ in enumerate((-1, 1)): | |
| 259 | sk.circle(f"hole_{i}", (hx, yc + s_ * t["G"] / 2), t["L"] / 2) | |
| 260 | model.extrude("holes", "holes_sketch", distance=t["E"] + 0.2, op="cut", body="header_body", name="Mounting holes") | |
| 261 | # The can: a shell Ø B from the flange's top to C, its top edge rounded. | |
| 262 | can_shell("can", hx, yc, t["E"], t["C"], t["B"] / 2, CAN_WALL["TO-3"], CAN_ROUND * t["B"], "Can") | |
| 263 | bodies = {"header_body": ("iron", "#c9ccd1"), "can_body": ("iron", "#d5d8dc")} | |
| 264 | if detail == "full": | |
| 265 | model.plane("leads_plane", on="XY", offset=-t["D"], name="Leads") | |
| 266 | with model.sketch("leads_sketch", on="leads_plane", name="Leads") as sk: | |
| 267 | for i, x in enumerate((0.0, t["J"])): | |
| 268 | sk.circle(f"lead_{i}", (x, 0.0), t["F"] / 2) | |
| 269 | model.extrude("leads", "leads_sketch", distance=t["D"], op="new", body="leads_body", name="Leads") | |
| 165 | 270 | elif package in ("TO-220F", "TO-220F-2"): |
| 166 | 271 | # Fully moulded (no exposed metal): the full thickness A up to F below the top, then the thinner top part B thick, its back face flush. |
| 167 | 272 | t = mid(TO220F if package == "TO-220F" else TO220F2) |
| @@ -234,10 +339,7 @@ | ||
| 234 | 339 | r0, r1, w = t["A"] / 2 - 0.3, t["A"] / 2 + t["J"], t["I"] / 2 |
| 235 | 340 | sk.polyline("tab_outline", [(cx + u[0] * r + v[0] * s, u[1] * r + v[1] * s) for r, s in ((r0, -w), (r1, -w), (r1, w), (r0, w))], closed=True) |
| 236 | 341 | model.extrude("flange", "flange_sketch", distance=t["C"], op="new", body="header_body", name="Flange and tab") |
| 237 | model.plane("can_plane", on="XY", offset=t["C"], name="Can") | |
| 238 | with model.sketch("can_sketch", on="can_plane", name="Can") as sk: | |
| 239 | sk.circle("can_round", (cx, 0.0), t["B"] / 2) | |
| 240 | model.extrude("can", "can_sketch", distance=t["D"] - t["C"], op="new", body="can_body", name="Can") | |
| 342 | can_shell("can", cx, 0.0, t["C"], t["D"], t["B"] / 2, CAN_WALL[package[:5]], 0.0, "Can") | |
| 241 | 343 | bodies = {"header_body": ("nickel", "#c9ccd1"), "can_body": ("steel-dc01", "#d5d8dc")} |
| 242 | 344 | if detail == "full": |
| 243 | 345 | model.plane("leads_plane", on="XY", offset=-t["E"], name="Leads") |
| @@ -268,10 +370,11 @@ | ||
| 268 | 370 | sk.rect(f"lead_{i}", (x - t["b"] / 2, -t["c"] / 2), (x + t["b"] / 2, t["c"] / 2)) |
| 269 | 371 | model.extrude("leads", "leads_sketch", distance=t["L"], op="new", body="leads_body", name="Leads") |
| 270 | 372 | if detail == "full": |
| 271 | bodies["leads_body"] = ("nickel", "#d8c58a") if package in CANS else ("copper", "#c9ccd1") | |
| 373 | bodies["leads_body"] = ("nickel", "#d8c58a") if package in CANS else ("iron", "#d9dadc") if package == "TO-3" else ("copper", "#c9ccd1") | |
| 272 | 374 | # Materials, for looks and a rough mass: the moulding is epoxy (nylon, PA6, the nearest in the list), the tab and pad copper (nickel or tin |
| 273 | 375 | # plated), the leads tinned copper. TO-18 (Central's material sheets): the header and leads Kovar (density 8.36; nickel, 8.9, is the nearest |
| 274 | # in the list), the can a nickel-plated iron alloy (steel). | |
| 376 | # in the list), the can a nickel-plated iron alloy (steel). TO-3 (Central's material sheet R3, 20-September 2018): the header and the can | |
| 377 | # nickel-plated iron, the terminals tin-plated; the leads are taken as the header's iron. | |
| 275 | 378 | for body, (material, colour) in bodies.items(): |
| 276 | 379 | model.material(material, bodies=[body], color=colour) |
| 277 | 380 | result = model.result() |
| @@ -1,17 +1,17 @@ | ||
| 1 | 1 | name = "steve/to-package" |
| 2 | version = "1.2.0" | |
| 2 | version = "1.3.0" | |
| 3 | 3 | runtime = "steve" |
| 4 | 4 | license = "MIT" |
| 5 | summary = "Through-hole TO packages standing on the board: TO-220AB, TO-220AC, TO-220F, TO-262, TO-247AC, TO-126, TO-92 and the TO-18, TO-39 and TO-46 metal cans, from the makers' drawings." | |
| 6 | description = """A through-hole transistor, regulator or diode package standing on the board, from the maker's package drawing: TO-220AB (3 leads) and TO-220AC (2 leads) with the metal tab and its hole, TO-247AC with its exposed copper and side slots, TO-92 with straight leads, TO-126 with its mounting plate, the fully moulded TO-220F with 3 or 2 leads, TO-262 (I2PAK) with its tab, and the TO-18 (2 or 3 leads), TO-39 and TO-46 metal cans. Lead 1 at the origin, the leads along +X, the moulded front toward -Y. See the README.""" | |
| 7 | tags = ["to-220", "to-247", "to-92", "to-18", "to-39", "to-126", "transistor", "package", "through-hole", "electronics"] | |
| 5 | summary = "Through-hole TO packages standing on the board: TO-220AB, TO-220AC, TO-220F, TO-262, TO-251AA, TO-247AC, TO-126, TO-92 and the TO-3, TO-18, TO-39 and TO-46 metal cans, from the makers' drawings." | |
| 6 | description = """A through-hole transistor, regulator or diode package standing on the board, from the maker's package drawing: TO-220AB, TO-220AC, TO-262 (I2PAK) and TO-251AA (IPAK) with their metal tabs, the fully moulded TO-220F, TO-247AC, TO-126, TO-92 with straight leads, the TO-3 can on its two-hole flange, and the TO-18, TO-39 and TO-46 cans. Lead 1 at the origin, the leads along +X, the moulded front toward -Y. See the README.""" | |
| 7 | tags = ["to-220", "to-247", "to-92", "to-3", "to-18", "to-126", "transistor", "package", "through-hole", "electronics"] | |
| 8 | 8 | |
| 9 | 9 | [parameters.package] |
| 10 | 10 | type = "choice" |
| 11 | 11 | default = "TO-220AB" |
| 12 | choices = ["TO-220AB", "TO-220AC", "TO-220F", "TO-220F-2", "TO-262", "TO-247AC", "TO-126", "TO-92", "TO-18", "TO-18-2", "TO-39", "TO-46"] | |
| 12 | choices = ["TO-220AB", "TO-220AC", "TO-220F", "TO-220F-2", "TO-262", "TO-251AA", "TO-247AC", "TO-126", "TO-92", "TO-3", "TO-18", "TO-18-2", "TO-39", "TO-46"] | |
| 13 | 13 | label = "Package" |
| 14 | description = "TO-220AB: 3 leads at 2.54. TO-220AC: 2 leads 5.08 apart. TO-247AC: 3 leads at 5.46. TO-92: 3 straight leads at 1.27. TO-18: metal can, 3 leads on a 2.54 circle; TO-18-2: 2 leads 2.54 apart. TO-39: metal can, Ø 9, 3 leads on a 5.08 circle. TO-46: low metal can, 3 leads on a 2.54 circle. TO-126: 3 leads at 2.25, mounting plate on the back. TO-220F: fully moulded, 3 leads at 2.54; TO-220F-2: 2 leads 5.1 apart. TO-262 (I2PAK): 3 leads at 2.54, metal tab above the body and pad on the back." | |
| 14 | description = "TO-220AB: 3 leads at 2.54. TO-220AC: 2 leads 5.08 apart. TO-220F: fully moulded, 3 leads; -2: 2 leads 5.1 apart. TO-262 (I2PAK): 3 leads at 2.54, tab above. TO-251AA (IPAK): 3 leads at 2.29, tab above. TO-247AC: 3 leads at 5.46. TO-126: 3 leads at 2.25. TO-92: 3 straight leads at 1.27. TO-3: can on a flange with 2 holes, 2 leads 10.9 apart. TO-18: can, 3 leads on a 2.54 circle; -2: 2 leads. TO-39: can Ø 9, 3 leads on a 5.08 circle. TO-46: low can, 3 leads." | |
| 15 | 15 | |
| 16 | 16 | [parameters.detail] |
| 17 | 17 | type = "choice" |
| @@ -56,6 +56,13 @@ | ||
| 56 | 56 | standard = "Vishay TO-262" |
| 57 | 57 | |
| 58 | 58 | [[presets]] |
| 59 | id = "TO-251AA" | |
| 60 | title = "TO-251AA (IPAK), 3 leads, 2.29 pitch, vertical (Vishay outline)" | |
| 61 | params = { package = "TO-251AA" } | |
| 62 | aliases = ["TO-251-3", "TO-251", "TO-251AA", "JEDEC TO-251AA", "IPAK", "I-PAK"] | |
| 63 | standard = "Vishay TO-251AA" | |
| 64 | ||
| 65 | [[presets]] | |
| 59 | 66 | id = "TO-247AC" |
| 60 | 67 | title = "TO-247AC, 3 leads, 5.46 pitch, vertical (Vishay outline)" |
| 61 | 68 | params = { package = "TO-247AC" } |
| @@ -75,6 +82,13 @@ | ||
| 75 | 82 | params = { package = "TO-92" } |
| 76 | 83 | aliases = ["TO-92-3", "TO-92", "TO-226AA", "JEDEC TO-226AA", "TO92 straight leads", "LP0003A", "TO-92, 3 straight leads, 1.27 pitch (TI LP0003A)"] |
| 77 | 84 | standard = "TI LP0003A" |
| 85 | ||
| 86 | [[presets]] | |
| 87 | id = "TO-3" | |
| 88 | title = "TO-3 metal can on a flange, 2 leads (Central Semiconductor outline)" | |
| 89 | params = { package = "TO-3" } | |
| 90 | aliases = ["TO-3", "TO-204AA", "JEDEC TO-204AA", "TO3 metal can 2 lead"] | |
| 91 | standard = "Central TO-3" | |
| 78 | 92 | |
| 79 | 93 | [[presets]] |
| 80 | 94 | id = "TO-18" |
| @@ -9,9 +9,11 @@ | ||
| 9 | 9 | | `TO-220F` | 3, 2.54 pitch | 10.17 x 4.66 x 15.53, fully moulded | Central Semiconductor TO-220FP | |
| 10 | 10 | | `TO-220F-2` | 2, 5.10 apart | 10.31 x 4.80 x 15.10, fully moulded | Central Semiconductor TO-220FP-2 | |
| 11 | 11 | | `TO-262` | 3, 2.54 pitch | 10.16 x 4.45 x 10.67 (tab included) | Vishay Siliconix 91367 | |
| 12 | | `TO-251AA` | 3, 2.29 pitch | 6.54 x 2.29 x 7.18 (tab included) | Vishay Siliconix 91362 | | |
| 12 | 13 | | `TO-247AC` | 3, 5.46 pitch | 15.70 x 5.02 x 20.55 | Vishay Siliconix 91360 | |
| 13 | 14 | | `TO-126` | 3, 2.25 pitch | 7.95 x 2.60 x 11.25 | Central Semiconductor TO-126 | |
| 14 | 15 | | `TO-92` | 3 straight, 1.27 pitch | 4.83 x 3.68 x 4.83 | TI LP0003A | |
| 16 | | `TO-3` | 2, 10.93 apart | flange 39.23 x 25.84 with 2 holes 30.15 apart, can Ø 20.62, 8.89 high | Central Semiconductor TO-3 | | |
| 15 | 17 | | `TO-18` | 3, on a Ø 2.54 circle | flange Ø 5.58, can Ø 4.74, 4.83 high | Central Semiconductor TO-18 | |
| 16 | 18 | | `TO-18-2` | 2, 2.54 apart | as `TO-18` | Central Semiconductor TO-18 2-Lead | |
| 17 | 19 | | `TO-39` | 3, on a Ø 5.08 circle | flange Ø 8.96, can Ø 8.26, 6.35 high | Central Semiconductor TO-39 | |
| @@ -19,8 +21,9 @@ | ||
| 19 | 21 | |
| 20 | 22 | Lead 1 is at the origin and the leads run along +X. The moulded front faces -Y (on the TO-92, the flat face), and the metal tab, exposed copper or mounting plate is at the back (+Y). |
| 21 | 23 | |
| 22 | - **TO-220, TO-220F, TO-262, TO-247 and TO-126.** The leads' shoulders rest on the board (the XY plane), and the leads continue their full length down through it. | |
| 24 | - **TO-220, TO-220F, TO-262, TO-251AA, TO-247 and TO-126.** The leads' shoulders rest on the board (the XY plane), and the leads continue their full length down through it. | |
| 23 | 25 | - **TO-92.** The body sits 1.5 above the board (TI's reference seating plane). |
| 26 | - **TO-3.** The flange sits on the board, its mounting holes on a line along Y. Lead 2 is J along +X from lead 1, the holes' line is K back from lead 2, and the far hole is H from the leads' line, toward +Y. The leads are off the can's centre, as drawn. | |
| 24 | 27 | - **TO-18, TO-39 and TO-46.** The flange sits on the board. Leads 1 and 3 are G apart along +X (2.54, or 5.08 on the TO-39), and lead 2 is H off that line along -Y (1.27, or 2.54). The tab is at 45°, beside lead 1. |
| 25 | 28 | |
| 26 | 29 | `detail = "simple"` leaves out the leads. |
| @@ -34,6 +37,7 @@ | ||
| 34 | 37 | - Page 2, table (mm): A 4.25–4.65, A1 1.20–1.34, A2 2.563–2.92, b 0.71–0.91, b2 1.14–1.78, c 0.46–0.61, D 14.32–15.86, D1 8.39–8.79, D2 12.20–12.80, E 9.96–10.36, E1 8.14–8.74, E2 0.59–0.69, e 2.54, e1 5.08, H1 6.30–6.70, L 13.40–14.40, L1 3.65–4.05, ØP 3.60–3.80, Q 2.54–2.94. |
| 35 | 38 | - **Vishay Semiconductors, "TO-220AC"**, Outline Dimensions, document 95221, revision 16-Jan-2026, from vishay.com. The drawing and table use the same letters. Here e1 is 4.88–5.28, the spacing of the two leads, and E2 is 0.76 max. The outline conforms to JEDEC TO-220AC. |
| 36 | 39 | - **Vishay Siliconix, "I2PAK (TO-262) (High Voltage)"**, Package Information, document 91367, revision 27-Oct-08 (DWG 5977), from vishay.com. Table (mm): A 4.06–4.83, A1 2.03–3.02, b 0.51–0.99, b2 1.14–1.78, c 0.38–0.74, c2 1.14–1.65, D 8.38–9.65, D1 6.86 min, E 9.65–10.67, E1 6.22 min, e 2.54, L 13.46–14.10, L1 1.65 max, L2 3.56–3.71. Where the table gives only a minimum or a maximum, the part uses it. |
| 40 | - **Vishay Siliconix, "Case Outline for TO-251AA (High Voltage)"**, Package Information, document 91362, revision 27-Dec-2021 (ECN E21-0682 rev C, DWG 5968), from vishay.com. The part uses Option 1, page 1. Table (mm): A 2.18–2.39, A1 0.89–1.14, b 0.64–0.89, b2 0.76–1.14, b4 4.95–5.46, c 0.46–0.61, c2 0.46–0.86, D 5.97–6.22, D1 5.21 min, E 6.35–6.73, E1 4.32 min, e 2.29, L 8.89–9.65, L1 1.91–2.29, L2 0.89–1.27, L3 1.14–1.52, θ2 25°–35°. Where the table gives only a minimum, the part uses it. The outline conforms to JEDEC TO-251AA. | |
| 37 | 41 | - **Vishay Siliconix, "TO-247AC (High Voltage)"**, Package Information, document 91360, revision 07-Sep-2026, from vishay.com. The part uses version 1 (facility code 9) with its nominal values: |
| 38 | 42 | - A 5.02, A1 2.41, A2 1.27, b 1.20, b2 2.00, b4 3.00, c 0.50, D 20.55, D1 16.76, D2 0.66, E 15.70, E1 14.02, E2 4.91, e 5.46, L 15.15, L1 4.06, ØP 3.61, ØP1 7.19 (ref), Q 5.50. |
| 39 | 43 | - The package reference is JEDEC TO-247, variation AC. |
| @@ -43,6 +47,8 @@ | ||
| 43 | 47 | - leads 0.38–0.55 x 0.35–0.43, at 1.27 ±0.13 pitch, 12.7 min long; |
| 44 | 48 | - the seating plane (1.5) typical below the body; |
| 45 | 49 | - reference JEDEC TO-226, variation AA. |
| 50 | - **Central Semiconductor, "Package Details - TO-3"** (REV R2, R0 9-April 2009), from centralsemi.com. The text doesn't extract, so the table was read from the rendered page. Table (mm): A flange length 38.50–39.96, B can Ø 19.00–22.23, C height above the flange's underside 6.35–11.43, D lead length 11.00–13.10, E flange thickness 1.38–1.65, F lead Ø 0.90–1.15, G holes apart 29.90–30.40, H the leads' line to the far hole 16.50–17.30, J lead 1 to lead 2 10.67–11.18, K lead 2 to the holes' line 5.21–5.72, L hole Ø 3.84–4.36, M flange width 25.00–26.67. | |
| 51 | - Central's "Material Composition Specification, TO-3 Case" (R3, 20-September 2018, from central.aeminc.com) gives a nickel-plated iron header and can and tin-plated terminals, 11.7 g on average. | |
| 46 | 52 | - **Central Semiconductor, "Package Details - TO-18"** (REV R1, R0 21-June 2004) and **"TO-18 2-Lead Case"** (REV R0, 13-March 2013), from centralsemi.com. |
| 47 | 53 | - Table (mm): A flange Ø 5.31–5.84, B can Ø 4.52–4.95, C flange 0.76 max (used as is), D height 4.32–5.33, E lead length 12.70 min (used as is), F lead Ø 0.41–0.48, G 2.54 (the lead circle, or the 2-lead part's spacing), H 1.27 (3 leads), and tab width 0.91–1.17 and tab length 0.71–1.22 at 45° (I and J; on the 2-lead sheet, H and J). |
| 48 | 54 | - Both sheets' material sheets give a Kovar header and leads and a nickel-plated iron-alloy can. |
| @@ -60,6 +66,8 @@ | ||
| 60 | 66 | - **TO-92.** The body is a round of Ø W, cut flat at the depth T, with the leads K in front of the round back. |
| 61 | 67 | - **TO-18, TO-39 and TO-46.** The tab length J is read as reaching beyond the flange's edge. |
| 62 | 68 | - **TO-262.** A1 is read as on the TO-220: from the leads' back face to the back. The tab is c2 thick and flush with the back. It shows on the back as the thermal pad D1 x E1, from the body's top down (Section A-A), and rises L1 above the body. The shoulders (b2) are L2 long, and L is the lead's length from the body. |
| 69 | - **TO-251AA.** As on the TO-262, A1 runs from the leads' back face to the back, and the tab is c2 thick and flush with the back. The tab rises L2 above the body, b4 wide, and shows on the back as the thermal pad E1 wide, down to D1 below the tab's top (View A-A). L is the lead's length below the body. The leads are b2 wide for L1 below the body, then b wide: section C-C, which gives b2, is cut inside L1, and L3 (inside L1) is where the lead is uncontrolled. θ2 is the angle of the tab's corner chamfers. | |
| 70 | - **TO-3.** The drawing's lower view looks from below, because the can is drawn dashed. Turned to look from above, with lead 2 along +X from lead 1, the far hole is toward +Y. C is the height from the flange's underside, and D the lead's length below it. | |
| 63 | 71 | - **TO-220F.** The side view draws the body A thick up to F below the top, and above that B thick with the back face flush, so the hole is in the thinner part. H is the shoulder's length below the body, J the lead's from the body. |
| 64 | 72 | - **TO-126.** H is the lead's length from the body, shoulder included, and B runs from the back (the side the sheet marks "BACKSIDE") to the leads' centre plane. |
| 65 | 73 | |
| @@ -67,13 +75,21 @@ | ||
| 67 | 75 | |
| 68 | 76 | - The TO-220 tab's side notches, E2 deep, are 1.4 high, from 1.4 to 2.8 below the top, as drawn. |
| 69 | 77 | - The TO-262 tab above the body is the body's full width, with its top corners chamfered 0.04 x the width. |
| 78 | - The TO-251AA tab's corner chamfers, at θ2 = 30°, drop a third of L2, as drawn. | |
| 79 | - The TO-3, TO-18, TO-39 and TO-46 cans are shells, closed at the top and open into the header. No sheet gives the wall, so it is a proportion fitted to the can's weight on Central's material sheets, at the model's density and rounded to 0.01 mm: | |
| 80 | - TO-3: 0.44, for a 2,537 mg can (sheet 2,550 mg; R3, 20-September 2018). With the flange and leads, the part weighs 10.42 g. The sheet gives 11.7 g for the whole device, of which 10.30 g is the header and can; the rest is tin plating, die coating and the die. | |
| 81 | - TO-18 and TO-18-2: 0.20, for a 114 mg can (sheet 114.99 and 115 mg; R4, 10-February 2020, and R0, 8-March 2013). The parts weigh 339 and 321 mg (sheet 312.4 and 287 mg). | |
| 82 | - TO-39: 0.25, for a 356 mg can (sheet 350 mg; R4, 16-July 2018). The part weighs 993 mg (sheet 1,006 mg). | |
| 83 | - TO-46: 0.70, for a 110 mg can (sheet 109.313 mg; R2, 16-July 2018). The can is only 0.89 high, so the wall is thick. The part weighs 399 mg, where the sheet gives 204 mg: the model's solid header and leads weigh 290 mg, where the sheet gives 84 mg for the header. | |
| 84 | - The TO-3 flange outline is drawn but not dimensioned: it is read as round the holes (radius (A − G) / 2), round the centre (Ø M), and joined by tangent lines. The can's top edge is rounded 0.08 x B, as drawn. | |
| 70 | 85 | - The TO-126's mounting plate on the back, drawn dashed in the front view, is 0.3 thick, set in 0.08 x the width from the sides and the top, and ends 0.1 x the height above the bottom. |
| 71 | - Not modelled: the TO-220AC's and TO-220FP-2's cut-off middle lead, the TO-220's ejector dimple, the TO-247's copper ring ØP1, and the bodies' 5° draft and small radii. | |
| 86 | - Not modelled: the TO-220AC's and TO-220FP-2's cut-off middle lead, the TO-220's and TO-251AA's ejector marks, the TO-251AA's lead-tip taper, the TO-247's copper ring ØP1, and the bodies' 5° draft and small radii. | |
| 72 | 87 | - Every lead's shoulder narrows to the lead in one step. |
| 73 | 88 | - Materials are for looks and a rough mass: |
| 74 | 89 | - The mouldings are epoxy. Nylon (PA6) is the nearest material in the list. |
| 75 | 90 | - The TO-220 and TO-262 tabs, the TO-247 pad and the TO-126 plate are copper, and the leads are tinned copper. |
| 76 | 91 | - The TO-18, TO-39 and TO-46 headers and leads are Kovar (8.36), so nickel (8.9), the nearest in the list. Their cans are steel. |
| 92 | - The TO-3 header and can are iron, as Central's material sheet gives. The sheet names no other metal for the leads, so they are taken as iron too. | |
| 77 | 93 | |
| 78 | 94 | ## Catalogue models |
| 79 | 95 | |
| @@ -97,16 +113,24 @@ | ||
| 97 | 113 | |
| 98 | 114 | - **TO-262-3_Vertical.** 10.01 wide, 4.50 thick, the body 8.85 high, and the tab 1.37 above it, 1.27 thick. Leads 0.80 x 0.50 with 1.27 shoulders at 2.54. The leads' back face is 2.40 from the back. These are all within Vishay's drawing, except that the model's shoulders are about 3.15 long (L2 3.56–3.71) and its leads reach 10.5 below the body (L 13.46–14.10). |
| 99 | 115 | |
| 116 | Added in 1.3.0: | |
| 117 | ||
| 118 | - **TO-251-3_Vertical.** 6.58 wide (E 6.35–6.73), 2.31 thick (A 2.18–2.39) and the body 6.08 high (D 5.97–6.22). The tab is 5.34 wide (b4 4.95–5.46) and 0.50 thick (c2 0.46–0.86). Leads 0.76 x 0.50 at 2.29, 9.58 below the body (L 8.89–9.65), with the leads' back face 1.03 from the back (A1 0.89–1.14). These are all within Vishay's drawing, except two: | |
| 119 | - the model's tab rises only 0.34 above the body across its width, with two 0.5 wide posts at its ends reaching 0.60 (L2 0.89–1.27); | |
| 120 | - its leads are 0.76 wide up to the body, with a 0.85 wide band from 1.4 to 2.2 below it (all inside b2's 0.76–1.14). Vishay's leads are b2 wide for L1 below the body, then b. | |
| 121 | - **TO-3.** Can Ø 20.0 and 9.0 high (B 19.00–22.23, C 6.35–11.43), holes Ø 4.0 (L 3.84–4.36) 30.2 apart (G 29.90–30.40), leads Ø 1.0 (F 0.90–1.15) 10.9 apart (J 10.67–11.18), 16.9 from the far hole (H 16.50–17.30) and 1.8 off the can's centre. Its flange is 40.2 long, 27.2 wide and about 1.78 thick, where Central's drawing allows at most 39.96, 26.67 and 1.65. Its leads are 10.0 long below the flange (D 11.00–13.10, so 1.0 short). | |
| 122 | - **TO-251-2_Vertical** is left out: Vishay's drawing has 3 leads only. | |
| 123 | ||
| 100 | 124 | The names name the JEDEC package, so they map to the maker's drawing of it, with the pitch and lead order as named, and the differences are listed here. |
| 101 | 125 | |
| 102 | 126 | The reference models stand their bodies at different heights above the board: the TO-92 at 2.5, and the TO-18, TO-39 and TO-46 at about 5. The drawings don't give these, so this part uses the drawings' own seating. |
| 103 | 127 | |
| 104 | So these map: TO-220-3_Vertical (TO-220AB), TO-220-2_Vertical (TO-220AC), TO-247-3_Vertical (TO-247AC), TO-92 and TO-92_Inline (TO-92), TO-18-3 (TO-18), TO-18-2 (TO-18-2), TO-39-3 (TO-39), TO-46-3 (TO-46), TO-126-3_Vertical (TO-126), TO-220F-3_Vertical (TO-220F), TO-220F-2_Vertical (TO-220F-2) and TO-262-3_Vertical (TO-262). | |
| 128 | So these map: TO-220-3_Vertical (TO-220AB), TO-220-2_Vertical (TO-220AC), TO-247-3_Vertical (TO-247AC), TO-92 and TO-92_Inline (TO-92), TO-18-3 (TO-18), TO-18-2 (TO-18-2), TO-39-3 (TO-39), TO-46-3 (TO-46), TO-126-3_Vertical (TO-126), TO-220F-3_Vertical (TO-220F), TO-220F-2_Vertical (TO-220F-2), TO-262-3_Vertical (TO-262), TO-251-3_Vertical (TO-251AA) and TO-3 (TO-3). | |
| 105 | 129 | |
| 106 | 130 | These stay "no table read yet" (`COVERAGE.md`): |
| 107 | 131 | |
| 108 | 132 | - the TO-92 models with leads formed to 2.54 (`_Wide`). TI's formed leads are 2.4 to 2.9 apart, with a land pattern of 2.6. |
| 109 | 133 | - the horizontal (bent-lead) models. The drawings give straight leads only. |
| 110 | - the 2-lead TO-39, TO-46 and TO-126 models. Central's TO-39, TO-46 and TO-126 sheets draw 3 leads only. | |
| 111 | - the other packages in the family: TO-218, TO-220-4/5/11, TO-247-2/4/5, TO-251, TO-262-3-1EP and TO-262-5, TO-264, TO-3, TO-3P, TO-5, TO-8, TO-11 and TO-52, the TO-92 variants (L, S, Mini, Flat, 2-lead), and the windowed and lensed cans. | |
| 134 | - the 2-lead TO-39, TO-46, TO-126 and TO-251 models. Central's TO-39, TO-46 and TO-126 sheets, and Vishay's TO-251AA drawing, draw 3 leads only. | |
| 135 | - the other packages in the family: TO-218, TO-220-4/5/11, TO-247-2/4/5, TO-262-3-1EP and TO-262-5, TO-264, TO-3P, TO-5, TO-8, TO-11 and TO-52, the TO-92 variants (L, S, Mini, Flat, 2-lead), and the windowed and lensed cans. | |
| 112 | 136 |