First TestBed
Working prototype. Still needs full case, fan and current limiter.
This commit is contained in:
44
bobbin.scad
44
bobbin.scad
@@ -2,6 +2,8 @@
|
||||
include <BOSL/constants.scad>
|
||||
use <BOSL/transforms.scad>
|
||||
use <BOSL/joiners.scad>
|
||||
use <./core_uy1658-60.scad>
|
||||
use <./legs.scad>
|
||||
|
||||
/* [Options] */
|
||||
|
||||
@@ -10,6 +12,8 @@ LegDiameter=16;
|
||||
BoltDiameter=7.06;
|
||||
CoreGap=0;
|
||||
NumberCoils=10;
|
||||
YokeHeight = 12.14;
|
||||
YokeLen=28.00;
|
||||
|
||||
/* [Render Options] */
|
||||
render_fs=.1;
|
||||
@@ -40,7 +44,26 @@ module core_uy1658(ld=16, ll=29, bz=12.14, w=60) {
|
||||
}
|
||||
}
|
||||
|
||||
module bobbin(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4, sn=NumberCoils+1, st=.6, sd=50) {
|
||||
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;
|
||||
@@ -50,6 +73,7 @@ module bobbin(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4,
|
||||
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);
|
||||
@@ -58,11 +82,7 @@ module bobbin(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4,
|
||||
left(sd/4)cube([sd/2,sd,st], center=true);
|
||||
}
|
||||
// connector
|
||||
left(inner/2+(conNeck+conHead)/2) zflip_copy()
|
||||
down(conThick/2)
|
||||
up((pinLen)/2) {
|
||||
xflip() half_joiner(h=conWidth, w=conThick,l=conThick/2,orient=ORIENT_X_90);
|
||||
}
|
||||
left(inner/2+5) bobbin_joiners();
|
||||
}
|
||||
cylinder(d=inner,h=bl+2*conThick+2,center=true);
|
||||
// Wire Channels
|
||||
@@ -73,14 +93,14 @@ module bobbin(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4,
|
||||
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);
|
||||
}
|
||||
|
||||
rotate([0,0,0]) {
|
||||
left(20)bobbin(sn=2, sd=26);
|
||||
right(20) bobbin();
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
|
||||
@@ -33,7 +33,7 @@ echo("Bobbin_Max:", 2*LegLength-2*YokeHeight, "mm");
|
||||
echo("Leg Cross Section Area: ", leg_a1-leg_a2, "mm^2");
|
||||
yoke_a = LegDiameter * YokeHeight;
|
||||
echo("Yoke A: ", yoke_a);
|
||||
echo("Magnetic Path: ", 2*(YokeLen+LegDiameter)+2*(LegLength-YokeHeight), "mm");
|
||||
echo("Magnetic Path: ", 2*(YokeLen+LegDiameter)+4*(LegLength-YokeHeight), "mm");
|
||||
|
||||
module core_leg(d=LegDiameter, l=LegLength, bd=BoltDiameter) {
|
||||
difference() {
|
||||
|
||||
87
electrodes.scad
Normal file
87
electrodes.scad
Normal file
@@ -0,0 +1,87 @@
|
||||
|
||||
include <BOSL/constants.scad>
|
||||
use <BOSL/transforms.scad>
|
||||
use <BOSL/shapes.scad>
|
||||
use <BOSL/joiners.scad>
|
||||
use <inserts/inserts.scad>
|
||||
|
||||
/* [Options] */
|
||||
|
||||
LegLength=30.40;
|
||||
LegDiameter=16;
|
||||
BoltDiameter=7.06;
|
||||
CoreGap=0;
|
||||
YokeHeight = 12.14;
|
||||
YokeLen=20.00;
|
||||
|
||||
ConThick = 12;
|
||||
ConWidth = 15;
|
||||
|
||||
SlideClear=.2;
|
||||
|
||||
/* [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;
|
||||
|
||||
|
||||
// Channel
|
||||
ChanWidth = LegDiameter+2*SlideClear;
|
||||
ChanHeight = YokeHeight + SlideClear;
|
||||
ChanLen = LegDiameter/2;
|
||||
|
||||
echo("ChanWidth:", ChanWidth);
|
||||
|
||||
BobbinLen = 2*ConThick + 2*(LegLength-YokeHeight);
|
||||
|
||||
module snaps(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4, sn=NumberCoils+1, st=.6, sd=50) {
|
||||
bl=2*(ll-lb) + tg;
|
||||
inner=ld+2*lc;
|
||||
outer=inner+2;
|
||||
|
||||
//conNeck = 5;
|
||||
//conHead = 5;
|
||||
conThick = 12;
|
||||
conWidth = 15;
|
||||
pinLen = 2* conThick + bl;
|
||||
// connector
|
||||
// left(inner/2+(conNeck+conHead)/2)
|
||||
yflip_copy() back((pinLen-conThick)/2) {
|
||||
half_joiner2(h=conWidth,
|
||||
w=conThick,l=conThick/2,orient=ORIENT_X);
|
||||
left(10)cube([conThick,conThick,conWidth], center=true);
|
||||
right(10)cube([conThick,conThick,conWidth], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module channel(l=ChanLen,w=ChanHeight, h=ChanWidth) {
|
||||
|
||||
half_joiner_clear(h=ConWidth,w=ConThick,l=ConThick/2,orient=ORIENT_XNEG);
|
||||
fwd(.5)leftcube([l+8+.2,w+2+14,h]);
|
||||
}
|
||||
|
||||
module slide(cl=ChanLen, cw=ChanWidth, ch=ConWidth, frontLen=25, w=2) {
|
||||
bl=ChanLen + frontLen;
|
||||
difference() {
|
||||
union() {
|
||||
fwd(w+.2+2) left(cl+8) rightcube([bl+8, cw+4, cw+2*w]);
|
||||
}
|
||||
channel();
|
||||
fwd(4+ConThick/2) right(frontLen/2) rotate([0,-90,0]) {
|
||||
thread_insertM25(bl=30, bz=-30, $die=true);
|
||||
up(3)cylinder(d=7, h=10);
|
||||
}
|
||||
}
|
||||
half_joiner2(h=ConWidth,w=ConThick,l=ConThick/2,orient=ORIENT_XNEG);
|
||||
|
||||
}
|
||||
|
||||
//yflip_copy() fwd(7) zflip_copy() down(10)
|
||||
//yflip_copy() fwd((ConWidth+BobbinLen)/2+2)
|
||||
yflip_copy() fwd(7) rotate([0,90,0])
|
||||
slide();
|
||||
85
legs.scad
Normal file
85
legs.scad
Normal file
@@ -0,0 +1,85 @@
|
||||
|
||||
include <BOSL/constants.scad>
|
||||
use <BOSL/transforms.scad>
|
||||
use <BOSL/shapes.scad>
|
||||
use <BOSL/joiners.scad>
|
||||
use <inserts/inserts.scad>
|
||||
|
||||
/* [Options] */
|
||||
|
||||
LegLength=30.40;
|
||||
LegDiameter=16;
|
||||
BoltDiameter=7.06;
|
||||
CoreGap=0;
|
||||
YokeHeight = 12.14;
|
||||
YokeLen=20.00;
|
||||
|
||||
ConThick = 12;
|
||||
ConWidth = 15;
|
||||
|
||||
SlideClear=.2;
|
||||
|
||||
/* [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;
|
||||
|
||||
|
||||
// Channel
|
||||
ChanWidth = LegDiameter+2*SlideClear;
|
||||
ChanHeight = YokeHeight + SlideClear;
|
||||
ChanLen = LegDiameter/2;
|
||||
|
||||
echo("ChanWidth:", ChanWidth);
|
||||
|
||||
module snaps(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4, sn=NumberCoils+1, st=.6, sd=50) {
|
||||
bl=2*(ll-lb) + tg;
|
||||
inner=ld+2*lc;
|
||||
outer=inner+2;
|
||||
|
||||
//conNeck = 5;
|
||||
//conHead = 5;
|
||||
conThick = 12;
|
||||
conWidth = 15;
|
||||
pinLen = 2* conThick + bl;
|
||||
// connector
|
||||
// left(inner/2+(conNeck+conHead)/2)
|
||||
yflip_copy() back((pinLen-conThick)/2) {
|
||||
half_joiner2(h=conWidth,
|
||||
w=conThick,l=conThick/2,orient=ORIENT_X);
|
||||
left(10)cube([conThick,conThick,conWidth], center=true);
|
||||
right(10)cube([conThick,conThick,conWidth], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module channel(l=ChanLen,w=ChanHeight, h=ChanWidth) {
|
||||
|
||||
half_joiner_clear(h=ConWidth,w=ConThick,l=ConThick/2,orient=ORIENT_XNEG);
|
||||
fwd(.5)leftcube([l+8+.2,w+1,h]);
|
||||
}
|
||||
|
||||
module slide(cl=ChanLen, cw=ChanWidth, ch=ConWidth, frontLen=20, w=1) {
|
||||
bl=ChanLen + frontLen;
|
||||
difference() {
|
||||
union() {
|
||||
fwd(2*w+.1) left(cl+8) rightcube([bl+8, cw, cw+2*w]);
|
||||
}
|
||||
channel();
|
||||
fwd(5) right(frontLen/2) zflip() {
|
||||
thread_insertM25(bl=15, bz=-15, $die=true);
|
||||
up(3)cylinder(d=7, h=10);
|
||||
}
|
||||
}
|
||||
half_joiner2(h=ConWidth,w=ConThick,l=ConThick/2,orient=ORIENT_XNEG);
|
||||
// leg
|
||||
down(ch/2) fwd(2*w+.1) right(frontLen-2) downcube([4,cw,25]);
|
||||
|
||||
}
|
||||
|
||||
yflip_copy() fwd(7) zflip_copy() down(10)
|
||||
slide();
|
||||
82
zvs-driver.scad
Normal file
82
zvs-driver.scad
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
include <BOSL/constants.scad>
|
||||
use <BOSL/transforms.scad>
|
||||
use <BOSL/shapes.scad>
|
||||
use <BOSL/joiners.scad>
|
||||
use <inserts/inserts.scad>
|
||||
use <./bobbin.scad>
|
||||
|
||||
/* [Options] */
|
||||
|
||||
PCB_Y = 100.80;
|
||||
PCB_X = 100.30;
|
||||
PCB_Z = 1.69;
|
||||
PCB_CLR = 5;
|
||||
|
||||
/* [Mount Stands] */
|
||||
|
||||
Mount_Hole_D = 4.36;
|
||||
Mount_X = 74.38;
|
||||
Mount_Y = 89.24;
|
||||
|
||||
BOX_WALL = 1.5;
|
||||
|
||||
/* [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;
|
||||
|
||||
zclear=2;
|
||||
module print_specs() {
|
||||
echo("ZVS Module: QS2015004");
|
||||
echo("Input Voltage: 12-48V");
|
||||
echo("Max Current: 20A");
|
||||
echo("24V no load current: 3A");
|
||||
echo("48V no load current: 6A");
|
||||
echo("Caps .33uFx6 = ");
|
||||
}
|
||||
|
||||
// PCB Board
|
||||
up(5) %difference() {
|
||||
cuboid([PCB_X,PCB_X,PCB_Z], fillet=3, edges=EDGES_Z_ALL, align=V_TOP);
|
||||
left((Mount_Y-Mount_X)/2) yspread(l=Mount_Y) xspread(l=Mount_X)
|
||||
cyl(d=Mount_Hole_D, chamfer=0, h=2*PCB_CLR, align=V_CENTER);
|
||||
}
|
||||
|
||||
// Box
|
||||
difference() {
|
||||
left(25/2) cuboid([PCB_X+30+2*BOX_WALL+.4,PCB_Y+2*BOX_WALL+.4,PCB_Z+PCB_CLR+BOX_WALL], fillet=3, edges=EDGES_Z_ALL, align=V_BOTTOM);
|
||||
pcb_mount_clearance();
|
||||
mount_positions() thread_insertM25(bl=6, bz=-6, $die=true);
|
||||
rotate([00,0,0]) left(5+6+PCB_X/2) rotate([0,90,90]) bobbin_joiners(clear=true);
|
||||
thread_insertM25(bl=5, bz=-5, $die=false);
|
||||
}
|
||||
rotate([00,0,0]) left(5+6+PCB_X/2) rotate([0,90,90]) bobbin_joiners(plug=false);
|
||||
|
||||
module mount_positions() {
|
||||
left((Mount_Y-Mount_X)/2) yspread(l=Mount_Y) xspread(l=Mount_X) children();
|
||||
}
|
||||
|
||||
|
||||
module pcb_mount_clearance() {
|
||||
// clearance
|
||||
// pcb itself
|
||||
color("yellow") up(.01) cuboid([PCB_X+.4,PCB_Y+.4,PCB_Z+.01], fillet=3, edges=EDGES_Z_ALL, align=V_BOTTOM);
|
||||
down(PCB_Z-.01) difference() {
|
||||
union() {
|
||||
cuboid([PCB_X,PCB_Y,PCB_CLR+.02], fillet=3, edges=EDGES_Z_ALL, align=V_BOTTOM);
|
||||
}
|
||||
color("green") up(.02) {
|
||||
right(PCB_X/2) cuboid([4,PCB_Y,PCB_CLR+.02], align=V_BOTTOM); // Edge Support
|
||||
left(PCB_X/2) cuboid([8,PCB_Y,PCB_CLR+.02], align=V_BOTTOM); // Edge Support
|
||||
}
|
||||
|
||||
cyl(d=Mount_Hole_D+3, chamfer=0, h=PCB_CLR, align=V_BOTTOM);
|
||||
mount_positions() cyl(d=Mount_Hole_D+3, chamfer=0, h=PCB_CLR, align=V_BOTTOM);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user