Sign in with STEVE

steve/jaw-coupling

Jaw shaft coupling, clamping type: 14, 20 and 30 mm outside diameter, bores 3 to 12 mm.

v1.0.0 Latest STEVE MIT 0

Not affiliated with or endorsed by MISUMI.

Isometric
part.py 70 lines · Python · STEVE runtime · checked
Download
1"""Jaw coupling, clamping type. Axis along Z, the first hub's end face on the XY plane, bore d1 in the first hub, bore d2 in the second. Two hubs and a spacer,
2three bodies. Fit dimensions from MISUMI's table; see the README."""
3import math
4
5import cadquery as cq
6from steve import Model
7
8size = 20 # mm Outside diameter D
9d1 = 5 # mm Bore 1 (d1 <= d2)
10d2 = 8 # mm Bore 2
11detail = "full" # full: jaws, slits and clamp screw holes; simple: plain cylinder with the bores
12
13# D: (L, hub length l, spacer B, gap C, screw from the end F, screw offset G, clamp screw M, bores offered).
14# MISUMI Couplings catalogue, Jaw Couplings, Clamping, CPJC table, https://de.misumi-ec.com/files/images/products/docs/flexibleshaftcouplings.pdf, PDF p. 20.
15SIZES = {
16 14: (22, 7, 6, 1, 3.5, 4, 2, (3, 4, 5)),
17 20: (30, 10, 8, 1, 5, 6.5, 2.5, (5, 6, 6.35, 7, 8)),
18 30: (35, 11, 10, 1.5, 5.5, 10, 4, (7, 8, 9.525, 10, 11, 12)),
19}
20L, hub, spacer_h, gap, screw_at, screw_off, screw, bores = SIZES[size]
21if d1 not in bores or d2 not in bores or d1 > d2:
22 raise ValueError(f"The {size} mm jaw coupling offers bores {bores}, with d1 <= d2.")
23R = size / 2
24SLIT = 0.05 * size # the slit's width, the jaws' width and inner radius, and the spacer's shape are proportions, for looks
25JAW = 40
26INNER = 0.45 * R
27
28
29def sector(angle, spread, inner, outer, z0, height):
30 """A sector of a ring, spread degrees wide."""
31 a, b, c = (math.radians(angle + t) for t in (-spread / 2, 0, spread / 2))
32 return (cq.Workplane("XY").workplane(offset=z0).moveTo(inner * math.cos(a), inner * math.sin(a)).lineTo(outer * math.cos(a), outer * math.sin(a))
33 .threePointArc((outer * math.cos(b), outer * math.sin(b)), (outer * math.cos(c), outer * math.sin(c)))
34 .lineTo(inner * math.cos(c), inner * math.sin(c)).threePointArc((inner * math.cos(b), inner * math.sin(b)), (inner * math.cos(a), inner * math.sin(a))).close().extrude(height))
35
36
37def half(z0, first_angle, bore, slit_z0):
38 """One hub with its three jaws, from z0 for a hub length, the jaws reaching across the spacer."""
39 near, far = (hub, hub + gap) if first_angle == 0 else (hub + gap, hub)
40 shape = cq.Workplane("XY").workplane(offset=z0).circle(R).extrude(hub)
41 for k in range(3):
42 shape = shape.union(sector(first_angle + 120 * k, JAW, 1.1 * INNER, R, near, L - 2 * hub - gap), clean=False)
43 shape = shape.cut(cq.Workplane("XY").workplane(offset=slit_z0).center(R / 2 + 0.5, 0).rect(R + 1, SLIT).extrude(hub + 1))
44 shape = shape.cut(cq.Workplane("XY").workplane(offset=z0 - 1).circle(bore / 2).extrude(hub + 2))
45 return shape
46
47
48model = Model()
49if detail == "simple":
50 body = cq.Workplane("XY").circle(R).extrude(L)
51 body = body.cut(cq.Workplane("XY").workplane(offset=-1).circle(d1 / 2).extrude(L / 2 + 1))
52 body = body.cut(cq.Workplane("XY").workplane(offset=L / 2).circle(d2 / 2).extrude(L / 2 + 1))
53 model.add("body", body, name="Jaw coupling")
54 model.material("aluminum-generic", color="#c9ccd1")
55else:
56 first = half(0, 0, d1, -1)
57 second = half(L - hub, 60, d2, L - hub)
58 for z in (screw_at, L - screw_at):
59 cross = cq.Workplane("YZ").center(screw_off, z).circle(screw / 2).extrude(R + 1, both=True)
60 first, second = first.cut(cross), second.cut(cross)
61 spacer = cq.Workplane("XY").workplane(offset=hub + gap).circle(INNER).circle(d2 / 2 + 0.3).extrude(spacer_h)
62 for k in range(6):
63 spacer = spacer.union(sector(30 + 60 * k, 60 - JAW - 2, 0.9 * INNER, R * 0.82, hub + gap, spacer_h), clean=False)
64 model.add("hub_1", first, op="new", body="hub_1_body", name="Hub, d1")
65 model.add("hub_2", second, op="new", body="hub_2_body", name="Hub, d2")
66 model.add("spacer", spacer, op="new", body="spacer_body", name="Spacer")
67 model.material("aluminum-generic", bodies=["hub_1_body", "hub_2_body"], color="#c9ccd1")
68 model.material("tpu-98a", bodies=["spacer_body"], color="#c8362e")
69result = model.result()
70

Jaw shaft coupling, clamping type, as two hubs and a spacer, with jaws, slits and clamp screw holes. Sizes and bores from MISUMI's CPJC table. See the README.

Jaw coupling

A clamping jaw shaft coupling: two hubs and a spacer, three solids. Axis along Z, the first hub's end face on the XY plane, bore d1 in the first hub and bore d2 in the second.

Source

MISUMI Couplings catalogue, Jaw Couplings, Clamping, CPJC table, https://de.misumi-ec.com/files/images/products/docs/flexibleshaftcouplings.pdf, PDF page 20: outside diameter D, length L, hub length l, spacer B, gap C, clamp screw positions F and G, screw M, and the bores offered on each size.

Only bore pairs from one size's list are offered, so 3 to 10 mm isn't a part here, because no size offers both.

Proportions, for looks only: the jaws' width and inner radius, the spacer's shape and the slit's width. The clamp screws themselves aren't modelled, only their holes at nominal M. The spacer shown is the red, Shore A 98 one (table: blue A 80, white A 92, red A 98, polyurethane). MISUMI's 40 mm size has a different hub and isn't here.

  1. 1.0.0 Latest
More #coupling
STEVEMIT

steve/rigid-coupling

Rigid shaft coupling, split clamping type: 16 to 32 mm outside diameter, bores 5 to 14 mm.

0 8 sizes 0 2 hours ago v1.0.0
STEVEMIT

steve/bellows-coupling

Bellows shaft coupling, clamping type: 12 to 32 mm outside diameter, bores 4 to 14 mm.

0 10 sizes 0 2 hours ago v1.0.0
STEVEMIT

steve/oldham-coupling

Oldham shaft coupling, clamping type: 15 to 26, bores 4 to 12 mm.

0 17 sizes 0 2 hours ago v1.0.0
STEVEMIT

steve/slit-coupling

Slit shaft coupling, long clamping: 12 to 32 mm outside diameter, bores 4 to 14 mm.

0 40 sizes 0 2 hours ago v1.0.0