Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
@ -0,0 +1,39 @@ |
|||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// File for all dimensions, so they can be changed globally. |
||||
|
// |
||||
|
// Author: Maximilian Stiefel |
||||
|
// Last modification: 29.07.2017 |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
allowance05 = 0.5; |
||||
|
|
||||
|
// Glass dimensions |
||||
|
glass_slide_height = 1; |
||||
|
glass_slide_depth = 26 + allowance05; |
||||
|
glass_slide_width = 76; |
||||
|
|
||||
|
// Holder dimensions |
||||
|
window_size = 20; |
||||
|
holder_height = 3 + glass_slide_height + allowance05; |
||||
|
holder_depth = glass_slide_depth + allowance05 + 4; |
||||
|
holder_width = 80; // Width of the PCB |
||||
|
echo(holder_height=holder_height); |
||||
|
|
||||
|
// LED illuminator dimensions |
||||
|
led_illuminator_dia = 10; |
||||
|
led_illuminator_height = 15; |
||||
|
led_pos_x = 18; |
||||
|
led_pos_y = 13; |
||||
|
led_illuminator_thickness = 2; |
||||
|
led_illuminator_slot = 4; |
||||
|
led_illuminator_angle = 35; |
||||
|
|
||||
|
leg_outer_dia = 5; |
||||
|
leg_inner_dia = 2.5; |
||||
|
leg_height = led_illuminator_height; |
||||
|
leg_pos_y = 13; |
||||
|
leg_pos_x = 2.5; |
||||
|
leg_distance = 6.5; |
||||
|
leg_drill_depth = 7; |
||||
|
|
||||
|
myColor1 = "LimeGreen"; |
@ -0,0 +1,43 @@ |
|||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Glass slide holder to be mounted on the PCB. |
||||
|
// |
||||
|
// Author: Maximilian Stiefel |
||||
|
// Last modification: 29.06.2017 |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Includes |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
// Dimesnions |
||||
|
include <dimensions.scad> |
||||
|
use <dimensions.scad> |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Vars |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Action |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
module glass_holder() |
||||
|
{ |
||||
|
translate([0, 0, holder_height/2 + leg_height -0.01]) |
||||
|
difference() |
||||
|
{ |
||||
|
// Main body |
||||
|
cube([holder_width, holder_depth, holder_height], center = true); |
||||
|
union() |
||||
|
{ |
||||
|
// Cut glass slide out and make an entrance |
||||
|
translate([-2.5, 0, 2]) |
||||
|
cube([glass_slide_width + allowance05 + 5, glass_slide_depth + allowance05, holder_height], center = true); |
||||
|
// Cut out a cylinder for the LED |
||||
|
translate([glass_slide_width/2 - led_pos_x, 0, 0]) |
||||
|
cylinder(r = led_illuminator_dia/2, h = 20, center = true); |
||||
|
// Cut out a "window" where the receiver photodiode is sitting |
||||
|
translate([glass_slide_width/2 - led_pos_x, glass_slide_depth/2, 2]) |
||||
|
cube([window_size, 10, 10], center = true); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -1,35 +1,40 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// LED illuminator to hide the LED from the receiver diode. |
// Illuminator for LED to keep the UV light away from the photodiode. |
||||
// |
// |
||||
// Author: Maximilian Stiefel |
// Author: Maximilian Stiefel |
||||
// Last modification: 22.06.2017 |
// Last modification: 29.06.2017 |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// Includes |
// Includes |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
// Dimesnions |
||||
|
include <dimensions.scad> |
||||
|
use <dimensions.scad> |
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// Vars |
// Vars |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
$fa = 0.5; // minimum facet angle is now 0.5 |
|
||||
$fs = 0.5; // minimum facet size is now 0.5 mm |
|
||||
|
|
||||
holder_height = 14; |
|
||||
holder_diameter = 8.5; |
|
||||
holder_hole_diameter = 6.5; // LED with 5 mm diameter should fit in |
|
||||
holder_slot_width = 1; |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// Action |
// Action |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
difference() |
module illuminator() |
||||
{ |
{ |
||||
cylinder(h = holder_height, r = holder_diameter/2, center = true); |
translate([glass_slide_width/2 - led_pos_x, 0, led_illuminator_height/2 + 0.01]) |
||||
|
difference() |
||||
|
{ |
||||
|
cylinder(r = led_illuminator_dia/2 + led_illuminator_thickness, led_illuminator_height, center = true); |
||||
union() |
union() |
||||
{ |
{ |
||||
translate([0, 0, 0]) |
// Cut out inner cylinder |
||||
cylinder(h = holder_height + 2, r = holder_hole_diameter/2, center = true); |
cylinder(r = led_illuminator_dia/2, led_illuminator_height + 0.01, center = true); |
||||
translate([0, holder_diameter/2, 0]) |
// Cut out slot |
||||
cube([holder_slot_width, 2*(holder_diameter-holder_hole_diameter), holder_height + 2], center = true); |
rotate([0, 0, led_illuminator_angle + 180]) |
||||
|
translate([led_illuminator_dia/2, 0, -led_illuminator_height/2 - 0.01]) |
||||
|
cube([led_illuminator_dia/2, led_illuminator_slot, led_illuminator_height], center = true); |
||||
|
} |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
|
@ -0,0 +1,52 @@ |
|||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Legs for the glass slide holder. |
||||
|
// |
||||
|
// Author: Maximilian Stiefel |
||||
|
// Last modification: 29.06.2017 |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Includes |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
// Dimesnions |
||||
|
include <dimensions.scad> |
||||
|
use <dimensions.scad> |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Vars |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Action |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
module legs() |
||||
|
{ |
||||
|
difference() |
||||
|
{ |
||||
|
union() |
||||
|
{ |
||||
|
// Legs at the left |
||||
|
for(y = [0, 1]) |
||||
|
translate([glass_slide_width/2 - leg_pos_x, -y*leg_distance,0]) |
||||
|
cylinder(r = leg_outer_dia/2, h = leg_height); |
||||
|
// Legs at the right |
||||
|
for(y = [0, 1]) |
||||
|
translate([-glass_slide_width/2 + leg_pos_x, y*leg_distance, 0]) |
||||
|
cylinder(r = leg_outer_dia/2, h = leg_height); |
||||
|
} |
||||
|
union() |
||||
|
{ |
||||
|
// Legs at the left |
||||
|
for(y = [0, 1]) |
||||
|
translate([glass_slide_width/2 - leg_pos_x, -y*leg_distance, -0.01]) |
||||
|
cylinder(r = leg_inner_dia/2, h = leg_drill_depth); |
||||
|
// Legs at the right |
||||
|
for(y = [0, 1]) |
||||
|
translate([-glass_slide_width/2 + leg_pos_x, y*leg_distance, -0.01]) |
||||
|
cylinder(r = leg_inner_dia/2, h = leg_drill_depth); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
@ -1,35 +1,42 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// LED illuminator to hide the LED from the receiver diode. |
// Main file to bring everything together. |
||||
// |
// |
||||
// Author: Maximilian Stiefel |
// Author: Maximilian Stiefel |
||||
// Last modification: 22.06.2017 |
// Last modification: 29.06.2017 |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// Includes |
// Includes |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
// Dimesnions |
||||
|
include <dimensions.scad> |
||||
|
use <dimensions.scad> |
||||
|
|
||||
|
// Module for the glass holder |
||||
|
include <glass_hollder.scad> |
||||
|
use <glass_holder.scad> |
||||
|
|
||||
|
// Module for the legs |
||||
|
include <legs.scad> |
||||
|
use <legs.scad> |
||||
|
|
||||
|
// Module for the legs |
||||
|
include <led_illuminator.scad> |
||||
|
use <led_illuminator.scad> |
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// Vars |
// Vars |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
$fa = 0.5; // minimum facet angle is now 0.5 |
$fa = 0.5; // minimum facet angle is now 0.5 |
||||
$fs = 0.5; // minimum facet size is now 0.5 mm |
$fs = 0.5; // minimum facet size is now 0.5 mm |
||||
|
|
||||
allowance = 0.5; |
|
||||
|
|
||||
glass_slide_thickness = 1; |
|
||||
glass_slide_width = 26 + allowance; |
|
||||
|
|
||||
holder_height = 15 + glass_slide_thickness + allowance; |
|
||||
holder_width = 26 + allowance + 4; |
|
||||
holder_depth = 3.5; |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
// Action |
// Action |
||||
///////////////////////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////////////////////// |
||||
difference() |
color(myColor1) |
||||
{ |
{ |
||||
cube([holder_width, holder_depth, holder_height]); |
glass_holder(); |
||||
translate([(holder_width - glass_slide_width)/2, holder_depth - 1.25 - allowance, holder_height - glass_slide_thickness - allowance]) |
legs(); |
||||
cube([glass_slide_width, holder_depth, 2]); |
illuminator(); |
||||
} |
} |