| 
		 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(); | 
				
			||||
} | 
					} | 
				
			||||