2023-12-02 14:24:14 -05:00
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
2023-12-05 16:04:05 -05:00
|
|
|
/* [Design] */
|
|
|
|
|
|
|
|
|
|
V_IN = 12;
|
|
|
|
|
Turns_Ratio = 85;
|
|
|
|
|
|
2023-12-02 14:24:14 -05:00
|
|
|
/* [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");
|
2023-12-05 16:04:05 -05:00
|
|
|
echo("Caps .33uFx6 = 1.90 uF");
|
|
|
|
|
|
|
|
|
|
vpk = PI * V_IN;
|
|
|
|
|
opk = vpk*Turns_Ratio;
|
|
|
|
|
oac = opk/sqrt(2);
|
|
|
|
|
echo("Vpk = ", vpk, " volts");
|
|
|
|
|
echo( "OutPk = ", opk," volts");
|
|
|
|
|
echo("RMS = ", oac, " volts");
|
2023-12-02 14:24:14 -05:00
|
|
|
}
|
2023-12-05 16:04:05 -05:00
|
|
|
//
|
|
|
|
|
print_specs();
|
2023-12-02 14:24:14 -05:00
|
|
|
// 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);
|
2023-12-05 16:04:05 -05:00
|
|
|
up(2)rotate([00,0,0]) left(15+6+PCB_X/2) rotate([0,90,90]) bobbin_joiners(clear=true);
|
2023-12-02 14:24:14 -05:00
|
|
|
}
|
2023-12-05 16:04:05 -05:00
|
|
|
up(2) rotate([00,0,0]) left(15+6+PCB_X/2) rotate([0,90,90]) bobbin_joiners(plug=false);
|
2023-12-02 14:24:14 -05:00
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|