104 lines
2.9 KiB
OpenSCAD
104 lines
2.9 KiB
OpenSCAD
// Cyclone PCB Factory: a 3D printable CNC machine for PCB manufacture
|
|
// Created by Carlosgs (http://carlosgs.es)
|
|
// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/)
|
|
|
|
use <../libs/obiscad/bcube.scad>
|
|
use <../libs/build_plate.scad>
|
|
|
|
bottom_thickness = 4;
|
|
base_width = 20;
|
|
base_length = 25;
|
|
base_screw_diameter = 5;
|
|
|
|
motor_width = 43;
|
|
motor_length = 49; // not used
|
|
motor_screw_distance = 31.3;
|
|
motor_center_diameter = 23;
|
|
|
|
motor_screw_diameter = 3.7;
|
|
motor_screw_head_diameter = 8;
|
|
|
|
bearing_diameter = 22.4;
|
|
M8_rod_diameter = 8.2;
|
|
|
|
axis_distance = 32;
|
|
|
|
wall_thickness = 5;
|
|
wall_height = 45;
|
|
wall_width = 70;
|
|
|
|
idler_width = 25;
|
|
|
|
module motor_stand_no_base(with_motor=true) {
|
|
difference() {
|
|
translate([wall_height/2,wall_width/2,wall_thickness/2])
|
|
bcube([wall_height,wall_width,wall_thickness],cr=4,cres=10);
|
|
|
|
// Position relative to motor shaft
|
|
translate([motor_width/2,motor_width/2,wall_thickness/2]) {
|
|
if(with_motor) {
|
|
// Hole for the motor shaft
|
|
translate([0,-wall_width/2,0])
|
|
cube([20,wall_width,10*wall_thickness],cr=4,cres=10,center=true);
|
|
cylinder(r=motor_center_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
|
|
|
// Screws for holding the motor
|
|
for(i=[-1,1]) for(j=[-1,1])
|
|
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,0]) {
|
|
cylinder(r=motor_screw_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
|
cylinder(r=motor_screw_head_diameter/2,h=10*wall_thickness,center=false,$fn=40);
|
|
}
|
|
} // End if with motor
|
|
|
|
// Bearing holes
|
|
rotate([0,0,15]) translate([0,axis_distance,0]) {
|
|
cylinder(r=(M8_rod_diameter*2)/2,h=10*wall_thickness,center=true,$fn=40);
|
|
cylinder(r=bearing_diameter/2,h=10*wall_thickness,center=false,$fn=60);
|
|
|
|
}
|
|
|
|
} // End of translate relative to motor shaft
|
|
} // End of difference
|
|
}
|
|
|
|
module motor_stand(with_motor=true) {
|
|
union() {
|
|
motor_stand_no_base(with_motor);
|
|
difference() {
|
|
union() {
|
|
translate([wall_height-bottom_thickness,wall_width-base_width]) {
|
|
cube([bottom_thickness,base_width,base_length]);
|
|
hull() {
|
|
cube([bottom_thickness,5,base_length]);
|
|
translate([-18,0,0])
|
|
cube([0.001,5,0.001]);
|
|
}
|
|
}
|
|
}
|
|
// --- screws for the base ---
|
|
translate([wall_height,wall_width-5,15])
|
|
rotate([0,90,0]) {
|
|
translate([-5,0,0])
|
|
cylinder(r=base_screw_diameter/2,h=100,center=true,$fn=6);
|
|
translate([5,0,0])
|
|
cylinder(r=base_screw_diameter/2,h=100,center=true,$fn=6);
|
|
}
|
|
} // End of difference
|
|
}
|
|
}
|
|
|
|
|
|
module idle_stand() {
|
|
intersection() { // Remove the motor part
|
|
motor_stand(with_motor=false);
|
|
translate([wall_height/2,wall_width/2+35,wall_thickness/2])
|
|
bcube([wall_height,wall_width,100],cr=4,cres=10);
|
|
}
|
|
}
|
|
|
|
//for display only, doesn't contribute to final object
|
|
build_plate(3,200,200);
|
|
|
|
motor_stand();
|
|
//idle_stand();
|