Sign in with STEVE

steve/right-angle-pushbutton-tht

Right-angle subminiature pushbutton from NKK's Series BB sheet: BB15AH, SPDT momentary, with a support bracket, without a cap or with a 5.1 or 7.5 mm slip-on cap.

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 114 lines · Python · STEVE runtime · checked
Download
1"""Right-angle through-hole subminiature pushbutton, NKK Series BB, BB15AH (single pole, SPDT, momentary, right-angle PC terminals with a
2support bracket), with or without a slip-on cap. The origin is terminal 2 (COM) on the board's top face (the XY plane); terminals 1, 2
3and 3 lie along X, 2.54 apart; the plunger points along -Y, its axis 3.4 above the board. Dimensions from NKK's Series BB sheet, in the
4README."""
5from steve import Model
6
7kind = "BB15AH" # Type
8cap = "none" # Slip-on cap: none, F (AT475, 5.1 dia.) or H (AT496, 7.5 dia.)
9cap_color = "black" # Cap colour: black, white or red
10
11# NKK "Series BB, Process Sealed Subminiature Antistatic Pushbuttons", catalogue pages C12 to C17 (PDF of 2016-10-25,
12# nkkswitches.com/pdf/Bpushbuttons.pdf), in inches (mm); the mm values are used.
13# Page C17, Typical Switch Dimensions, Single Pole, Right Angle PC (BB15AH-FA): body (8.8) .346 wide and (7.3) .287 high; bushing
14# (6.0) dia. .236, (2.7) .106 long; plunger (2.8) dia. .110, (5.4) .213 out of the bushing; (13.9) .546 from the bushing's nose to
15# the terminals' row; plunger axis (3.4) .134 above the board; terminals (2.54) .100 apart, (0.6) dia. .024, (3.1) .122 below the
16# board; bracket legs (5.08) .200 in front of the terminals, (5.08) .200 apart (under terminals 1 and 3), (0.4) .016 thick;
17# F cap (5.1) dia. .201, (4.0) .157 long, its face (6.3) .248 from the bushing's nose.
18# Page C15, PC Terminals, H Right Angle with Bracket: terminals (0.6) dia. .024; bracket legs (0.6) .024 wide, (0.4) .016 thick;
19# bracket (0.5) .020 thick. Slip-On Caps: F AT475, (5.1) dia. .201; H AT496, (7.5) dia. .295; both (6.3) .248 from the bushing,
20# (4.0) .157 long; polyamide; black, white or red.
21TYPES = {"BB15AH": 3} # terminals
22BODY_W = 8.8
23BODY_H = 7.3
24BUSHING_D = 6.0
25BUSHING_L = 2.7
26PLUNGER_D = 2.8
27PLUNGER_OUT = 5.4
28NOSE = 13.9
29AXIS = 3.4
30PITCH = 2.54
31PIN_D = 0.6
32TAIL = 3.1
33LEG_Y = 5.08
34LEG_X = 5.08
35LEG_W = 0.6
36LEG_T = 0.4
37BRACKET_T = 0.5
38CAPS = {"F": 5.1, "H": 7.5}
39CAP_FACE = 6.3
40CAP_L = 4.0
41SHADES = {"black": "#222325", "white": "#ecebe6", "red": "#c8202a"}
42# Proportions, for looks only (the sheet doesn't dimension them; scaled from the C17 side and rear views, README): the housing's width,
43# the front part's height and length, where the housing's underside and the terminals' exit are, and the rear face's distance from
44# the terminals' row.
45HOUSING_W = 8.0
46FRONT_TOP = 6.6
47STEP = 6.0 # the front part ends this far in front of the terminals' row; the taller rear block runs from there to the back
48REAR = 0.8 # the rear face, in front of the terminals' row
49EXIT_Z = 2.5 # the terminals leave the rear face this high, run back to their row and bend down
50
51if kind not in TYPES:
52 raise ValueError(f"no type {kind!r}: {', '.join(TYPES)}")
53if cap != "none" and cap not in CAPS:
54 raise ValueError(f"no cap {cap!r}: none, {', '.join(CAPS)}")
55if cap_color not in SHADES:
56 raise ValueError(f"no cap colour {cap_color!r}: {', '.join(SHADES)}")
57nose = -NOSE
58plate = nose + BUSHING_L # the bracket's front plate starts behind the bushing
59front = plate + BRACKET_T # the housing's front face
60bottom = BRACKET_T # the housing's front part stands on the bracket's bottom plate
61
62model = Model()
63# Housing (glass fibre reinforced polyamide): a front part over the bracket and a taller rear block down to the board.
64model.box("housing_front", HOUSING_W, -STEP - front, FRONT_TOP - bottom, at=(0, (front - STEP) / 2, (FRONT_TOP + bottom) / 2), op="new",
65 body="housing_body", name="Housing")
66model.box("housing_rear", HOUSING_W, STEP - REAR + 0.01, BODY_H - bottom, at=(0, (-STEP - REAR) / 2 - 0.005, (BODY_H + bottom) / 2),
67 op="join", body="housing_body", name="Rear block")
68leg_back = -LEG_Y + LEG_T / 2 # the bracket's bottom plate ends behind the legs; the rear block reaches the board behind it
69model.box("housing_foot", HOUSING_W, -REAR - leg_back, bottom + 0.01, at=(0, (leg_back - REAR) / 2, (bottom + 0.01) / 2), op="join",
70 body="housing_body", name="Rear foot")
71# Bushing (carbon blended polyamide), from the bracket's plate to the nose.
72model.cylinder("bushing", BUSHING_D / 2, BUSHING_L + BRACKET_T, at=(0, front, AXIS), direction=(0, -1, 0), op="new", body="bushing_body",
73 name="Bushing")
74# Plunger (polyacetal, white): out of the bushing's nose.
75model.cylinder("plunger", PLUNGER_D / 2, PLUNGER_OUT, at=(0, nose, AXIS), direction=(0, -1, 0), op="new", body="plunger_body",
76 name="Plunger")
77# Support bracket (tin plated phosphor bronze, 0.5): a front plate round the bushing, a bottom plate under the housing's front part,
78# and two legs 0.6 x 0.4 under terminals 1 and 3, 5.08 in front of the terminals' row.
79model.box("bracket_plate", BODY_W, BRACKET_T, BODY_H, at=(0, plate + BRACKET_T / 2, BODY_H / 2), op="new", body="bracket_body",
80 name="Bracket front plate")
81model.cylinder("bracket_hole", BUSHING_D / 2, BRACKET_T + 0.2, at=(0, plate + BRACKET_T + 0.1, AXIS), direction=(0, -1, 0), op="cut",
82 body="bracket_body", name="Bushing hole")
83model.box("bracket_bottom", HOUSING_W, leg_back - front + 0.01, BRACKET_T, at=(0, (leg_back + front) / 2 - 0.005, BRACKET_T / 2), op="join",
84 body="bracket_body", name="Bracket bottom plate")
85for i, sx in enumerate((-1, 1)):
86 model.box(f"leg_{i + 1}", LEG_W, LEG_T, TAIL + 0.01, at=(sx * LEG_X / 2, -LEG_Y, -(TAIL - 0.01) / 2), op="join", body="bracket_body",
87 name="Bracket leg")
88# Terminals 1-3 (copper alloy, gold plated): round wire 0.6 dia. out of the rear face at EXIT_Z, back to the row and down to the tip.
89pins = []
90for i, x in enumerate((-PITCH, 0.0, PITCH)):
91 body = f"terminal_{i + 1}_body"
92 model.cylinder(f"terminal_{i + 1}_run", PIN_D / 2, REAR + PIN_D / 2, at=(x, -REAR, EXIT_Z), direction=(0, 1, 0), op="new", body=body,
93 name=f"Terminal {i + 1}")
94 model.cylinder(f"terminal_{i + 1}_down", PIN_D / 2, EXIT_Z + TAIL, at=(x, 0, -TAIL), op="join", body=body, name=f"Terminal {i + 1} tail")
95 pins.append(body)
96if cap != "none":
97 # Slip-on cap (polyamide): its face CAP_FACE in front of the bushing's nose, over the plunger's end.
98 model.cylinder("cap", CAPS[cap] / 2, CAP_L, at=(0, nose - CAP_FACE, AXIS), direction=(0, 1, 0), op="new", body="cap_body",
99 name="Cap")
100 tip = nose - PLUNGER_OUT
101 model.cylinder("cap_bore", PLUNGER_D / 2, nose - CAP_FACE + CAP_L - tip, at=(0, tip, AXIS), direction=(0, 1, 0), op="cut",
102 body="cap_body", name="Cap bore")
103# Materials from page C13: housing glass fibre reinforced polyamide and bushing carbon blended polyamide (pa6, black), plunger
104# polyacetal (pom-copolymer, white), bracket tin plated phosphor bronze (copper-c51000), terminals copper alloy, gold plated (copper);
105# caps polyamide (pa6) in their colour.
106model.material("pa6", bodies=["housing_body"], color="#2a2b2e")
107model.material("pa6", bodies=["bushing_body"], color="#1d1e20")
108model.material("pom-copolymer", bodies=["plunger_body"], color="#ecebe6")
109model.material("copper-c51000", bodies=["bracket_body"], color="#c9ccd0")
110model.material("copper", bodies=pins, color="#d8b25a")
111if cap != "none":
112 model.material("pa6", bodies=["cap_body"], color=SHADES[cap_color])
113result = model.result()
114

Right-angle through-hole subminiature pushbutton, NKK BB15AH (SPDT, momentary), from NKK's Series BB sheet (pages C13, C15, C17): body 8.8 wide and 7.3 high, a 6.0 dia. bushing, a 2.8 dia. plunger 5.4 out, its axis 3.4 above the board; three 0.6 dia. terminals 2.54 apart, 13.9 behind the bushing's nose; a support bracket with two legs 5.08 in front of them; 3.1 below the board. Optional slip-on cap F (5.1 dia.) or H (7.5 dia.) in black, white or red (BB15AH-FA ... -HC). See the README.

Right-angle subminiature pushbutton

A right-angle through-hole subminiature pushbutton, NKK's Series BB BB15AH: single pole, SPDT, momentary, with right-angle PC terminals and a support bracket. It has a black housing, a round bushing with a white plunger, a metal bracket with two legs, three wire terminals, and an optional slip-on cap.

The origin is terminal 2 (COM), on the board's top face (the XY plane). Terminals 1, 2 and 3 lie along X, 2.54 apart. The plunger points along -Y, and its axis is 3.4 above the board.

cap is the slip-on cap: none (BB15AH), F (AT475, 5.1 dia.) or H (AT496, 7.5 dia.). cap_color is its colour, the part number's last letter: A black, B white, C red (for example BB15AH-FA).

  • The body is 8.8 wide and 7.3 high.
  • The bushing is 6.0 dia. and 2.7 long. The plunger is 2.8 dia. and comes 5.4 out of the bushing's nose.
  • The terminals are 0.6 dia., 2.54 apart, and 13.9 behind the bushing's nose. They reach 3.1 below the board.
  • The bracket is 0.5 thick. Its two legs are 0.6 wide and 0.4 thick, 5.08 in front of the terminals and 5.08 apart, under terminals 1 and 3.
  • A cap's face is 6.3 in front of the bushing's nose, and the cap is 4.0 long. The 7.5 cap reaches 0.35 below the board's face, so a switch with it sits at the board's edge.

Source

NKK Switches, Series BB, Process Sealed Subminiature Antistatic Pushbuttons, catalogue pages C12 to C17 (PDF of 2016-10-25), from NKK's own site, https://www.nkkswitches.com/pdf/Bpushbuttons.pdf. Dimensions are in inches (mm); the mm values are used here.

  • Page C17, Typical Switch Dimensions, Single Pole, Right Angle PC (drawn as BB15AH-FA): body (8.8) .346 wide and (7.3) .287 high; bushing (6.0) dia. .236 and (2.7) .106 long; plunger (2.8) dia. .110, (5.4) .213 out of the bushing; (13.9) .546 from the bushing's nose to the terminals; plunger axis (3.4) .134 above the board; terminals (2.54) .100 apart, (0.6) dia. .024, (3.1) .122 below the board; bracket legs (5.08) .200 in front of the terminals and (5.08) .200 apart, (0.4) .016 thick; cap (5.1) dia. .201 and (4.0) .157 long, its face (6.3) .248 from the bushing's nose.
  • Page C15, PC Terminals, H Right Angle with Bracket: terminals (0.6) dia. .024; bracket legs (0.6) .024 wide and (0.4) .016 thick; bracket (0.5) .020 thick. Slip-On Caps: F AT475, (5.1) dia. .201; H AT496, (7.5) dia. .295; both (6.3) .248 from the bushing and (4.0) .157 long, polyamide, black, white or red.
  • Page C14, Typical Switch Ordering Example: BB15AH-FA is SPDT, ON-(ON) circuit, a .213" (5.4mm) long white plunger (A), right angle PC terminals with bracket (H), and a black .201" (5.1mm) diameter cap (F, A); caps F .201" (5.1mm) or H .295" (7.5mm) diameter.
  • Page C13, Materials & Finishes: plunger polyacetal; bushing carbon blended polyamide; case housing glass fiber reinforced polyamide; support bracket tin plated phosphor bronze; terminals copper alloy with gold plating. Page C15: standard plunger colour white.

The sheet gives no weight.

Proportions, for looks only. The sheet doesn't dimension the following. They are scaled from page C17's side and rear views:

  • The housing, 8.0 wide; the bracket's front plate is the 8.8 width.
  • The housing's front part, 6.6 high, from the bracket's front plate to 6.0 in front of the terminals, standing on the bracket's bottom plate. Behind it, the rear block is the full 7.3 high and reaches the board behind the legs.
  • The rear face, 0.8 in front of the terminals. The terminals leave it 2.5 above the board, run back to their row and bend down.
  • The bracket is drawn as a front plate round the bushing and a bottom plate to the legs. The legs are straight, without the drawing's snap-in kink.

Materials follow page C13: the housing and bushing polyamide (pa6, black), the plunger polyacetal (pom-copolymer, white), the bracket phosphor bronze (copper-c51000, tin coloured), the terminals copper alloy (copper, gold coloured), and the caps polyamide (pa6) in their colour. Mass check: the sheet states no weight. As modelled, BB15AH is 0.60 g housing + 0.10 g bushing + 0.37 g bracket + 0.05 g plunger + 0.05 g terminals = 1.17 g.

Catalogue models

The old SW NKK BB15AH model names this part, so it maps to BB15AH. It was measured on the reference model (2026-11-06). It carries a 5.1 mm cap, which BB15AH has no letter for (that is BB15AH-F_), and its body is a plain block. The width, height, terminals and legs agree with the sheet.

Old model NKK sheet
Body a block 8.8 wide, 7.3 high, 12.7 long, out to 13.9 in front of the terminals 8.8 wide, 7.3 high; a 6.0 dia. bushing 2.7 long in front, its nose 13.9 in front of the terminals
Plunger axis 3.65 above the board 3.4
Cap 5.1 dia., 4.0 long, its face 20.2 in front of the terminals none on BB15AH; F cap 5.1 dia., 4.0 long, its face 6.3 + 13.9 = 20.2 in front
Terminals 0.6 square, 2.54 apart, 3.1 below the board 0.6 dia., 2.54 apart, 3.1 below
Bracket legs 0.6 x 0.4, 5.08 in front of the terminals, under terminals 1 and 3 the same

The family's other switches (DIP switches, slide switches, tactile switches) are other parts. See COVERAGE.md.

  1. 1.0.0 Latest
More #pushbutton
STEVEMIT

steve/right-angle-tactile-switch

Right-angle 6 x 6 mm through-hole tactile switches, C&K PTS645V: round actuators 3.15 to 8.35 mm from the front leads, or the 6.15 mm square actuator.

0 5 sizes 0 1 hour ago v1.0.0
STEVEMIT

steve/small-tactile-switch-tht

6 x 3.5 mm through-hole tactile switches from APEM's MJTP sheet: MJTP1243 (4.3 mm actuator) and MJTP1250 (5.0 mm), two terminals 6.5 apart.

0 2 sizes 0 1 hour ago v1.0.0
STEVEMIT

steve/tht-tactile-switch

6 x 6 mm through-hole tactile switches from Omron's B3F data sheet: flat plungers 4.3 to 9.5 mm high, projected 7.3 mm, with or without a ground terminal.

0 9 sizes 0 3 hours ago v1.0.0
STEVEMIT

steve/slide-switch-tht

Through-hole slide switches from the makers' drawings: C&K OS102011 SPDT, vertical (MS2Q) and right-angle (MA1Q); E-Switch EG1224 (SPDT) and EG2219 (DPDT), right-angle.

0 4 sizes 0 1 hour ago v1.1.0