Added improvements by Harry Binnema: better gears and symmetric Z carriage
parent
fd7486901e
commit
8d8c314707
Binary file not shown.
|
@ -14,9 +14,6 @@
|
|||
*
|
||||
* Copyright (C) 2011 Guy 'DeuxVis' P.
|
||||
*
|
||||
* August 2013 added 2 extra setscrews to ensure centered usage.
|
||||
* by Harry Binnema.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
|
@ -91,10 +88,7 @@ union() difference() {
|
|||
translate( [0, 0, 12] ) mirror( [0, 0, 1] ) difference() {
|
||||
//shaft
|
||||
cylinder( r=9, h=15, $fn=40 );
|
||||
//adapted to include 3 captive nuts for symmetrical positioning
|
||||
//adpted bij HJ Binnema on August 26 2013.
|
||||
for (i= [0:2]){
|
||||
rotate([0,0,i*120]){
|
||||
|
||||
//captive nut and grub holes
|
||||
translate( [0, 20, 3.5] ) rotate( [90, 0, 0] ) union() {
|
||||
//enterance
|
||||
|
@ -104,7 +98,7 @@ union() difference() {
|
|||
cylinder( r=6/2+0.5, h=2.6, $fn=6 );
|
||||
//grub hole
|
||||
translate( [0, 0, 9] ) cylinder( r=3.2/2, h=10, $fn=6 );
|
||||
}}}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,20 +1,13 @@
|
|||
// 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/)
|
||||
/*
|
||||
* August 2013 changes to design top-part mounting screw at same side as bottom-part.
|
||||
* also started introduced 2nd spindle diameter for a-symmetrical spindles. this is not working yet.
|
||||
* by Harry Binnema.
|
||||
*/
|
||||
|
||||
use <../libs/obiscad/bcube.scad>
|
||||
use <../libs/build_plate.scad>
|
||||
use <../libs/Write/Write.scad>
|
||||
|
||||
spindle_motor_diam_top = 26*2;
|
||||
spindle_motor_diam = 26*2;
|
||||
spindle_holder_thickness = 8;
|
||||
spindle_holder_distance = 46;
|
||||
spindle_holder_thickness = 7;
|
||||
|
||||
bottom_thickness = 4;
|
||||
base_width = 20;
|
||||
|
@ -36,7 +29,7 @@ M8_rod_diameter = 8.2;
|
|||
|
||||
axis_distance = 21;
|
||||
|
||||
wall_thickness = 9;
|
||||
wall_thickness = 8;
|
||||
wall_height = motor_width;
|
||||
wall_width = 54;
|
||||
|
||||
|
@ -65,27 +58,21 @@ module dummySpindle() {
|
|||
}
|
||||
|
||||
// Derived from Spindle mount for ShapeOko by Misan (http://www.thingiverse.com/thing:26740)
|
||||
module spindle_holder_holes(length,spindiam, basediam,top_part) {
|
||||
module spindle_holder_holes(length=50,showSpindle=true) {
|
||||
$fn=6;
|
||||
|
||||
translate([20,8,-0.05]) cylinder(r=basediam/2,h=length+2,$fn=60);
|
||||
translate([-20,8,-0.05]) cylinder(r=basediam/2,h=length+2,$fn=60);
|
||||
if (top_part){
|
||||
translate([0,38,0]) rotate([0,0,0]) {
|
||||
translate([0,0,-0.05]) cylinder(r=spindiam/2,h=length+2,$fn=60);
|
||||
translate([0,-3,-0.01]) cube([90,3,length+2]);
|
||||
translate ([spindiam/2+15,15,length/2]) rotate([90,0,0]) cylinder(r=2,h=30);
|
||||
translate ([spindiam/2+15,-10.5,length/2]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
translate([20,8,-0.05]) cylinder(r=base_screw_diameter/2,h=length+2,$fn=60);
|
||||
translate([-20,8,-0.05]) cylinder(r=base_screw_diameter/2,h=length+2,$fn=60);
|
||||
|
||||
translate([0,38,0]) rotate([0,0,180]) {
|
||||
translate([0,0,-0.05]) cylinder(r=spindiam/2,h=length+2,$fn=60);
|
||||
|
||||
translate([0,0,-0.05]) cylinder(r=spindle_motor_diam/2,h=length+2,$fn=60);
|
||||
|
||||
translate([0,0,-0.01]) cube([90,3,length+2]);
|
||||
translate ([spindiam/2+15,20,length/2]) rotate([90,0,0]) cylinder(r=2,h=30);
|
||||
translate ([spindiam/2+15,15,length/2]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
||||
}
|
||||
|
||||
translate ([36,20,length/2]) rotate([90,0,0]) cylinder(r=2,h=30);
|
||||
translate ([36,14,length/2]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -174,35 +161,28 @@ module Z_solid_body(top_part=true) {
|
|||
cylinder(r=3+LM8UU_dia/2,h=wall_thickness,$fn=50);
|
||||
}
|
||||
|
||||
// For the claw of the spindle holder
|
||||
if(top_part){
|
||||
// For the screw of the spindle holder
|
||||
translate([wall_height/2,wall_width-4,0])
|
||||
translate([0,38,0]) {
|
||||
rotate([0,0,0]) {
|
||||
translate([spindle_motor_diam/2,-12.5,0]) cube([25,20,wall_thickness]);
|
||||
rotate([0,0,180]) {
|
||||
translate([28,-7,0]) cube([15,20,wall_thickness]);
|
||||
|
||||
// Write text in the front
|
||||
color([0.5,0.5,0.5])
|
||||
rotate([0,0,180]) scale([-1,1,-textHscale])
|
||||
if(top_part)
|
||||
scale([-1,1,-textHscale])
|
||||
writecylinder("CYCLONE",[0,0,-wall_thickness/(2*textHscale)],spindle_motor_diam/2+spindle_holder_thickness,0,font="orbitron.dxf",space=1.1,h=wall_thickness,t=textThickness,center=true,ccw=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
translate([wall_height/2,wall_width-4,0])
|
||||
translate([0,38,0]) {
|
||||
|
||||
rotate([0,0,180]) {
|
||||
translate([spindle_motor_diam/2,-7,0]) cube([25,20,wall_thickness]);
|
||||
color([0.2,0.2,0.5])
|
||||
else
|
||||
scale([1,1,textHscale])
|
||||
writecylinder("PCB Factory",[0,0,wall_thickness/(2*textHscale)+1],spindle_motor_diam/2+spindle_holder_thickness,0,font="orbitron.dxf",space=1.1,h=wall_thickness-2,t=textThickness,center=true,ccw=true);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//for display only, doesn't contribute to final object
|
||||
//build_plate(3,200,200);
|
||||
build_plate(3,200,200);
|
||||
|
||||
module Z_carriage(showSpindle=false,top_part=true) {
|
||||
|
||||
|
@ -212,7 +192,7 @@ module Z_carriage(showSpindle=false,top_part=true) {
|
|||
Z_solid_body(top_part);
|
||||
if(top_part) motor_stand_holes_Z();
|
||||
translate([wall_height/2,wall_width-4,0])
|
||||
spindle_holder_holes(wall_thickness,spindle_motor_diam,base_screw_diameter,top_part);
|
||||
spindle_holder_holes(wall_thickness,showSpindle);
|
||||
translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,0])
|
||||
linearBearingHolderZ(wall_thickness);
|
||||
translate([wall_height/2+Z_smooth_rods_sep/2,Z_threaded_pos,0])
|
||||
|
@ -238,14 +218,14 @@ module Z_carriage(showSpindle=false,top_part=true) {
|
|||
|
||||
module Z_carriage_assembled() {
|
||||
Z_carriage(showSpindle=true,top_part=false);
|
||||
translate([0,0,3+spindle_holder_distance]) rotate([180,0,0]) Z_carriage(showSpindle=false,top_part=true);
|
||||
translate([0,0,3+23*2]) rotate([180,0,0]) Z_carriage(showSpindle=false,top_part=true);
|
||||
}
|
||||
|
||||
//Z_carriage(top_part=true);
|
||||
//Z_carriage(top_part=false);
|
||||
Z_carriage(top_part=false);
|
||||
|
||||
|
||||
Z_carriage_assembled();
|
||||
//Z_carriage_assembled();
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,143 @@
|
|||
// 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>
|
||||
use <../libs/Write/Write.scad>
|
||||
|
||||
include <./lm8uu_holder.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 = 21;
|
||||
|
||||
wall_thickness = 5;
|
||||
wall_height = motor_width;
|
||||
wall_width = 54;
|
||||
|
||||
idler_width = 25;
|
||||
|
||||
lbearing_holder_length = 23*2;
|
||||
|
||||
Z_threaded_pos = motor_width/2+axis_distance;
|
||||
|
||||
Z_smooth_rods_sep = 55;
|
||||
|
||||
textHscale = 0.8;
|
||||
textThickness = 1.5;
|
||||
|
||||
// Derived from Spindle mount for ShapeOko by Misan (http://www.thingiverse.com/thing:26740)
|
||||
module spindle_holder(length=50,showSpindle=true) {
|
||||
$fn=6;
|
||||
translate([0,38,0]) rotate([0,0,180]) {
|
||||
|
||||
if(showSpindle) scale([1,1,-1]) translate([0,0,-length]) {
|
||||
translate([0,0,85]) color([0.95,0.95,0.95]) cylinder(r=26,h=30,$fn=60);
|
||||
translate([0,0,80]) color([0.95,0.95,0.95]) cylinder(r=10/2,h=5,$fn=60);
|
||||
translate([0,0,-10]) color([0.6,0.6,0.6]) cylinder(r=26,h=90,$fn=60);
|
||||
translate([0,0,-40]) color([0.9,0.9,0.9]) cylinder(r=15/2,h=40,$fn=60);
|
||||
translate([0,0,-50]) color([0.4,0.4,0.4]) cylinder(r=20/2,h=10,$fn=60);
|
||||
translate([0,0,-50-20]) color([0.9,0.9,0.9]) cylinder(r1=1/2,r2=3/2,h=20,$fn=60);
|
||||
}
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
cylinder(r=30,h=length,$fn=60);
|
||||
|
||||
// Write text in the front
|
||||
color([0.5,0.5,0.5]) scale([-1,1,-textHscale]) writecylinder("CYCLONE",[0,0,-length/(3*textHscale)],30,0,font="orbitron.dxf",space=1.1,h=12,t=textThickness,center=true,ccw=true);
|
||||
translate ([-30,0,0]) cube([60,38,length]);
|
||||
translate([28,-7,0]) cube([20,20,length]);
|
||||
|
||||
color([0.5,0.5,0.5]) scale([-1,1,-textHscale]) writecylinder("PCB Factory",[0,0,-length/(1.5*textHscale)],30,0,font="orbitron.dxf",space=1.1,h=14/2,t=textThickness,center=true,ccw=true);
|
||||
translate ([-30,0,0]) cube([60,38,length]);
|
||||
translate([28,-7,0]) cube([20,20,length]);
|
||||
|
||||
}
|
||||
|
||||
translate([0,0,-0.05]) cylinder(r=26,h=length+2,$fn=60);
|
||||
|
||||
translate([0,0,-0.01]) cube([90,3,length+2]);
|
||||
|
||||
|
||||
translate ([40,20,3*length/4]) rotate([90,0,0]) cylinder(r=2,h=30);
|
||||
translate ([40,20,length/4]) rotate([90,0,0]) cylinder(r=2,h=30);
|
||||
|
||||
translate ([40,14,3*length/4]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
||||
translate ([40,14,length/4]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
||||
|
||||
difference() {
|
||||
translate ([-30+15,0,-0.1]) cube([30,38.1,30]);
|
||||
cylinder(r=26+1,h=length,$fn=60);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module motor_stand_no_base_Z(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,0]) 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_Z(with_motor=true) {
|
||||
union() {
|
||||
motor_stand_no_base_Z(with_motor);
|
||||
}
|
||||
}
|
||||
|
||||
//for display only, doesn't contribute to final object
|
||||
build_plate(3,200,200);
|
||||
|
||||
module Z_carriage(showSpindle=false) {
|
||||
rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0]) {
|
||||
motor_stand_Z();
|
||||
translate([wall_height/2,wall_width-4,0]) spindle_holder(lbearing_holder_length,showSpindle);
|
||||
translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,lbearing_holder_length/2]) rotate([-90,0,0]) lm8uu_bearing_holder_XZ(lbearing_holder_length);
|
||||
translate([wall_height/2+Z_smooth_rods_sep/2,Z_threaded_pos,lbearing_holder_length/2]) rotate([-90,0,0]) lm8uu_bearing_holder_XZ(lbearing_holder_length);
|
||||
}
|
||||
}
|
||||
|
||||
Z_carriage(showSpindle=false);
|
|
@ -12,10 +12,7 @@
|
|||
* derived from http://www.thingiverse.com/thing:3104
|
||||
* (thanks GilesBathgate) which is under GPL CC license.
|
||||
*
|
||||
* August 2013 added 2 extra setscrews to ensure centered usage.
|
||||
* by Harry Binnema.
|
||||
*
|
||||
* Copyright (C) 2011 Guy 'DeuxVis' P.
|
||||
* Copyright (C) 2011 Guy 'DeuxVis' P.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -37,10 +34,8 @@ include <MCAD/teardrop.scad>
|
|||
include <MCAD/involute_gears.scad>
|
||||
|
||||
motor_shaft_diameter=5.4;
|
||||
pos=15.4; //position hole for grubnut
|
||||
|
||||
nholes = 7;
|
||||
shaft_diam=10;
|
||||
shaft_height=7;
|
||||
|
||||
/* Herringbone gear module, adapted from MCAD/involute_gears */
|
||||
module herringbone_gear( teeth=12, circles=0, shaft=5 ) {
|
||||
|
@ -89,25 +84,20 @@ rotate([180,0,0]) union() difference() {
|
|||
|
||||
translate( [0, 0, 12] ) mirror( [0, 0, 1] ) difference() {
|
||||
//shaft
|
||||
cylinder( r=shaft_diam, h=shaft_height, $fn=40 );
|
||||
cylinder( r=9, h=7, $fn=40 );
|
||||
|
||||
//captive nut and grub holes
|
||||
for (i=[0:2]){ //3 symmetric grubscrews
|
||||
|
||||
rotate([0,0,i*120]){
|
||||
translate( [0, 20, 3.5] ) rotate( [90, 0, 0] ) union() {
|
||||
//entrance for nut
|
||||
translate( [0, -4.4, pos] ) cube( [5.9, 5.8, 2.45], center=true );
|
||||
//nut hole
|
||||
translate( [0, 0, pos-1.2] ) rotate( [0, 0, 30] )
|
||||
cylinder( r=6/2+0.2, h=2.6, $fn=6 );
|
||||
//grub screw hole
|
||||
//enterance
|
||||
translate( [0, -3, 14.5] ) cube( [6, 6, 2.6], center=true );
|
||||
//nut
|
||||
translate( [0, 0, 13.3] ) rotate( [0, 0, 30] )
|
||||
cylinder( r=6/2+0.5, h=2.6, $fn=6 );
|
||||
//grub hole
|
||||
translate( [0, 0, 9] ) cylinder( r=1.5, h=10, $fn=20 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//shaft hole
|
||||
translate( [0, 0, -6] ) cylinder( r=motor_shaft_diameter/2, h=20, $fn=30 );
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -52,14 +52,6 @@ License
|
|||
Authors
|
||||
--
|
||||
_Check Hardware, Software and Firmware sections for details regarding authorship_
|
||||
**_Hardware_**
|
||||
- **Carlos García Saura (Carlosgs <http://carlosgs.es>)** (original design)
|
||||
- **Daniel Garrido (yOPERO <http://yopero-tech.blogspot.com.es/>)** (hardware improvements)
|
||||
**_Software_**
|
||||
- **Carlos García Saura (Carlosgs <http://carlosgs.es>)** (original python scripts)
|
||||
- _GUI work in progress by various members of the mail-list_
|
||||
**_Electronics, firmware_**
|
||||
- _Work in progress by various members of the mail-list_
|
||||
|
||||
Render (v0.9.7)
|
||||
--
|
||||
|
|
Loading…
Reference in New Issue