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.
Plastic dual-in-line package (PDIP), 300 mil rows: 14, 16, 18 and 20 pins.
| 1 | """Plastic dual-in-line package (PDIP), 300 mil rows, 14 to 20 pins. Pin 1 is at the origin, pins 1 to n/2 along +X, the other row at +Y by 7.62; the seating plane is the |
| 2 | XY plane, the body above it, the leads down through the board. Dimensions from TI's N package drawing in the README.""" |
| 3 | from steve import Model |
| 4 | |
| 5 | pins = 16 # Pins |
| 6 | detail = "full" # full: body, pin-1 notch and leads; simple: the body only |
| 7 | |
| 8 | # TI Mechanical Data MPDI002A, N (R-PDIP-T**), January 1995, revised October 1995 (drawing 4040049/C 08/95), in inches (mm): pitch 0.100 (2.54); A (body length) |
| 9 | # 0.745 to 0.775 (18.92 to 19.69) for 14 and 16 pins, 0.850 to 0.920 (21.59 to 23.37) for 18, 0.940 to 0.975 (23.88 to 24.77) for 20; body width 0.240 to 0.260 |
| 10 | # (6.10 to 6.60); rows 0.290 to 0.310 (7.37 to 7.87) outside the leads, on 0.300 (7.62) centres; seating plane to top 0.200 (5.08) max; seating plane to body |
| 11 | # 0.020 (0.51) min; leads below the seating plane 0.125 (3.18) min, 0.015 to 0.021 (0.38 to 0.53) wide, 0.010 (0.25) thick. |
| 12 | LENGTH = {14: (18.92, 19.69), 16: (18.92, 19.69), 18: (21.59, 23.37), 20: (23.88, 24.77)} |
| 13 | PITCH, ROWS, WIDTH, TOP, STANDOFF, TAIL, LEAD_W, LEAD_T = 2.54, 7.62, (6.10 + 6.60) / 2, 5.08, 0.51, 3.18, (0.38 + 0.53) / 2, 0.25 |
| 14 | SHOULDER = 1.5 # the lead's wide shoulder above the seating plane and where it leaves the body are proportions, for looks |
| 15 | if pins not in LENGTH: |
| 16 | raise ValueError("This drawing covers 14, 16, 18 and 20 pins.") |
| 17 | |
| 18 | per_row = pins // 2 |
| 19 | length = sum(LENGTH[pins]) / 2 |
| 20 | cx, cy = (per_row - 1) * PITCH / 2, ROWS / 2 |
| 21 | model = Model() |
| 22 | model.plane("body_plane", on="XY", offset=STANDOFF, name="Body") |
| 23 | with model.sketch("body_sketch", on="body_plane", name="Body") as sk: |
| 24 | sk.rect("body_rect", (cx - length / 2, cy - WIDTH / 2), (cx + length / 2, cy + WIDTH / 2)) |
| 25 | model.extrude("body", "body_sketch", distance=TOP - STANDOFF, name="Body") |
| 26 | if detail == "full": |
| 27 | model.plane("top_plane", on="XY", offset=TOP, name="Top") |
| 28 | with model.sketch("notch_sketch", on="top_plane", name="Pin-1 notch") as sk: |
| 29 | sk.circle("notch_circle", (cx - length / 2, cy), 0.75) |
| 30 | model.extrude("notch", "notch_sketch", distance=-0.5, op="cut", name="Pin-1 notch") |
| 31 | for row, y in ((0, 0.0), (1, ROWS)): |
| 32 | model.plane(f"tail_plane_{row}", on="XY", offset=-TAIL, name="Leads") |
| 33 | with model.sketch(f"tails_{row}", on=f"tail_plane_{row}", name="Leads") as sk: |
| 34 | for i in range(per_row): |
| 35 | sk.rect(f"tail_{row}_{i}", (i * PITCH - LEAD_W / 2, y - LEAD_T / 2), (i * PITCH + LEAD_W / 2, y + LEAD_T / 2)) |
| 36 | model.extrude(f"tails_{row}_body", f"tails_{row}", distance=TAIL + SHOULDER + 0.5, name="Leads") |
| 37 | edge = cy - WIDTH / 2 if row == 0 else cy + WIDTH / 2 |
| 38 | model.plane(f"arm_plane_{row}", on="XY", offset=SHOULDER, name="Leads") |
| 39 | with model.sketch(f"arms_{row}", on=f"arm_plane_{row}", name="Leads") as sk: |
| 40 | for i in range(per_row): |
| 41 | sk.rect(f"arm_{row}_{i}", (i * PITCH - SHOULDER / 2, min(y, edge) - LEAD_T / 2), (i * PITCH + SHOULDER / 2, max(y, edge) + LEAD_T / 2)) |
| 42 | model.extrude(f"arms_{row}_body", f"arms_{row}", distance=0.5, name="Leads") |
| 43 | model.material("pla", color="#26282b") |
| 44 | result = model.result() |
| 45 |
| 1 | name = "steve/dip-package" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "Plastic dual-in-line package (PDIP), 300 mil rows: 14, 16, 18 and 20 pins." |
| 6 | description = """A plastic DIP for board layouts: body, pin-1 notch and leads, from TI's N package drawing (within JEDEC MS-001). See the README.""" |
| 7 | tags = ["ic-package", "dip", "pdip", "through-hole", "electronics"] |
| 8 | |
| 9 | [parameters.pins] |
| 10 | type = "choice" |
| 11 | default = 16 |
| 12 | choices = [14, 16, 18, 20] |
| 13 | label = "Pins" |
| 14 | |
| 15 | [parameters.detail] |
| 16 | type = "choice" |
| 17 | default = "full" |
| 18 | choices = ["full", "simple"] |
| 19 | label = "Detail" |
| 20 | description = "full: body, pin-1 notch and leads. simple: the body only." |
| 21 | |
| 22 | [[presets]] |
| 23 | id = "DIP-14" |
| 24 | title = "DIP-14 package, 300 mil (7.62 mm) rows" |
| 25 | params = { pins = 14 } |
| 26 | aliases = ["DIP-14_W7.62mm", "DIP14", "PDIP-14", "14 pin DIP", "DIP 14", "14-DIP", "DIP-14 package, 300 mil (7.62 mm) rows"] |
| 27 | standard = "TI N package" |
| 28 | |
| 29 | [[presets]] |
| 30 | id = "DIP-16" |
| 31 | title = "DIP-16 package, 300 mil (7.62 mm) rows" |
| 32 | params = { pins = 16 } |
| 33 | aliases = ["DIP-16_W7.62mm", "DIP16", "PDIP-16", "16 pin DIP", "DIP 16", "16-DIP", "DIP-16 package, 300 mil (7.62 mm) rows"] |
| 34 | standard = "TI N package" |
| 35 | |
| 36 | [[presets]] |
| 37 | id = "DIP-18" |
| 38 | title = "DIP-18 package, 300 mil (7.62 mm) rows" |
| 39 | params = { pins = 18 } |
| 40 | aliases = ["DIP-18_W7.62mm", "DIP18", "PDIP-18", "18 pin DIP", "DIP 18", "18-DIP", "DIP-18 package, 300 mil (7.62 mm) rows"] |
| 41 | standard = "TI N package" |
| 42 | |
| 43 | [[presets]] |
| 44 | id = "DIP-20" |
| 45 | title = "DIP-20 package, 300 mil (7.62 mm) rows" |
| 46 | params = { pins = 20 } |
| 47 | aliases = ["DIP-20_W7.62mm", "DIP20", "PDIP-20", "20 pin DIP", "DIP 20", "20-DIP", "DIP-20 package, 300 mil (7.62 mm) rows"] |
| 48 | standard = "TI N package" |
| 49 | |
| 50 | [[presets]] |
| 51 | id = "DIP-16-simple" |
| 52 | title = "DIP-16 package, simple" |
| 53 | params = { pins = 16, detail = "simple" } |
| 54 | aliases = ["DIP-16 simple"] |
| 55 | standard = "TI N package" |
| 56 |
A plastic dual-in-line package (PDIP) with 300 mil rows, 14 to 20 pins. Pin 1 is at the origin, pins 1 to n/2 run along +X, and the other row is at +Y by 7.62. The seating plane is the XY plane, with the body above it and the leads going down through the board.
TI Mechanical Data MPDI002A, N (R-PDIP-T**) plastic dual-in-line package, January 1995, revised October 1995 (drawing 4040049/C 08/95). The drawing says the package falls within JEDEC MS-001, except that the 20-pin body is shorter. A copy is in a TI datasheet at https://mantech.co.za/datasheets/products/sn74ls03n_t.pdf, page 7.
| 14 and 16 pins | 18 pins | 20 pins | |
|---|---|---|---|
| Body length A | 18.92 to 19.69 | 21.59 to 23.37 | 23.88 to 24.77 |
For every pin count:
The model uses the middle of each range. Height is the 5.08 max, so read it as an envelope.
Proportions, for looks only: the leads' wide shoulder, where they leave the body, and the pin-1 notch.
8-pin and 600 mil (24 to 40 pin) DIPs and the DIP sockets aren't here yet; see COVERAGE.md.
| 1 | # DIP package |
| 2 | |
| 3 | A plastic dual-in-line package (PDIP) with 300 mil rows, 14 to 20 pins. Pin 1 is at the origin, pins 1 to n/2 run along +X, and the other row is at +Y by 7.62. The seating plane is the XY plane, with the body above it and the leads going down through the board. |
| 4 | |
| 5 | ## Source |
| 6 | |
| 7 | TI Mechanical Data MPDI002A, *N (R-PDIP-T\*\*) plastic dual-in-line package*, January 1995, revised October 1995 (drawing 4040049/C 08/95). The drawing says the package falls within JEDEC MS-001, except that the 20-pin body is shorter. A copy is in a TI datasheet at <https://mantech.co.za/datasheets/products/sn74ls03n_t.pdf>, page 7. |
| 8 | |
| 9 | | | 14 and 16 pins | 18 pins | 20 pins | |
| 10 | |---|---|---|---| |
| 11 | | Body length A | 18.92 to 19.69 | 21.59 to 23.37 | 23.88 to 24.77 | |
| 12 | |
| 13 | For every pin count: |
| 14 | |
| 15 | - pitch 2.54 |
| 16 | - body width 6.10 to 6.60 |
| 17 | - rows on 7.62 centres, 7.37 to 7.87 outside the leads |
| 18 | - seating plane to top 5.08 max, and to the body 0.51 min |
| 19 | - leads 3.18 min below the seating plane, 0.38 to 0.53 wide and 0.25 thick |
| 20 | |
| 21 | The model uses the middle of each range. Height is the 5.08 max, so read it as an envelope. |
| 22 | |
| 23 | **Proportions, for looks only:** the leads' wide shoulder, where they leave the body, and the pin-1 notch. |
| 24 | |
| 25 | 8-pin and 600 mil (24 to 40 pin) DIPs and the DIP sockets aren't here yet; see `COVERAGE.md`. |
| 26 |
A plastic DIP for board layouts: body, pin-1 notch and leads, from TI's N package drawing (within JEDEC MS-001). See the README.
A plastic dual-in-line package (PDIP) with 300 mil rows, 14 to 20 pins. Pin 1 is at the origin, pins 1 to n/2 run along +X, and the other row is at +Y by 7.62. The seating plane is the XY plane, with the body above it and the leads going down through the board.
TI Mechanical Data MPDI002A, N (R-PDIP-T**) plastic dual-in-line package, January 1995, revised October 1995 (drawing 4040049/C 08/95). The drawing says the package falls within JEDEC MS-001, except that the 20-pin body is shorter. A copy is in a TI datasheet at https://mantech.co.za/datasheets/products/sn74ls03n_t.pdf, page 7.
| 14 and 16 pins | 18 pins | 20 pins | |
|---|---|---|---|
| Body length A | 18.92 to 19.69 | 21.59 to 23.37 | 23.88 to 24.77 |
For every pin count:
The model uses the middle of each range. Height is the 5.08 max, so read it as an envelope.
Proportions, for looks only: the leads' wide shoulder, where they leave the body, and the pin-1 notch.
8-pin and 600 mil (24 to 40 pin) DIPs and the DIP sockets aren't here yet; see COVERAGE.md.
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.
Small-outline transistor packages by TI outline: SOT-23, thin SOT-23-5/6/8, SC-70-3/6, SOT-553 and SOT-563.
TSSOP package, 4.4 mm body, 0.65 mm pitch: 14, 16, 20 and 24 pins.
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).