Improved Y axis with Yopero's suggestion.
Z carriage shows the name of the machine, using orbitron.dxf font from Write.scad. Updated templates and renders. Updated README to show changes.pull/6/head
parent
30cd3a10f4
commit
df6c2ad976
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
use <../libs/obiscad/bcube.scad>
|
use <../libs/obiscad/bcube.scad>
|
||||||
use <../libs/build_plate.scad>
|
use <../libs/build_plate.scad>
|
||||||
|
use <../libs/Write/Write.scad>
|
||||||
|
|
||||||
include <./lm8uu_holder.scad>
|
include <./lm8uu_holder.scad>
|
||||||
|
|
||||||
|
@ -37,6 +38,9 @@ Z_threaded_pos = motor_width/2+axis_distance;
|
||||||
|
|
||||||
Z_smooth_rods_sep = 55;
|
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)
|
// Derived from Spindle mount for ShapeOko by Misan (http://www.thingiverse.com/thing:26740)
|
||||||
module spindle_holder(length=50,showSpindle=true) {
|
module spindle_holder(length=50,showSpindle=true) {
|
||||||
$fn=6;
|
$fn=6;
|
||||||
|
@ -54,8 +58,16 @@ module spindle_holder(length=50,showSpindle=true) {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
cylinder(r=30,h=length,$fn=60);
|
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 ([-30,0,0]) cube([60,38,length]);
|
||||||
translate([28,-7,0]) cube([20,20,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.05]) cylinder(r=26,h=length+2,$fn=60);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,6 +18,8 @@ motor_center_diameter = 23;
|
||||||
motor_screw_diameter = 3.7;
|
motor_screw_diameter = 3.7;
|
||||||
motor_screw_head_diameter = 8;
|
motor_screw_head_diameter = 8;
|
||||||
|
|
||||||
|
motor_adjust_margin = 3;
|
||||||
|
|
||||||
bearing_diameter = 22.4;
|
bearing_diameter = 22.4;
|
||||||
M8_rod_diameter = 8.2;
|
M8_rod_diameter = 8.2;
|
||||||
|
|
||||||
|
@ -29,26 +31,48 @@ wall_width = 70;
|
||||||
|
|
||||||
idler_width = 25;
|
idler_width = 25;
|
||||||
|
|
||||||
module motor_stand_no_base(with_motor=true) {
|
wall_extraWidth_left = base_width+5;
|
||||||
difference() {
|
wall_extraWidth_right = 5;
|
||||||
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
|
totalWallWidth = wall_width+wall_extraWidth_left+wall_extraWidth_right;
|
||||||
translate([motor_width/2,motor_width/2,wall_thickness/2]) {
|
|
||||||
if(with_motor) {
|
module motorHoles() {
|
||||||
// Hole for the motor shaft
|
// Hole for the motor shaft
|
||||||
translate([0,-wall_width/2,0])
|
hull() {
|
||||||
cube([20,wall_width,10*wall_thickness],cr=4,cres=10,center=true);
|
translate([0,motor_adjust_margin/2,0])
|
||||||
cylinder(r=motor_center_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
cylinder(r=motor_center_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
||||||
|
translate([0,-motor_adjust_margin/2,0])
|
||||||
|
cylinder(r=motor_center_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
||||||
|
}
|
||||||
|
|
||||||
// Screws for holding the motor
|
// Screws for holding the motor
|
||||||
for(i=[-1,1]) for(j=[-1,1])
|
for(i=[-1,1]) for(j=[-1,1])
|
||||||
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,0]) {
|
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);
|
hull() {
|
||||||
cylinder(r=motor_screw_head_diameter/2,h=10*wall_thickness,center=false,$fn=40);
|
translate([0,motor_adjust_margin/2,0])
|
||||||
|
cylinder(r=motor_screw_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
||||||
|
translate([0,-motor_adjust_margin/2,0])
|
||||||
|
cylinder(r=motor_screw_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
||||||
|
}
|
||||||
|
hull() {
|
||||||
|
translate([0,motor_adjust_margin/2,0])
|
||||||
|
cylinder(r=motor_screw_head_diameter/2,h=10*wall_thickness,center=false,$fn=40);
|
||||||
|
translate([0,-motor_adjust_margin/2,0])
|
||||||
|
cylinder(r=motor_screw_head_diameter/2,h=10*wall_thickness,center=false,$fn=40);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} // End if with motor
|
}
|
||||||
|
|
||||||
|
module motor_stand_no_base(with_motor=true) {
|
||||||
|
difference() {
|
||||||
|
translate([wall_height/2,totalWallWidth/2-wall_extraWidth_left,wall_thickness/2])
|
||||||
|
bcube([wall_height,totalWallWidth,wall_thickness],cr=4,cres=10);
|
||||||
|
|
||||||
|
// Position relative to motor shaft
|
||||||
|
translate([motor_width/2,motor_width/2,wall_thickness/2]) {
|
||||||
|
|
||||||
|
if(with_motor)
|
||||||
|
motorHoles();
|
||||||
|
|
||||||
// Bearing holes
|
// Bearing holes
|
||||||
rotate([0,0,15]) translate([0,axis_distance,0]) {
|
rotate([0,0,15]) translate([0,axis_distance,0]) {
|
||||||
|
@ -61,29 +85,35 @@ difference() {
|
||||||
} // End of difference
|
} // End of difference
|
||||||
}
|
}
|
||||||
|
|
||||||
module motor_stand(with_motor=true) {
|
module holder(h=35,noScrews=false,base_width_inc=0) {
|
||||||
union() {
|
|
||||||
motor_stand_no_base(with_motor);
|
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
translate([wall_height-bottom_thickness,wall_width-base_width]) {
|
translate([wall_height-bottom_thickness,0]) {
|
||||||
cube([bottom_thickness,base_width,base_length]);
|
if(!noScrews) cube([bottom_thickness,base_width+base_width_inc,base_length]);
|
||||||
hull() {
|
hull() {
|
||||||
cube([bottom_thickness,5,base_length]);
|
cube([bottom_thickness,5,base_length]);
|
||||||
translate([-18,0,0])
|
translate([-h,0,0])
|
||||||
cube([0.001,5,0.001]);
|
cube([0.001,5,0.001]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// --- screws for the base ---
|
// --- screws for the base ---
|
||||||
translate([wall_height,wall_width-5,15])
|
if(!noScrews) translate([wall_height,base_width/2+2.5,15])
|
||||||
rotate([0,90,0]) {
|
rotate([0,90,0]) {
|
||||||
translate([-5,0,0])
|
translate([-5,0,0])
|
||||||
cylinder(r=base_screw_diameter/2,h=100,center=true,$fn=6);
|
cylinder(r=base_screw_diameter/2,h=100,center=true,$fn=7);
|
||||||
translate([5,0,0])
|
translate([5,0,0])
|
||||||
cylinder(r=base_screw_diameter/2,h=100,center=true,$fn=6);
|
cylinder(r=base_screw_diameter/2,h=100,center=true,$fn=7);
|
||||||
}
|
}
|
||||||
} // End of difference
|
} // End of difference
|
||||||
|
}
|
||||||
|
|
||||||
|
module motor_stand(with_motor=true) {
|
||||||
|
union() {
|
||||||
|
motor_stand_no_base(with_motor);
|
||||||
|
translate([0,wall_width]) holder(noScrews=true);
|
||||||
|
translate([0,52.4-5/2]) holder(h=15,base_width_inc=1);
|
||||||
|
translate([0,-wall_extraWidth_left+base_width]) scale([1,-1,1]) holder();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -31,7 +31,8 @@
|
||||||
t = 1; //mm letter thickness
|
t = 1; //mm letter thickness
|
||||||
space =1; //extra space between characters in (character widths)
|
space =1; //extra space between characters in (character widths)
|
||||||
rotate=0; // text rotation (clockwise)
|
rotate=0; // text rotation (clockwise)
|
||||||
font = "../libs/Write/Letters.dxf"; //default for aditional fonts
|
font = "Letters.dxf"; //default for aditional fonts
|
||||||
|
fontPath = "../libs/Write/"; // CGS MOD: Path for the DXF font files
|
||||||
|
|
||||||
|
|
||||||
// write cube defaults
|
// write cube defaults
|
||||||
|
@ -300,7 +301,7 @@ rotate(rotate,[0,0,-1]){
|
||||||
scale([.125*h,.125*h,t]){
|
scale([.125*h,.125*h,t]){
|
||||||
translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
|
translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
|
||||||
linear_extrude(height=1,convexity=10,center=true){
|
linear_extrude(height=1,convexity=10,center=true){
|
||||||
import(file = font,layer=str(word[r],"_"));
|
import(file = str(fontPath,font) ,layer=str(word[r],"_"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -309,7 +310,7 @@ rotate(rotate,[0,0,-1]){
|
||||||
scale([.125*h,.125*h,t]){
|
scale([.125*h,.125*h,t]){
|
||||||
translate([r*5.5*space,0,0])
|
translate([r*5.5*space,0,0])
|
||||||
linear_extrude(height=1,convexity=10,center=true){
|
linear_extrude(height=1,convexity=10,center=true){
|
||||||
import(file = font,layer=str(word[r],"_"));
|
import(file = str(fontPath,font) ,layer=str(word[r],"_"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -321,7 +322,7 @@ rotate(rotate,[0,0,-1]){
|
||||||
scale([.125*h,.125*h,t]){
|
scale([.125*h,.125*h,t]){
|
||||||
translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
|
translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
|
||||||
linear_extrude(height=1,convexity=10,center=true){
|
linear_extrude(height=1,convexity=10,center=true){
|
||||||
import(file = font,layer=str(word[r]));
|
import(file = str(fontPath,font) ,layer=str(word[r]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -330,7 +331,7 @@ rotate(rotate,[0,0,-1]){
|
||||||
scale([.125*h,.125*h,t]){
|
scale([.125*h,.125*h,t]){
|
||||||
translate([r*5.5*space,0,0])
|
translate([r*5.5*space,0,0])
|
||||||
linear_extrude(height=1,convexity=10,center=true){
|
linear_extrude(height=1,convexity=10,center=true){
|
||||||
import(file = font,layer=str(word[r]));
|
import(file = str(fontPath,font) ,layer=str(word[r]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
17
README.md
17
README.md
|
@ -1,4 +1,4 @@
|
||||||
Cyclone-PCB-Factory
|
Cyclone-PCB-Factory v0.9.6
|
||||||
===================
|
===================
|
||||||
|
|
||||||
The first 3D-printable (Rep-Rap alike) CNC machine, intended for PCB manufacture.
|
The first 3D-printable (Rep-Rap alike) CNC machine, intended for PCB manufacture.
|
||||||
|
@ -9,8 +9,13 @@ This hardware/software is provided “as is," and you use the hardware/software
|
||||||
|
|
||||||
News:
|
News:
|
||||||
--
|
--
|
||||||
|
**Hardware:**
|
||||||
|
* v0.9.6 has a robust Y axis motor stand (improvement suggested and tested by Yopero), and the Z carriage now shows the name of the machine (how cool is that? :P)
|
||||||
|
**Software:**
|
||||||
* First Z probing results are promising, read: https://plus.google.com/u/0/113437723819360223498/posts/9VCHqqnirj6 and https://plus.google.com/u/0/113437723819360223498/posts/89W2cv1fgQW
|
* First Z probing results are promising, read: https://plus.google.com/u/0/113437723819360223498/posts/9VCHqqnirj6 and https://plus.google.com/u/0/113437723819360223498/posts/89W2cv1fgQW
|
||||||
* Added the python probing script (v0.1) and Octave/Matlab visualizer
|
* Added the python probing script (v0.1) and Octave/Matlab visualizer
|
||||||
|
**Firmware:**
|
||||||
|
* No news, it is Marlin with support for G30 probing command
|
||||||
|
|
||||||
Videos:
|
Videos:
|
||||||
--
|
--
|
||||||
|
@ -64,6 +69,16 @@ License: CC-BY-SA
|
||||||
--
|
--
|
||||||
Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/).
|
Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/).
|
||||||
|
|
||||||
|
Derived/uses:
|
||||||
|
--
|
||||||
|
- "Linear actuator concept for CNC machines" by Carlosgs (http://www.thingiverse.com/thing:45103)
|
||||||
|
- "Parametric openscad beveled cube" by Obijuan (http://www.thingiverse.com/thing:29842)
|
||||||
|
- "Minimal footprint friction-fit LM8UU holder" by thantik (http://www.thingiverse.com/thing:23041)
|
||||||
|
- "Spindle mount for ShapeOko" by Misan (http://www.thingiverse.com/thing:26740)
|
||||||
|
- "Carro Z para Cyclone CNC mill intended for PCB" by Quim (http://www.thingiverse.com/thing:80718)
|
||||||
|
- Write.scad (and DXF fonts) by HarlanDMii (http://www.thingiverse.com/thing:16193)
|
||||||
|
- "PCB Machining Vise" by Forgetful_Guy (http://www.thingiverse.com/thing:63578)
|
||||||
|
|
||||||
Special thanks:
|
Special thanks:
|
||||||
--
|
--
|
||||||
- Z axis concepts by **Quim Borras** and the spindle motor holder by **Misan** were really useful!! Also, **Diego Viejo**'s machine was of great inspiration for the Z axis (https://plus.google.com/u/0/photos/113930344830086538817/albums/5868944432651911713?authkey=CLDJgdehlN773gE) **Thank you all!!**
|
- Z axis concepts by **Quim Borras** and the spindle motor holder by **Misan** were really useful!! Also, **Diego Viejo**'s machine was of great inspiration for the Z axis (https://plus.google.com/u/0/photos/113930344830086538817/albums/5868944432651911713?authkey=CLDJgdehlN773gE) **Thank you all!!**
|
||||||
|
|
Loading…
Reference in New Issue