From a5df1650b959c97d29b8962d2d96292e9d7f2fe3 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Sat, 23 Dec 2023 23:08:59 -0500 Subject: [PATCH] Move nuts to bottom of camera sled and bolts can drop in from the top (easier assembly, bolts can be glued in place or held in more easily). Create camera sled bolex plate and modify the bolex standoff to accomodate it. WIP. --- 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 | 95 ++++++++++++++++++++++++++++++--------- 8 files changed, 83 insertions(+), 28 deletions(-) diff --git a/app/data/cfg.json b/app/data/cfg.json index ecfe492..03d77cd 100644 --- a/app/data/cfg.json +++ b/app/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.83", + "version": "1.8.84", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/app/package-lock.json b/app/package-lock.json index 7f69a45..4daadf9 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.83", + "version": "1.8.84", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/app/package.json b/app/package.json index 0ae36b2..6da4fad 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.83", + "version": "1.8.84", "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 fd92be7..f083245 100644 --- a/data/cfg.json +++ b/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.83", + "version": "1.8.84", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/package-lock.json b/package-lock.json index adc6196..e7179e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mcopy", - "version": "1.8.83", + "version": "1.8.84", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mcopy", - "version": "1.8.83", + "version": "1.8.84", "license": "MIT", "dependencies": { "arduino": "file:app/lib/arduino", diff --git a/package.json b/package.json index 253d60a..882d954 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mcopy", - "version": "1.8.83", + "version": "1.8.84", "description": "Small gauge film optical printer platform", "main": "build.js", "directories": { diff --git a/processing/mcopy/cfg.json b/processing/mcopy/cfg.json index ecfe492..03d77cd 100644 --- a/processing/mcopy/cfg.json +++ b/processing/mcopy/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.83", + "version": "1.8.84", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/scad/mcopy_rails.scad b/scad/mcopy_rails.scad index 728f202..9e0230c 100644 --- a/scad/mcopy_rails.scad +++ b/scad/mcopy_rails.scad @@ -25,6 +25,14 @@ CameraBearingM5Spacing = 98; CameraBoltX = 75; CameraBoltY = 80; +CameraSledBolexZ = 33; +CameraSledBolexX = 100; +CameraSledBolexY = 110; + +CameraSledBolexPlateX = 60; +CameraSledBolexPlateY = 90; +CameraSledBolexPlateZ = 15; + LensBearingsSpacing = 28; LensBearingM5Spacing = 62; @@ -268,6 +276,13 @@ module sled_m5_bolt_nut_void (pos = [0, 0, 0], rot = [0, 0, 0], Angle = 360/12, } } +module camera_sled_m5_bolt_nut_void (pos = [0, 0, 0], rot = [0, 0, 0], Angle = 360/12, BoltH = 40, HexH = 5) { + translate(pos) rotate(rot) { + translate([0, 0, -(BoltH / 2) + 0.1]) cylinder(r = R(5.2), h = BoltH, center = true, $fn = 40); + translate([0, 0, (HexH / 2) - 0.1]) rotate([0, 0, Angle]) hex(9.2, HexH); + } +} + module m5_bolt_void (pos = [0, 0, 0], rot = [0, 0, 0], BoltH = 20, CapH = 20) { $fn = 50; translate(pos) rotate(rot) { @@ -459,10 +474,10 @@ module camera_sled (pos = [0, 0, 0], rot = [90, 0, 0]) { sled_m5_bolt_nut_void([(-RailEndX / 2) + (40 / 2), 0, -BearingM5Spacing / 2], [0, -90, 0]); //bolts to mount top pieces - m5_bolt_void([BoltX / 2, BoltZ, BoltY / 2], [90, 0, 0], BoltH = 25, CapH = 100); - m5_bolt_void([-BoltX / 2, BoltZ, BoltY / 2], [90, 0, 0], BoltH = 25, CapH = 100); - m5_bolt_void([BoltX / 2, BoltZ, -BoltY / 2], [90, 0, 0], BoltH = 25, CapH = 100); - m5_bolt_void([-BoltX / 2, BoltZ, -BoltY / 2], [90, 0, 0], BoltH = 25, CapH = 100); + camera_sled_m5_bolt_nut_void([BoltX / 2, BoltZ, BoltY / 2], [90, 0, 0], BoltH = 25, HexH = 100); + camera_sled_m5_bolt_nut_void([-BoltX / 2, BoltZ, BoltY / 2], [90, 0, 0], BoltH = 25, HexH = 100); + camera_sled_m5_bolt_nut_void([BoltX / 2, BoltZ, -BoltY / 2], [90, 0, 0], BoltH = 25, HexH = 100); + camera_sled_m5_bolt_nut_void([-BoltX / 2, BoltZ, -BoltY / 2], [90, 0, 0], BoltH = 25, HexH = 100); } } } @@ -500,31 +515,63 @@ module side_camera_sled_bearing_plate (pos = [0, 0, 0], rot = [0, 0, 0]) { } module camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) { - Z = 33; - X = 100; - Y = 110; - CameraBolts = ["3/8", "1/4", "3/8"]; - CameraBoltsY = [ -5.2, -27.35, -55.8 ]; - CameraBoltsX = [0, 0, -6.8 ]; + Z = CameraSledBolexZ; + X = CameraSledBolexX; + Y = CameraSledBolexY; + PlateY = 20; translate(pos) rotate(rot) { difference () { rounded_cube([X, Y, Z], d = 10, center = true, $fn = 40); translate([0, 0, -20]) rounded_cube([CameraBoltX - 10, CameraBoltY - 10, Z], d = 10, center = true, $fn = 40); - sled_m5_bolt_nut_void([CameraBoltX / 2, CameraBoltY / 2, 10], BoltH = Z * 2, HexH = Z); - sled_m5_bolt_nut_void([-CameraBoltX / 2, CameraBoltY / 2, 10], BoltH = Z * 2, HexH = Z); - sled_m5_bolt_nut_void([CameraBoltX / 2, -CameraBoltY / 2, 10], BoltH = Z * 2, HexH = Z); - sled_m5_bolt_nut_void([-CameraBoltX / 2, -CameraBoltY / 2, 10], BoltH = Z * 2, HexH = Z); + m5_bolt_void([CameraBoltX / 2, CameraBoltY / 2, -10], BoltH = Z * 2, CapH = Z); + m5_bolt_void([-CameraBoltX / 2, CameraBoltY / 2, 10], BoltH = Z * 2, CapH = Z); + m5_bolt_void([CameraBoltX / 2, -CameraBoltY / 2, 10], BoltH = Z * 2, CapH = Z); + m5_bolt_void([-CameraBoltX / 2, -CameraBoltY / 2, 10], BoltH = Z * 2, CapH = Z); //film plane translate([X / 2, CameraBoltY / 2, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Z + 1], center = true); translate([-X / 2, CameraBoltY / 2, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Z + 1], center = true); - + + //void for plate + camera_sled_bolex_plate_blank([0, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1); + } + } +} + +module camera_sled_bolex_plate_blank (pos = [0, 0, 0], rot = [0, 0, 0], PadX = 0, PadY = 0, PadZ = 0) { + X = CameraSledBolexPlateX + PadX; + Y = CameraSledBolexPlateY + PadY; + Z = CameraSledBolexPlateZ + PadZ; + BevelZ = 5; + translate(pos) rotate(rot) { + difference () { + cube([X, Y, Z], center = true); + translate([X - BevelZ, 0, Z - BevelZ]) cube([X, Y + 1, Z], center = true); + translate([-X + BevelZ, 0, Z - BevelZ]) cube([X, Y + 1, Z], center = true); + translate([-(X / 2) - 7.83, 0, -3.45]) rotate([0, 20, 0]) cube([20, Y + 1, 20], center = true); + translate([(X / 2) + 7.83, 0, -3.45]) rotate([0, -20, 0]) cube([20, Y + 1, 20], center = true); + } + } +} + +module camera_sled_bolex_plate (pos = [0, 0, 0], rot = [0, 0, 0]) { + Z = CameraSledBolexZ; + X = CameraSledBolexX; + Y = CameraSledBolexY; + CameraBoltLen = 20; + CameraBolts = ["3/8", "1/4", "3/8"]; + CameraBoltsY = [ -5.2, -27.35, -55.8 ]; + CameraBoltsX = [0, 0, 6.8 ]; + + translate(pos) rotate(rot) { + difference () { + camera_sled_bolex_plate_blank([0, 0, (Z / 2) - (CameraSledBolexPlateZ / 2)]); //camera mounting bolts - translate([0, (Y / 2) - ((Y - CameraBoltY) / 2) - (9.6 - 5.2), -33 - 12]) { + translate([0, (Y / 2) - ((Y - CameraBoltY) / 2) - (9.6 - 5.2), -33 - 10]) { for (i = [0 : 2]) { - camera_sled_bolt_slot([CameraBoltsX[i], CameraBoltsY[i], 50], Bolt = CameraBolts[i]); + camera_sled_bolt_slot([CameraBoltsX[i], CameraBoltsY[i], 50], Bolt = CameraBolts[i], Len = CameraBoltLen); } } } @@ -905,8 +952,13 @@ module rail_sizing (L = 1000) { color("red") side_camera_sled_bearing_plate([120, 0, 0]); } +module debug2 () { + //camera_sled_bolex(); + color("red") camera_sled_bolex_plate(); +} -PART = "bearing_roller_inner_solid"; + +PART = "camera_sled_bolexx"; if (PART == "rail_end") { rail_end(Projector = true); @@ -917,7 +969,9 @@ if (PART == "rail_end") { } else if (PART == "camera_sled") { rotate([90, 0, 0]) camera_sled(); } else if (PART == "camera_sled_bolex") { - camera_sled_bolex(rot = [180, 0, 0]); + camera_sled_bolex(); +} else if (PART == "camera_sled_bolex_plate") { + camera_sled_bolex_plate(); } else if (PART == "bearing_roller") { bearing_roller(); } else if (PART == "bearing_roller_inner") { @@ -944,5 +998,6 @@ if (PART == "rail_end") { rail_end_idle_motor_plug(); } else { //debug(); - rail_sizing(); + //rail_sizing(); + debug2(); } \ No newline at end of file