First TestBed
Working prototype. Still needs full case, fan and current limiter.
This commit is contained in:
74
bobbin.scad
74
bobbin.scad
@@ -2,6 +2,8 @@
|
|||||||
include <BOSL/constants.scad>
|
include <BOSL/constants.scad>
|
||||||
use <BOSL/transforms.scad>
|
use <BOSL/transforms.scad>
|
||||||
use <BOSL/joiners.scad>
|
use <BOSL/joiners.scad>
|
||||||
|
use <./core_uy1658-60.scad>
|
||||||
|
use <./legs.scad>
|
||||||
|
|
||||||
/* [Options] */
|
/* [Options] */
|
||||||
|
|
||||||
@@ -10,6 +12,8 @@ LegDiameter=16;
|
|||||||
BoltDiameter=7.06;
|
BoltDiameter=7.06;
|
||||||
CoreGap=0;
|
CoreGap=0;
|
||||||
NumberCoils=10;
|
NumberCoils=10;
|
||||||
|
YokeHeight = 12.14;
|
||||||
|
YokeLen=28.00;
|
||||||
|
|
||||||
/* [Render Options] */
|
/* [Render Options] */
|
||||||
render_fs=.1;
|
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;
|
bl=2*(ll-lb) + tg;
|
||||||
inner=ld+2*lc;
|
inner=ld+2*lc;
|
||||||
outer=inner+2;
|
outer=inner+2;
|
||||||
@@ -50,37 +73,34 @@ module bobbin(ld=LegDiameter, ll=LegLength, lb=12.14, tg=CoreGap, lc=.15, t=.4,
|
|||||||
conThick = 12;
|
conThick = 12;
|
||||||
conWidth = 15;
|
conWidth = 15;
|
||||||
pinLen = 2* conThick + bl;
|
pinLen = 2* conThick + bl;
|
||||||
difference() {
|
orient_and_align([sd,sd,bl], orient, align, orig_orient=ORIENT_X) {
|
||||||
union() {
|
difference() {
|
||||||
cylinder(d=outer,h=bl, center=true);
|
union() {
|
||||||
zspread(n=sn,l=bl-st) {
|
cylinder(d=outer,h=bl, center=true);
|
||||||
cylinder(d=sd,h=st,center=true);
|
zspread(n=sn,l=bl-st) {
|
||||||
left(sd/4)cube([sd/2,sd,st], center=true);
|
cylinder(d=sd,h=st,center=true);
|
||||||
|
left(sd/4)cube([sd/2,sd,st], center=true);
|
||||||
|
}
|
||||||
|
// connector
|
||||||
|
left(inner/2+5) bobbin_joiners();
|
||||||
}
|
}
|
||||||
// connector
|
cylinder(d=inner,h=bl+2*conThick+2,center=true);
|
||||||
left(inner/2+(conNeck+conHead)/2) zflip_copy()
|
// Wire Channels
|
||||||
down(conThick/2)
|
yspread(n=2, l=5+sd/2 )
|
||||||
up((pinLen)/2) {
|
left(sd/2) cylinder(d=2,h=bl+2,center=true);
|
||||||
xflip() half_joiner(h=conWidth, w=conThick,l=conThick/2,orient=ORIENT_X_90);
|
}
|
||||||
}
|
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);
|
||||||
}
|
}
|
||||||
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_ID = ", outer);
|
||||||
echo("Coil_len = ", bl-sn*st);
|
echo("Coil_len = ", bl-sn*st);
|
||||||
}
|
}
|
||||||
|
|
||||||
rotate([0,0,0]) {
|
legx = (YokeLen + LegDiameter)/2;
|
||||||
left(20)bobbin(sn=2, sd=26);
|
right(legx) bobbin(sn=2, sd=26, orient=ORIENT_XNEG);
|
||||||
right(20) bobbin();
|
left(legx) bobbin();
|
||||||
}
|
%core(gap=0);
|
||||||
|
//left(20+20) rotate([90,0,0]) snaps();
|
||||||
|
|
||||||
//core_uy1658();
|
//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");
|
echo("Leg Cross Section Area: ", leg_a1-leg_a2, "mm^2");
|
||||||
yoke_a = LegDiameter * YokeHeight;
|
yoke_a = LegDiameter * YokeHeight;
|
||||||
echo("Yoke A: ", yoke_a);
|
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) {
|
module core_leg(d=LegDiameter, l=LegLength, bd=BoltDiameter) {
|
||||||
difference() {
|
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