Compare commits

..

3 Commits

Author SHA1 Message Date
Matt McWilliams 4c0fa2ba41 rails end prototype 2023-08-20 13:57:00 -04:00
Matt McWilliams 83209f466f Update all submodules 2023-08-20 12:46:36 -04:00
Matt McWilliams 10c452c1b3 Work on rails 2023-08-20 12:37:50 -04:00
4 changed files with 80 additions and 22 deletions

@ -1 +1 @@
Subproject commit b499c2810117b5ca57014d5cb4219cf68b4c5c0f Subproject commit 53f4dd4a2d6dd038c1beb97f8ae721ec5905a43b

View File

@ -43,3 +43,4 @@ module end () {
color("blue") rails(); color("blue") rails();
translate([0, RAIL_LEN / 2, 0]) end(); translate([0, RAIL_LEN / 2, 0]) end();
translate([0, -RAIL_LEN / 2, 0]) rotate([0, 0, 180]) end();

View File

@ -1,24 +1,81 @@
use <2020_profile.scad> use <2020_profile.scad>
//translate([-35, 0, -25]) linear_extrude(height=175) 2020_profile(); //include <jk_rails.scad>
translate([35, 0, -25]) linear_extrude(height=175) 2020_profile(); include <./common/common.scad>
include <./common/motors.scad>
include <./common/rods.scad>
module rounded_cube (c, d) { RailSpacing = 100;
r = d / 2; ThreadedRodSpacing = 50;
scaled = [c[0] - d, c[1] - d, c[2] - d]; RailEndX = 140;
minkowski() {
cylinder(r = r, h = r, center = true); module m3_bolt_void (pos = [0, 0, 0], BoltH = 20, CapH = 3) {
cube(scaled, center = true); D = 3.25;
CapD = 6;
translate(pos) {
translate([0, 0, CapH / 2]) cylinder(r = R(CapD), h = CapH, center = true, $fn = 40);
translate([0, 0, -BoltH / 2]) cylinder(r = R(D), h = BoltH + 0.01, center = true, $fn = 40);
} }
} }
$fn = 100; module bolt_voids_2020 (pos = [0, 0, 0]) {
difference () { translate(pos) {
rounded_cube([120, 60, 40], d=10); //translate([0, -25, 0]) rotate([90, 0, 0]) m3_bolt_void(CapH = 6);
//rails translate([0, 25, 0]) rotate([-90, 0, 0]) m3_bolt_void(CapH = 6);
translate([-35, 0, 0]) cube([21, 21, 40 + 1], center = true); translate([-16, 0, 0]) rotate([0, -90, 0]) m3_bolt_void(CapH = 6, BoltH = 10);
translate([35, 0, 0]) cube([21, 21, 40 + 1], center = true); }
//threaded rods
translate([0, 0, 0])cylinder(r = 5, h = 40 + 1, center = true);
//translate([-10, 0, 0])cylinder(r = 5, h = 40 + 1, center = true);
} }
module bolt_voids_motor (pos = [0, 0, 0]) {
Corner = NEMA17BoltSpacing / 2;
translate(pos) {
translate([Corner, Corner, 0]) m3_bolt_void(CapH = 6, BoltH = 40);
translate([Corner, -Corner, 0]) m3_bolt_void(CapH = 6, BoltH = 40);
translate([-Corner, Corner, 0]) m3_bolt_void(CapH = 6, BoltH = 40);
translate([-Corner, -Corner, 0]) m3_bolt_void(CapH = 6, BoltH = 40);
}
}
module rail_end (pos = [0, 0, 0], rot = [90, 0, 0], Motors = true) {
translate(pos) rotate(rot) difference () {
difference () {
translate([0, -10, 20]) rounded_cube([RailEndX, 80, 80], d = 10, center = true, $fn = 50);
translate([0, 10, 50]) rotate([0, 90, 0]) rounded_cube([60, 80, RailEndX + 1], d = 10, center = true, $fn = 50);
}
//rails
translate([-RailSpacing / 2, 0, 5]) cube([21, 21, 40], center = true);
translate([RailSpacing / 2, 0, 5]) cube([21, 21, 40], center = true);
//rails bolts
bolt_voids_2020([-RailSpacing / 2, 0, 0]);
rotate([0, 180, 0]) bolt_voids_2020([-RailSpacing / 2, 0, 0]);
if (Motors) {
translate([ThreadedRodSpacing / 2, 0, 0]) {
cylinder(r = R(NEMA17PadD + 0.5), h = 60, center = true, $fn = 100);
bolt_voids_motor([0, 0, 16]);
}
translate([-ThreadedRodSpacing / 2, 0, 0]) {
cylinder(r = R(NEMA17PadD + 0.5), h = 60, center = true, $fn = 100);
bolt_voids_motor([0, 0, 16]);
}
} else {
translate([-ThreadedRodSpacing / 2, 0, 0]) cylinder(r = R(LinearBearingOuterDiameter + 0.5), h = 60, center = true, $fn = 100);
translate([-ThreadedRodSpacing / 2, 0, 0]) cylinder(r = R(LinearBearingOuterDiameter + 0.5), h = 60, center = true, $fn = 100);
}
//linear motion rod
translate([0, 0, 5]) cylinder(r = R(ThreadDiameter), h = 40, center = true, $fn = 50);
//mounting bolts
translate([70 / 2, 0, 40]) rotate([90, 0, 0]) cylinder(r = R(10), h = 150, center = true, $fn = 40);
translate([-70 / 2, 0, 40]) rotate([90, 0, 0]) cylinder(r = R(10), h = 150, center = true, $fn = 40);
}
}
rail_end();
//translate([-35, 0, -25]) linear_extrude(height=175) 2020_profile();
//translate([RailSpacing / 2, 0, 0]) rotate([90, 0, 0]) linear_extrude(height=175) 2020_profile();
//translate([ThreadedRodSpacing / 2, 40, 0]) rotate([90, 0, 0]) color("blue") NEMA17();
//translate([-ThreadedRodSpacing / 2, 40, 0]) rotate([90, 0, 0]) color("blue") NEMA17();

@ -1 +1 @@
Subproject commit 3c6514e0e4702f7feda0758e12975043208f4797 Subproject commit b4ea887d588a3728dfcb0fc64dc9195f278b7b1f