From 1a42f260fe6ab457ea701bbf2e3b485e32b67126 Mon Sep 17 00:00:00 2001 From: mmcw-dev Date: Tue, 16 Jan 2018 00:57:20 -0500 Subject: [PATCH] Add the experimental "fresnel" pattern generator for laser cutting. The hypothesis is that by melting the surface of an acrylic sheet, light from the LED source will be better projected forward onto the surface of the diffuser sheet. --- scad/light.scad | 55 ++++++++++++++++++++++++++++++++----------------- scad/mcopy.scad | 7 +++++-- scad/motor.scad | 3 ++- 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/scad/light.scad b/scad/light.scad index 6ba827d..77ee8bf 100644 --- a/scad/light.scad +++ b/scad/light.scad @@ -256,27 +256,44 @@ module flashlight_mount_cap (DEBUG = false) { } module impromptu_mount () { - $fn = 100; - ROD_D = 12.6; - - translate([0, -35, 0]) rotate([90, 0, 0]) { - difference () { - union() { - cylinder(r = ROD_D / 2, h = 43, center = true); - translate([0, 0, -5]) cylinder(r = (ROD_D / 2) + 2, h = 30, center = true); - } - //notch for cap - translate([-10, 0, 24.5]) cube([15, 15, 15], center = true); - translate([0, 0, -22.25]) cube([45, 45, 15], center = true); + $fn = 100; + ROD_D = 12.6; + + translate([0, -35, 0]) rotate([90, 0, 0]) { + difference () { + union() { + cylinder(r = ROD_D / 2, h = 43, center = true); + translate([0, 0, -5]) cylinder(r = (ROD_D / 2) + 2, h = 30, center = true); } - translate([0, 0, -17]) cube([8, 8, 5], center = true); + //notch for cap + translate([-10, 0, 24.5]) cube([15, 15, 15], center = true); + translate([0, 0, -22.25]) cube([45, 45, 15], center = true); } - translate([0, -46.4, 0]) { - difference() { - rotate ([90, 90, 0]) cylinder(r = (ROD_D / 2) + 2, h = 3, center = true); - translate([50 + (ROD_D / 2), 0, 0]) cube([100, 100, 100], center = true); - translate([-50 - (ROD_D / 2), 0, 0]) cube([100, 100, 100], center = true); - } + translate([0, 0, -17]) cube([8, 8, 5], center = true); + } + translate([0, -46.4, 0]) { + difference() { + rotate ([90, 90, 0]) cylinder(r = (ROD_D / 2) + 2, h = 3, center = true); + translate([50 + (ROD_D / 2), 0, 0]) cube([100, 100, 100], center = true); + translate([-50 - (ROD_D / 2), 0, 0]) cube([100, 100, 100], center = true); } + } +} +module fresnel_laser(outer = 13, h = 3, spacing = 0.2) { + $fn = 120; + count = ceil(outer / spacing); + for(i = [0 : count]) { + if (i % 2 != 0) { + difference() { + cylinder(r = outer - (spacing * i), h = h); + cylinder(r = outer - (spacing * (i + 1)), h = h + 1); + } + } + } +} + +module fresnel_laser_outer (outer = 13, h = 3) { + $fn = 120; + cylinder(r = outer, h = h); } \ No newline at end of file diff --git a/scad/mcopy.scad b/scad/mcopy.scad index bf81a4a..332c7e5 100644 --- a/scad/mcopy.scad +++ b/scad/mcopy.scad @@ -6,11 +6,14 @@ include <./motor.scad>; //translate([0, 2.5, 0]) rotate([90, 0, 0]) color("red") adafruit_pixie(); //translate([0, 6, 0]) color("blue") pixie_mount(); //translate([0, 0, -50]) color("red") fan(); -color("green") diffuser_mount(); +//color("green") diffuser_mount(); //translate([0, 0, -51.2]) light_body(); //translate([0, 0, 20]) light_vent_top(); //translate ([0, -20, 0]) rotate([90, 90, 0]) color("red") diffuser_insert(); //translate ([0, -20, 0]) rotate([90, 90, 0]) color("red") diffuser_spacer(); //rotate([0, 0, 90]) flashlight_mount(); //translate([0, -8.5, 0]) rotate([0, 0, 90]) impromptu_mount(); -//translate([30, -8.5, 0]) rotate([0, 0, 90]) flashlight_mount_cap(); \ No newline at end of file +//translate([30, -8.5, 0]) rotate([0, 0, 90]) flashlight_mount_cap(); + +projection() fresnel_laser(spacing = 1); +projection() fresnel_laser_outer(); \ No newline at end of file diff --git a/scad/motor.scad b/scad/motor.scad index c930236..0caf0d8 100644 --- a/scad/motor.scad +++ b/scad/motor.scad @@ -520,4 +520,5 @@ module bolex_stand () { } //translate([0, 0, 40]) cube([35, 150, 30], center = true); } -} \ No newline at end of file +} +