From 042533dc8550b5424c5f180f83999cdd06672d93 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Sun, 19 Nov 2023 16:08:37 -0500 Subject: [PATCH] Add plugs for linear bearings in rail ends. --- app/data/cfg.json | 2 +- app/package-lock.json | 2 +- app/package.json | 2 +- data/cfg.json | 2 +- package-lock.json | 4 +- package.json | 2 +- processing/mcopy/cfg.json | 2 +- scad/mcopy_rails.scad | 78 +++++++++++++++++++++++++++++++++++++-- 8 files changed, 83 insertions(+), 11 deletions(-) diff --git a/app/data/cfg.json b/app/data/cfg.json index bce4fa5..c611db8 100644 --- a/app/data/cfg.json +++ b/app/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.70", + "version": "1.8.71", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/app/package-lock.json b/app/package-lock.json index 51a3652..647a6e3 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.70", + "version": "1.8.71", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/app/package.json b/app/package.json index 32b908d..aabf19c 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.70", + "version": "1.8.71", "description": "GUI for the mcopy small gauge film optical printer platform", "main": "main.js", "scripts": { diff --git a/data/cfg.json b/data/cfg.json index e8f8b28..2bb70f7 100644 --- a/data/cfg.json +++ b/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.70", + "version": "1.8.71", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/package-lock.json b/package-lock.json index 64ba064..9fd4f92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mcopy", - "version": "1.8.70", + "version": "1.8.71", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mcopy", - "version": "1.8.70", + "version": "1.8.71", "license": "MIT", "dependencies": { "arduino": "file:app/lib/arduino", diff --git a/package.json b/package.json index cecc4ba..f1b8ba2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mcopy", - "version": "1.8.70", + "version": "1.8.71", "description": "Small gauge film optical printer platform", "main": "build.js", "directories": { diff --git a/processing/mcopy/cfg.json b/processing/mcopy/cfg.json index bce4fa5..c611db8 100644 --- a/processing/mcopy/cfg.json +++ b/processing/mcopy/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.70", + "version": "1.8.71", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/scad/mcopy_rails.scad b/scad/mcopy_rails.scad index d14fe38..56f44af 100644 --- a/scad/mcopy_rails.scad +++ b/scad/mcopy_rails.scad @@ -66,6 +66,28 @@ module bolt_voids_motor (pos = [0, 0, 0]) { } } +module bolt_nut_voids_motor (pos = [0, 0, 0]) { + Corner = NEMA17BoltSpacing / 2; + translate(pos) { + translate([Corner, Corner, 0]) { + m3_bolt_void(CapH = 30, BoltH = 40); + translate([0, 0, -20]) m3_nut(); + } + translate([Corner, -Corner, 0]) { + m3_bolt_void(CapH = 30, BoltH = 40); + translate([0, 0, -20]) m3_nut(); + } + translate([-Corner, Corner, 0]) { + m3_bolt_void(CapH = 30, BoltH = 40); + translate([0, 0, -20]) m3_nut(); + } + translate([-Corner, -Corner, 0]) { + m3_bolt_void(CapH = 30, BoltH = 40); + translate([0, 0, -20]) m3_nut(); + } + } +} + module T_nut_void (pos = [0, 0, 0], rot = [0, 0, 0]) { translate(pos) rotate(rot) { cylinder(r = R(TNutDiameter2 + 0.1), h = TNutVoid + .01, center = true, $fn = 60); @@ -599,6 +621,34 @@ module projector_orbital_brace_corner (pos = [0, 0, 0], rot = [0, 0, 0]) { } } +module rail_end_idle_roller_plug (pos = [0, 0, 0], rot = [0, 0, 0]) { + H = 13.8; + translate(pos) rotate(rot) { + difference () { + union () { + cylinder(r = R(15), h = H, center = true, $fn = 80); + translate([0, 0, -(H / 2) + (1.5 / 2)]) cylinder(r = R(20), h = 1.5, center = true, $fn = 80); + } + cylinder(r = R(10), h = H + 1, center = true, $fn = 80); + } + } +} + +module rail_end_idle_motor_plug (pos = [0, 0, 0], rot = [0, 0, 0]) { + H = 45; + translate(pos) rotate(rot) { + difference () { + union () { + cylinder(r = R(NEMA17PadD), h = H, center = true, $fn = 100); + translate([0, 0, -(H / 2) + (5 / 2)]) rounded_cube([43, 43, 5], d = 8, center = true, $fn = 40); + } + cylinder(r = R(10), h = H + 1, center = true, $fn = 80); + bolt_nut_voids_motor([0, 0, -2]); + translate([0, 0, 10.6]) linear_bearing(padD = 0.2); + } + } +} + module debug () { //translate([50 , -90 - 10, 22]) rotate([0, 90, 0]) bearing_void(); rail_end([0, 20, 0], Projector = true); @@ -681,8 +731,25 @@ module debug () { //projector_orbital_brace_corner([0, 0, -8]); } +module rail_sizing (L = 300) { + SpacingY = L - 30; + RailL = L; + difference () { + rail_end([0, SpacingY / 2, 0], Motors = false, Projector = false); + translate([0, SpacingY / 2, 25]) cube([200, 200, 50], center = true); + } + difference () { + rail_end([0, -SpacingY / 2, 0], [90, 0, 180], Projector = true); + translate([0, -SpacingY / 2, 25]) cube([200, 200, 50], center = true); + } + translate([55, RailL / 2, 0]) rotate([90, 0, 0]) linear_extrude(height=RailL) 2020_profile(); + rotate([90, 0, 0]) color("green") cylinder(r = R(ThreadDiameter), h = L, center = true, $fn = 60); + lens_sled(); + translate([25, -35+17, 0]) rotate([90, 0, 0]) color("green") cylinder(r = R(ThreadDiameter), h = L, center = true, $fn = 60); +} -PART = "projector_orbital_brace"; + +PART = "rail_end_idle_motor_plug"; if (PART == "rail_end") { rail_end(Projector = true); @@ -707,7 +774,12 @@ if (PART == "rail_end") { } else if (PART == "projector_orbital_brace") { projector_orbital_brace(rot = [180, 0, 0]); } else if (PART == "projector_orbital_brace_corner") { - projector_orbital_brace_corner(); + projector_orbital_brace_corner(); +} else if (PART == "rail_end_idle_roller_plug") { + rail_end_idle_roller_plug(); +} else if (PART == "rail_end_idle_motor_plug") { + rail_end_idle_motor_plug(); } else { - debug(); + //debug(); + rail_sizing(); } \ No newline at end of file