include use use use <./core_uy1658-60.scad> use <./legs.scad> /* [Options] */ LegLength=30.40; LegDiameter=16; BoltDiameter=7.06; CoreGap=0; NumberCoils=10; YokeHeight = 12.14; YokeLen=28.00; /* [Render Options] */ render_fs=.1; render_fn=0; render_fa=.1; // Set Render Options $fs= ($preview) ? $fs : render_fs; $fn= ($preview) ? $fn : render_fn; $fa= ($preview) ? $fa : render_fa; // Bobbin Bobbin_Length=LegLength+CoreGap/2; module core_leg(d=LegDiameter, l=LegLength, bd=BoltDiameter) { difference() { cylinder(d=d, h=l); down(1) left(d/2) cylinder(d=bd, h=l+2); } } module core_uy1658(ld=16, ll=29, bz=12.14, w=60) { echo("Leg Len:", ll-bz); xflip_copy() { left(w/2) core_leg(d=ld, l=ll); fwd(ld/2) cube([w/2,16,bz]); } } module bobbin_joiners(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4, sn=NumberCoils+1, st=.6, sd=50, plug=true, clear=false) { bl=2*(ll-lb) + tg; conThick = 12; conWidth = 15; inner=ld+2*lc; pinLen = 2* conThick + bl; zflip_copy() up((pinLen-conThick)/2) { xflip() { if (clear) half_joiner_clear(h=conWidth, w=conThick,l=conThick/2,orient=ORIENT_X_90); else if (plug) half_joiner(h=conWidth, w=conThick,l=conThick/2,orient=ORIENT_X_90); else half_joiner2(h=conWidth, w=conThick,l=conThick/2,orient=ORIENT_X_90); } } } module bobbin(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4, sn=NumberCoils+1, st=.6, sd=50, orient=ORIENT_X, align=V_CENTER) { bl=2*(ll-lb) + tg; inner=ld+2*lc; outer=inner+2; conNeck = 5; conHead = 5; conThick = 12; conWidth = 15; pinLen = 2* conThick + bl; orient_and_align([sd,sd,bl], orient, align, orig_orient=ORIENT_X) { difference() { union() { cylinder(d=outer,h=bl, center=true); zspread(n=sn,l=bl-st) { cylinder(d=sd,h=st,center=true); left(sd/4)cube([sd/2,sd,st], center=true); } // connector left(inner/2+5) bobbin_joiners(); } cylinder(d=inner,h=bl+2*conThick+2,center=true); // Wire Channels yspread(n=2, l=5+sd/2 ) left(sd/2) cylinder(d=2,h=bl+2,center=true); } left(2*lc+inner/2) intersection() { cylinder(d=6,h=pinLen, center=true); right(2*lc+inner/2) cylinder(d=inner, h=pinLen+2, center=true); } } echo("Coil_ID = ", outer); echo("Coil_len = ", bl-sn*st); } legx = (YokeLen + LegDiameter)/2; right(legx) bobbin(sn=2, sd=26, orient=ORIENT_XNEG); left(legx) bobbin(); %core(gap=0); //left(20+20) rotate([90,0,0]) snaps(); //core_uy1658();