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 |
|||
// Last modification: 22.06.2017 |
|||
// Last modification: 29.06.2017 |
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
|
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
// Includes |
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
|
|||
// Dimesnions |
|||
include <dimensions.scad> |
|||
use <dimensions.scad> |
|||
|
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
// 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 |
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
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() |
|||
{ |
|||
translate([0, 0, 0]) |
|||
cylinder(h = holder_height + 2, r = holder_hole_diameter/2, center = true); |
|||
translate([0, holder_diameter/2, 0]) |
|||
cube([holder_slot_width, 2*(holder_diameter-holder_hole_diameter), holder_height + 2], center = true); |
|||
// Cut out inner cylinder |
|||
cylinder(r = led_illuminator_dia/2, led_illuminator_height + 0.01, center = true); |
|||
// Cut out slot |
|||
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 |
|||
// Last modification: 22.06.2017 |
|||
// Last modification: 29.06.2017 |
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
|
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
// 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 |
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
$fa = 0.5; // minimum facet angle is now 0.5 |
|||
$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 |
|||
///////////////////////////////////////////////////////////////////////////////// |
|||
difference() |
|||
color(myColor1) |
|||
{ |
|||
cube([holder_width, holder_depth, holder_height]); |
|||
translate([(holder_width - glass_slide_width)/2, holder_depth - 1.25 - allowance, holder_height - glass_slide_thickness - allowance]) |
|||
cube([glass_slide_width, holder_depth, 2]); |
|||
glass_holder(); |
|||
legs(); |
|||
illuminator(); |
|||
} |