First TestBed

Working prototype. Still needs full case, fan and current limiter.
This commit is contained in:
2023-12-02 14:24:14 -05:00
parent ad72818ad7
commit 846efa74da
5 changed files with 302 additions and 28 deletions

View File

@@ -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();

View File

@@ -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
View 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
View 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
View 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);
}
}