From ef97189eeba2ea69aa782d1d0ea61bbf85201468 Mon Sep 17 00:00:00 2001 From: sjc Date: Thu, 7 May 2020 10:00:49 -0400 Subject: [PATCH] Box for universal motor Needs updates to make brushes fit properly. --- lovejoy.scad | 8 +- motor.scad | 209 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 214 insertions(+), 3 deletions(-) create mode 100644 motor.scad diff --git a/lovejoy.scad b/lovejoy.scad index 01896a0..344cff5 100644 --- a/lovejoy.scad +++ b/lovejoy.scad @@ -4,14 +4,13 @@ use module spider_section(ir=6,or=13, l=6, lt=1, h, die=false) { - $fn= ($preview || $fn > 60) ? $fn : 60; a = 360/l; cx=or-ir+.2; for (r=[0,a]) rotate([0,0,r]) translate([ir+cx/2-.2,0,0]) cube([cx, die ? lt+.2 : lt, h], center=true); 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); } else { 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") lovejoy() translate([0,0,-6]) cylinder(r=2, h=12, $fn=4, center=true); color("green") diff --git a/motor.scad b/motor.scad new file mode 100644 index 0000000..052760f --- /dev/null +++ b/motor.scad @@ -0,0 +1,209 @@ +use + +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); +} \ No newline at end of file