-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 231cdf5
Showing
24 changed files
with
56,878 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
include <configuration.scad>; | ||
|
||
// Belt parameters | ||
belt_width_clamp = 6; // width of the belt, typically 6 (mm) | ||
belt_thickness = 1.0 - 0.05; // slightly less than actual belt thickness for compression fit (mm) | ||
belt_pitch = 2.0; // tooth pitch on the belt, 2 for GT2 (mm) | ||
tooth_radius = 0.8; // belt tooth radius, 0.8 for GT2 (mm) | ||
|
||
separation = 40; | ||
thickness = 6; | ||
|
||
horn_thickness = 13; | ||
horn_x = 8; | ||
|
||
belt_width = 5; | ||
belt_x = 5.6; | ||
belt_z = 7; | ||
corner_radius = 3.5; | ||
|
||
module carriage() { | ||
// Timing belt (up and down). | ||
translate([-belt_x, 0, belt_z + belt_width/2]) % | ||
cube([1.7, 100, belt_width], center=true); | ||
translate([belt_x+1.23, 0, belt_z + belt_width/2]) % | ||
cube([2.3, 100, belt_width], center=true); | ||
difference() { | ||
union() { | ||
// Main body. | ||
translate([0, 4, thickness/2]) | ||
cube([27, 40, thickness], center=true); | ||
// Ball joint mount horns. | ||
for (x = [-1, 1]) { | ||
scale([x, 1, 1]) intersection() { | ||
translate([0, 15, horn_thickness/2]) | ||
# cube([separation, 18, horn_thickness], center=true); | ||
translate([horn_x, 16, horn_thickness/2]) rotate([0, 90, 0]) | ||
cylinder(r1=14, r2=2.5, h=separation/2-horn_x); | ||
} | ||
} | ||
|
||
// Avoid touching diagonal push rods (carbon tube). | ||
difference() { | ||
translate([10.75, 2.5, horn_thickness/2+1]) | ||
cube([5.5, 37, horn_thickness-2], center=true); | ||
|
||
translate([23, -12, 12.5]) rotate([30, 40, 30]) | ||
cube([40, 40, 20], center=true); | ||
translate([10, -10, 0]) | ||
cylinder(r=m3_wide_radius+1.5, h=100, center=true, $fn=12); | ||
|
||
} | ||
|
||
// Belt clamps | ||
for (y = [[9, -1], [-1, 1]]) { | ||
translate([2.20, y[0], horn_thickness/2+1]) | ||
color("red") hull() { | ||
translate([ corner_radius-1, -y[1] * corner_radius + y[1], 0]) cube([2, 2, horn_thickness-2], center=true); | ||
cylinder(h=horn_thickness-2, r=corner_radius, $fn=12, center=true); | ||
} | ||
} | ||
|
||
// top cube | ||
translate([2.20, 19, horn_thickness/2+1]) | ||
color("red") difference() { | ||
cube([7, 10, horn_thickness-2], center=true); | ||
translate([2.8, -3,1]) | ||
cube([1.6, 7.6, 10], center=true); | ||
translate([-1.5,-5,-1.5]) { | ||
cube([belt_thickness,10,10]); | ||
for (mult = [0:5]) { | ||
translate([1,belt_pitch*mult,0]) cylinder(r=tooth_radius, h=10); | ||
} | ||
} | ||
} | ||
|
||
// bottom cube | ||
translate([2.20, -11, horn_thickness/2+1]) | ||
color("red") difference() { | ||
cube([7, 10, horn_thickness-2], center=true); | ||
translate([-1.5,-5,-1.5]) { | ||
cube([belt_thickness,10,10]); | ||
for (mult = [0:5]) { | ||
translate([1,belt_pitch*mult,0]) cylinder(r=tooth_radius, h=10); | ||
} | ||
} } | ||
} | ||
|
||
// Screws for linear slider. | ||
for (x = [-10, 10]) { | ||
for (y = [-10, 10]) { | ||
if (!(y == -10 && x == -10)){ | ||
translate([x, y, thickness]) # | ||
cylinder(r=m3_wide_radius, h=30, center=true, $fn=12); | ||
} | ||
} | ||
} | ||
// Screws for ball joints. | ||
translate([0, 16, horn_thickness/2]) rotate([0, 90, 0]) # | ||
cylinder(r=m3_wide_radius, h=60, center=true, $fn=12); | ||
// Lock nuts for ball joints. | ||
for (x = [-1, 1]) { | ||
scale([x, 1, 1]) intersection() { | ||
translate([horn_x, 16, horn_thickness/2]) rotate([90, 0, -90]) | ||
cylinder(r1=m3_nut_radius, r2=m3_nut_radius+0.5, h=8, | ||
center=true, $fn=6); | ||
} | ||
} | ||
} | ||
} | ||
|
||
carriage(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// Increase this if your slicer or printer make holes too tight. | ||
extra_radius = 0.1; | ||
|
||
// OD = outside diameter, corner to corner. | ||
m3_nut_od = 6.1; | ||
m3_nut_radius = m3_nut_od/2 + 0.2 + extra_radius; | ||
m3_washer_radius = 3.5 + extra_radius; | ||
|
||
// Major diameter of metric 3mm thread. | ||
m3_major = 2.85; | ||
m3_radius = m3_major/2 + extra_radius; | ||
m3_wide_radius = m3_major/2 + extra_radius + 0.2; | ||
|
||
// NEMA17 stepper motors. | ||
motor_shaft_diameter = 5; | ||
motor_shaft_radius = motor_shaft_diameter/2 + extra_radius; | ||
|
||
// Frame brackets. M3x8mm screws work best with 3.6 mm brackets. | ||
thickness = 3.6; | ||
|
||
// OpenBeam or Misumi. Currently only 15x15 mm, but there is a plan | ||
// to make models more parametric and allow 20x20 mm in the future. | ||
extrusion = 15; | ||
|
||
// Placement for the NEMA17 stepper motors. | ||
motor_offset = 44; | ||
motor_length = 47; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
include <configuration.scad>; | ||
|
||
separation = 40; // Distance between ball joint mounting faces. | ||
offset = 20; // Same as DELTA_EFFECTOR_OFFSET in Marlin. | ||
mount_radius = 12.5; // Hotend mounting screws, standard would be 25mm. | ||
hotend_radius = 8; // Hole for the hotend (J-Head diameter is 16mm). | ||
push_fit_height = 4; // Length of brass threaded into printed plastic. | ||
height = 8; | ||
cone_r1 = 2.5; | ||
cone_r2 = 14; | ||
|
||
module effector() { | ||
difference() { | ||
union() { | ||
cylinder(r=offset-3, h=height, center=true, $fn=60); | ||
for (a = [60:120:359]) rotate([0, 0, a]) { | ||
rotate([0, 0, 30]) translate([offset-2, 0, 0]) | ||
cube([10, 13, height], center=true); | ||
for (s = [-1, 1]) scale([s, 1, 1]) { | ||
translate([0, offset, 0]) difference() { | ||
intersection() { | ||
cube([separation, 40, height], center=true); | ||
translate([0, -4, 0]) rotate([0, 90, 0]) | ||
cylinder(r=10, h=separation, center=true); | ||
translate([separation/2-7, 0, 0]) rotate([0, 90, 0]) | ||
cylinder(r1=cone_r2, r2=cone_r1, h=14, center=true, $fn=24); | ||
} | ||
rotate([0, 90, 0]) | ||
cylinder(r=m3_radius, h=separation+1, center=true, $fn=12); | ||
rotate([90, 0, 90]) | ||
cylinder(r=m3_nut_radius, h=separation-24, center=true, $fn=6); | ||
} | ||
} | ||
} | ||
} | ||
translate([0, 0, push_fit_height-height/2]) | ||
cylinder(r=hotend_radius, h=height, $fn=36); | ||
translate([0, 0, -6]) # import("m5_internal.stl"); | ||
for (a = [0:60:359]) rotate([0, 0, a]) { | ||
translate([0, mount_radius, 0]) | ||
cylinder(r=m3_wide_radius, h=2*height, center=true, $fn=12); | ||
} | ||
} | ||
} | ||
|
||
translate([0, 0, height/2]) effector(); |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
include <configuration.scad>; | ||
|
||
use <microswitch.scad>; | ||
|
||
thickness = 9; // 1mm thicker than linear rail. | ||
width = 15; // Same as vertical extrusion. | ||
height = 15; | ||
|
||
module endstop() { | ||
difference() { | ||
union() { | ||
cube([width, thickness, height], center=true); | ||
translate([0, 0, -height/4]) | ||
cube([width+2, thickness, height/2], center=true); | ||
translate([0, 2, 0]) | ||
cube([2.5, thickness, height], center=true); | ||
} | ||
translate([0, 0, 3]) rotate([90, 0, 0]) { | ||
cylinder(r=m3_wide_radius, h=20, center=true, $fn=12); | ||
translate([0, 0, 3.6-thickness/2]) { | ||
cylinder(r=3, h=10, $fn=24); | ||
translate([0, 5, 5]) | ||
cube([6, 10, 10], center=true); | ||
} | ||
translate([0, 0, -thickness/2]) scale([1, 1, -1]) | ||
cylinder(r1=m3_wide_radius, r2=7, h=4, $fn=24); | ||
} | ||
translate([0, -3-thickness/2, -2]) rotate([0, 180, 0]) { | ||
% microswitch(); | ||
for (x = [-9.5/2, 9.5/2]) { | ||
translate([x, 0, 0]) rotate([90, 0, 0]) | ||
cylinder(r=2.5/2, h=40, center=true, $fn=12); | ||
} | ||
} | ||
} | ||
} | ||
|
||
translate([0, 0, height/2]) endstop(); |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
include <configuration.scad>; | ||
|
||
use <vertex.scad>; | ||
use <nema17.scad>; | ||
|
||
$fn = 24; | ||
|
||
module frame_motor() { | ||
difference() { | ||
// No idler cones. | ||
vertex(3*extrusion, idler_offset=0, idler_space=100); | ||
// KOSSEL logotype. | ||
translate([20.5, -10, 0]) rotate([90, -90, 30]) | ||
scale([0.11, 0.11, 1]) import("logotype.stl"); | ||
// Motor cable paths. | ||
for (mirror = [-1, 1]) scale([mirror, 1, 1]) { | ||
translate([-35, 45, 0]) rotate([0, 0, -30]) | ||
# cube([4, 15, 15], center=true); | ||
translate([-6, 0, 0]) cylinder(r=2.5, h=40); | ||
translate([-11, 0, 0]) # cube([15, 4, 15], center=true); | ||
} | ||
translate([0, motor_offset, 0]) { | ||
// Motor shaft/pulley cutout. | ||
rotate([90, 0, 0]) cylinder(r=12, h=20, center=true, $fn=60); | ||
// NEMA 17 stepper motor mounting screws. | ||
for (x = [-1, 1]) for (z = [-1, 1]) { | ||
scale([x, 1, z]) translate([15.5, -5, 15.5]) { | ||
rotate([90, 0, 0]) cylinder(r=1.65, h=20, center=true, $fn=12); | ||
// Easier ball driver access. | ||
rotate([74, -30, 0]) # cylinder(r=1.8, h=60, $fn=12); | ||
} | ||
} | ||
} | ||
translate([0, motor_offset, 0]) rotate([90, 0, 0]) % nema17(); | ||
} | ||
} | ||
|
||
translate([0, 0, 22.5]) frame_motor(); |
Oops, something went wrong.