Box for universal motor

Needs updates to make brushes fit properly.
This commit is contained in:
sjc
2020-05-07 10:00:49 -04:00
parent b0b8994cac
commit ef97189eeb
2 changed files with 214 additions and 3 deletions

View File

@@ -4,14 +4,13 @@ use <PolyGear/shortcuts.scad>
module spider_section(ir=6,or=13, l=6, lt=1, h, die=false) { module spider_section(ir=6,or=13, l=6, lt=1, h, die=false) {
$fn= ($preview || $fn > 60) ? $fn : 60;
a = 360/l; a = 360/l;
cx=or-ir+.2; cx=or-ir+.2;
for (r=[0,a]) for (r=[0,a])
rotate([0,0,r]) rotate([0,0,r])
translate([ir+cx/2-.2,0,0]) cube([cx, die ? lt+.2 : lt, h], center=true); translate([ir+cx/2-.2,0,0]) cube([cx, die ? lt+.2 : lt, h], center=true);
if (die) { if (die) {
RiS(R=or, r=0, h=h, w1=0, w2=60, center=true, D=undef, d=undef); RiS(R=or, r=0, h=h, w1=0, w2=60);
Ri(R=ir+.4, r=0, h=h); Ri(R=ir+.4, r=0, h=h);
} else { } else {
Ri(R=ir, r=ir-lt, h=h); Ri(R=ir, r=ir-lt, h=h);
@@ -36,7 +35,10 @@ module lovejoy(ph=5, jh=3) {
} }
} }
$fs= ($preview || $fn > 2) ? $fn : .1; if (! $preview) {
$fs= .1;
$fn= 60;
}
color("pink") color("pink")
lovejoy() translate([0,0,-6]) cylinder(r=2, h=12, $fn=4, center=true); lovejoy() translate([0,0,-6]) cylinder(r=2, h=12, $fn=4, center=true);
color("green") color("green")

209
motor.scad Normal file
View File

@@ -0,0 +1,209 @@
use <inserts.scad>
STATOR_L=30;
STATOR_H=57.19;
STATOR_W=56;
STATOR_ID=4.33;
ARM_AXIS=114;
ARM_FRONT_BEAR=22.02;
ARM_FRONT_BEAR_L=6.8;
ARM_REAR_BEAR=19.09;
ARM_REAR_BEAR_L=6.6;
ARM_WIND=55;
ARM_WIND_L=64;
ARM_BRUSH_OFF=23;
ARM_REAR_OFF=23;
FAN_BAFFLE=37;
FAN_BAFFLE_L=2;
FAN=53;
FAN_L=7;
module rim(d, rw=2.5, rh=2.4, cc=25, rcolor="red", top=false) {
// Rim
rcol = $incolor ? rcolor : undef;
off = top ? rw : 0;
difference() {
linear_extrude(height=rh)
square([d.x-off, d.y-off], center=true);
translate([0,0,-.15]) linear_extrude(height=rh+.3)
offset(r=-rw) square([ARM_AXIS-.1-off, STATOR_W+8+6+5-off], center=true);
translate([0,0,(rw+1)/2]) cube([d.x+1, cc, rh+1], center=true);
}
}
module stator(sl=STATOR_L, sh=STATOR_H, sw=STATOR_W, id=STATOR_ID) {
cube([sh+.2,sw+.2,sl+.2], center=true);
rotate([0,0,0]) cylinder(d=sw-1,h=sl+7, center=true);
for (i=[-1, 1]) {
translate([0,i*-(58/2-2.5),0]) cube([36,8,58], center=true);
}
}
module arm_axis(d=0, arm_axis=ARM_AXIS,real=false, acolor="silver") {
incolor = is_undef($incolor) ? false : $incolor;
axis_color = incolor ? acolor : undef;
rotate([0,90,0]) {
if ($children < 1) {
color(axis_color) cylinder(h=arm_axis, d=1, center=true);
} else {
translate([0,0,d]) children();
}
}
}
module brush_posts() {
for (ix=[-1, 1])
translate([0,ix*(1+22.7/2+13.25/2),0]) {
cube([13.25,18+4,13.25], center=true);
// side posts
translate([3-1.5,0,0]) cube([6.1,5,20], center=true);
// Wire Clearance
translate([2,ix*12,15]) cube([8,9,22], center=true);
}
}
module armature(
aa=ARM_AXIS,
afbd=ARM_FRONT_BEAR,
afbl=ARM_FRONT_BEAR_L,
arbd=ARM_REAR_BEAR,
arbl=ARM_REAR_BEAR_L,
abo=ARM_BRUSH_OFF,
awd=ARM_WIND,
awl=ARM_WIND_L,
fbcd=FAN_BAFFLE,
fl=FAN_L,
fd=FAN,
fbd=FAN_BAFFLE,
fbl=FAN_BAFFLE_L,
sl=STATOR_L,
spd=16
) {
fo=6;
incolor = is_undef($incolor) ? false : $incolor;
bearing_color = incolor ? "green" : undef;
fan_color = incolor ? "blue" : undef;
//%arm_axis(d=0, acolor="purple");
// front bearing
arm_axis(d=aa/2 - afbl)
color(bearing_color) cylinder(d=afbd, h=afbl);
// Fan
color(fan_color) arm_axis(d=aa/2 - afbl - fl +.5) {
cylinder(d=spd+.4, h=fl+.2);
translate([0,0,-(fo)]) {
translate([0,0,-2]) cylinder(d=fd+1, h=fl+4);
// air outlets
for (r=[60:360/12:300])
rotate([0,0,270-r])
translate([0,fd/2,fl/2]) cube([fl,42,fl/2], center=true);
}
translate([0,0,-(fo+.5+fbl)-3]) cylinder(d2=fbd, d1=fd-2,h=fbl+2);
}
// Arm Clearance
arm_axis(d=4.5) cylinder(d=awd, h=awl-4, center=true);
//arm_axis(d=aa/2 - afbl) cylinder(d=afbd, h=afbl);
// Rear Clearance
arm_axis(d=-(awl/2 + abo +1)) {
translate([0,0,abo/2-.1]) cylinder(d=27,h=abo/2+8);
translate([0,0,arbl/2]) cylinder(d2=27,d1=arbd-2.5,h=abo/2-1);
// Air Inlets
for (r=[60:360/12:300])
if (270-r != 90) // Not straight up
rotate([0,0,270-r])
translate([0,arbd/2 +12,fl-4])
rotate([-30,0,0]) cube([5,45,4], center=true);
}
arm_axis(d=(aa-sl)/2 -34.5 -3) stator();
// Brush Posts
arm_axis(d=-(aa/2 - abo)) {
// communtator
cylinder(d=22.5, h=9.92, center=true);
brush_posts();
}
// rear bearing
arm_axis(d=-(aa/2))
color(bearing_color) cylinder(d=arbd, h=arbl);
}
module case(top=false)
{
$incolor=false;
ext=1.5;
extx=17.5;
bx=ARM_AXIS-.1;
by=STATOR_W+8+6+5;
bz=2+STATOR_H/2;
arot=top ? [180,0,0] : [0,0,0];
difference() {
union() {
cube([bx, by, bz], center=true);
translate([0,0,bz/2]) rim(d=[bx, by], top=top);
if (! top)
translate([-(bx/2 - ARM_BRUSH_OFF+extx/2),-by/2,bz/2]) cube([extx,by-1,ext]);
}
translate([0,0,bz/2]) rotate(arot) armature();
if (top) {
echo("top");
translate([-(bx/2 - ARM_BRUSH_OFF+extx/2),-by/2 + 2,bz/2-ext])
cube([extx,by-5,ext+1]);
}
// Case screws
csrot = top ? [0,180,0] : [0,0,0];
for(ix=[1, -1])
for(iy=[1, -1])
translate([ix*(bx/2 - 8), iy*(by/2 - 8), bz/2 +.01])
rotate(csrot) thread_insertM3(bl=40, bz=-12.8, $die=true);
// Mount Inserts
for(ix=[1, -1])
for(iy=[1, -1])
translate([ix*(bx/2 - 8), iy*(by/2 - 8), -(bz/2 +.01)])
rotate([0,180,0])
thread_insertM3(bl=40, bz=-20, $die=true);
// Input Wires hole
ho = top ? 8/2 : 0 ;
hys = top ? 1 : -1;
translate([-20,hys*(by/2-4),bz/2 + ho])
rotate([90,0,0])
cylinder(d=8, h=9, center=true);
}
}
if (! $preview) {
$fs=.1;
}
by=STATOR_W+8+6+5;
bz=2+STATOR_H/2;
module place_plate(by, bz) {
d = by/2 + 5;
translate([0,d,bz/2]) children(0);
translate([0,-d,bz/2]) children(1);
}
module place_final(bz) {
translate([0,0,bz/2]) rotate([180,0,0]) children(0) ;
translate([0,0,-bz/2]) children(1);
}
place_plate(by, bz) {
case(bz=bz, top=true);
case(bz=bz);
}