Add bolts on rotor
This commit is contained in:
parent
878d532890
commit
74145f88d2
|
@ -25,13 +25,17 @@ class Onbashira(Model):
|
||||||
# Size of ball bearings
|
# Size of ball bearings
|
||||||
bearing_ball_diam: float = 25.4 * 1/2
|
bearing_ball_diam: float = 25.4 * 1/2
|
||||||
bearing_ball_gap: float = .5
|
bearing_ball_gap: float = .5
|
||||||
bearing_height: float = 40.0
|
# Thickness of bearing disks
|
||||||
bearing_thickness: float = 20.0
|
bearing_thickness: float = 20.0
|
||||||
bearing_track_radius: float = 120.0
|
bearing_track_radius: float = 120.0
|
||||||
# Gap between the inner and outer bearing disks
|
# Gap between the inner and outer bearing disks
|
||||||
bearing_gap: float = 10.0
|
bearing_gap: float = 10.0
|
||||||
bearing_disk_thickness: float = 25.4 / 8
|
bearing_disk_thickness: float = 25.4 / 8
|
||||||
|
|
||||||
|
rotor_bind_bolt_diam: float = 10.0
|
||||||
|
rotor_bind_radius: float = 50.0
|
||||||
|
stator_bind_radius: float = 150.0
|
||||||
|
|
||||||
material_side: Material = Material.WOOD_BIRCH
|
material_side: Material = Material.WOOD_BIRCH
|
||||||
material_bearing: Material = Material.PLASTIC_PLA
|
material_bearing: Material = Material.PLASTIC_PLA
|
||||||
material_bearing_ball: Material = Material.ACRYLIC_TRANSPARENT
|
material_bearing_ball: Material = Material.ACRYLIC_TRANSPARENT
|
||||||
|
@ -41,8 +45,9 @@ class Onbashira(Model):
|
||||||
assert self.n_side >= 3
|
assert self.n_side >= 3
|
||||||
# Bulk must be large enough for the barrel + bearing to rotate
|
# Bulk must be large enough for the barrel + bearing to rotate
|
||||||
assert self.bulk_radius - self.side_thickness - self.bearing_thickness - self.bearing_diam > self.rotation_radius + self.barrel_diam / 2
|
assert self.bulk_radius - self.side_thickness - self.bearing_thickness - self.bearing_diam > self.rotation_radius + self.barrel_diam / 2
|
||||||
assert self.bearing_height > self.bearing_diam
|
|
||||||
assert self.bearing_gap < 0.95 * self.bearing_ball_diam
|
assert self.bearing_gap < 0.95 * self.bearing_ball_diam
|
||||||
|
assert self.rotor_bind_bolt_diam < self.rotor_bind_radius < self.bearing_track_radius
|
||||||
|
assert self.bearing_track_radius < self.stator_bind_radius
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def angle_side(self) -> float:
|
def angle_side(self) -> float:
|
||||||
|
@ -62,6 +67,9 @@ class Onbashira(Model):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def bearing_disk_gap(self) -> float:
|
def bearing_disk_gap(self) -> float:
|
||||||
|
"""
|
||||||
|
Gap between two bearing disks to touch the bearing balls
|
||||||
|
"""
|
||||||
diag = self.bearing_ball_diam
|
diag = self.bearing_ball_diam
|
||||||
dx = self.bearing_gap
|
dx = self.bearing_gap
|
||||||
return math.sqrt(diag ** 2 - dx ** 2)
|
return math.sqrt(diag ** 2 - dx ** 2)
|
||||||
|
@ -72,6 +80,12 @@ class Onbashira(Model):
|
||||||
Cq.Sketch()
|
Cq.Sketch()
|
||||||
.regularPolygon(self.side_width, self.n_side)
|
.regularPolygon(self.side_width, self.n_side)
|
||||||
.circle(self.bearing_track_radius + self.bearing_gap/2, mode="s")
|
.circle(self.bearing_track_radius + self.bearing_gap/2, mode="s")
|
||||||
|
.reset()
|
||||||
|
.regularPolygon(
|
||||||
|
self.stator_bind_radius, self.n_side,
|
||||||
|
mode="c", tag="bolt")
|
||||||
|
.vertices(tag="bolt")
|
||||||
|
.circle(self.rotor_bind_bolt_diam/2, mode="s")
|
||||||
)
|
)
|
||||||
def bearing_stator(self) -> Cq.Workplane:
|
def bearing_stator(self) -> Cq.Workplane:
|
||||||
return (
|
return (
|
||||||
|
@ -81,12 +95,22 @@ class Onbashira(Model):
|
||||||
)
|
)
|
||||||
@target(name="bearing-rotor", kind=TargetKind.DXF)
|
@target(name="bearing-rotor", kind=TargetKind.DXF)
|
||||||
def profile_bearing_rotor(self) -> Cq.Sketch:
|
def profile_bearing_rotor(self) -> Cq.Sketch:
|
||||||
|
bolt_angle = 180 / self.n_side
|
||||||
return (
|
return (
|
||||||
Cq.Sketch()
|
Cq.Sketch()
|
||||||
.circle(self.bearing_track_radius - self.bearing_gap/2)
|
.circle(self.bearing_track_radius - self.bearing_gap/2)
|
||||||
.regularPolygon(self.rotation_radius, self.n_side)
|
.reset()
|
||||||
.vertices()
|
.regularPolygon(
|
||||||
|
self.rotation_radius, self.n_side,
|
||||||
|
mode="c", tag="corners")
|
||||||
|
.vertices(tag="corners")
|
||||||
.circle(self.barrel_diam/2, mode="s")
|
.circle(self.barrel_diam/2, mode="s")
|
||||||
|
.reset()
|
||||||
|
.regularPolygon(
|
||||||
|
self.rotor_bind_radius, self.n_side,
|
||||||
|
mode="c", tag="bolt", angle=bolt_angle)
|
||||||
|
.vertices(tag="bolt")
|
||||||
|
.circle(self.rotor_bind_bolt_diam/2, mode="s")
|
||||||
)
|
)
|
||||||
def bearing_rotor(self) -> Cq.Workplane:
|
def bearing_rotor(self) -> Cq.Workplane:
|
||||||
return (
|
return (
|
||||||
|
@ -96,7 +120,25 @@ class Onbashira(Model):
|
||||||
)
|
)
|
||||||
@target(name="bearing-gasket", kind=TargetKind.DXF)
|
@target(name="bearing-gasket", kind=TargetKind.DXF)
|
||||||
def profile_bearing_gasket(self) -> Cq.Sketch:
|
def profile_bearing_gasket(self) -> Cq.Sketch:
|
||||||
pass
|
dr = self.bearing_ball_diam
|
||||||
|
eps = 0.05
|
||||||
|
return (
|
||||||
|
Cq.Sketch()
|
||||||
|
.circle(self.bearing_track_radius + dr)
|
||||||
|
.circle(self.bearing_track_radius - dr, mode="s")
|
||||||
|
.reset()
|
||||||
|
.regularPolygon(
|
||||||
|
self.bearing_track_radius, self.n_bearing_balls,
|
||||||
|
mode="c", tag="corners")
|
||||||
|
.vertices(tag="corners")
|
||||||
|
.circle(self.bearing_ball_diam/2 * (1+eps), mode="s")
|
||||||
|
)
|
||||||
|
def bearing_gasket(self) -> Cq.Workplane:
|
||||||
|
return (
|
||||||
|
Cq.Workplane()
|
||||||
|
.placeSketch(self.profile_bearing_gasket())
|
||||||
|
.extrude(self.bearing_disk_thickness)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@target(name="pipe", kind=TargetKind.DXF)
|
@target(name="pipe", kind=TargetKind.DXF)
|
||||||
|
@ -138,7 +180,7 @@ class Onbashira(Model):
|
||||||
return Cq.Solid.makeSphere(radius=self.bearing_ball_diam/2, angleDegrees1=-90)
|
return Cq.Solid.makeSphere(radius=self.bearing_ball_diam/2, angleDegrees1=-90)
|
||||||
|
|
||||||
def assembly_rotor(self) -> Cq.Assembly:
|
def assembly_rotor(self) -> Cq.Assembly:
|
||||||
z_lower = -self.bearing_disk_gap - self.bearing_disk_thickness
|
z_lower = -self.bearing_disk_gap/2 - self.bearing_disk_thickness
|
||||||
a = (
|
a = (
|
||||||
Cq.Assembly()
|
Cq.Assembly()
|
||||||
.addS(
|
.addS(
|
||||||
|
@ -169,6 +211,13 @@ class Onbashira(Model):
|
||||||
role=Role.ROTOR,
|
role=Role.ROTOR,
|
||||||
loc=Cq.Location(0, 0, z_lower)
|
loc=Cq.Location(0, 0, z_lower)
|
||||||
)
|
)
|
||||||
|
.addS(
|
||||||
|
self.bearing_gasket(),
|
||||||
|
name="gasket",
|
||||||
|
material=self.material_bearing,
|
||||||
|
role=Role.ROTOR,
|
||||||
|
loc=Cq.Location(0, 0, -self.bearing_disk_thickness/2)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
for i in range(self.n_bearing_balls):
|
for i in range(self.n_bearing_balls):
|
||||||
ball = self.bearing_ball()
|
ball = self.bearing_ball()
|
||||||
|
@ -186,7 +235,7 @@ class Onbashira(Model):
|
||||||
a = Cq.Assembly()
|
a = Cq.Assembly()
|
||||||
side = self.side_panel()
|
side = self.side_panel()
|
||||||
r = self.bulk_radius
|
r = self.bulk_radius
|
||||||
a = a.add(self.assembly_bearing(), name="bearing")
|
a = a.add(self.assembly_rotor(), name="rotor")
|
||||||
for i in range(self.n_side):
|
for i in range(self.n_side):
|
||||||
a = a.addS(
|
a = a.addS(
|
||||||
side,
|
side,
|
||||||
|
|
Loading…
Reference in New Issue