Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Grav-zz-ity committed Apr 28, 2014
0 parents commit 231cdf5
Show file tree
Hide file tree
Showing 24 changed files with 56,878 additions and 0 deletions.
8,577 changes: 8,577 additions & 0 deletions Orbitron_Medium.scad

Large diffs are not rendered by default.

111 changes: 111 additions & 0 deletions carriage-with-belt.scad
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();
27 changes: 27 additions & 0 deletions configuration.scad
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;
46 changes: 46 additions & 0 deletions effector.scad
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 added effector.stl
Binary file not shown.
38 changes: 38 additions & 0 deletions endstop.scad
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 added endstop.stl
Binary file not shown.
38 changes: 38 additions & 0 deletions frame_motor.scad
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();
Loading

0 comments on commit 231cdf5

Please sign in to comment.