Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 86 KiB |
@ -1,18 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Adapter for drilling machine in the embedded lab. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 07.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Vars |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
crossbar_depth = 175; |
|
||||
crossbar_height = 10; |
|
||||
crossbar_width = 5; |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
cube([crossbar_width, crossbar_depth, crossbar_height], center = true); |
|
@ -1,86 +0,0 @@ |
|||||
solid OpenSCAD_Model |
|
||||
facet normal -0 0 1 |
|
||||
outer loop |
|
||||
vertex -2.5 87.5 5 |
|
||||
vertex 2.5 -87.5 5 |
|
||||
vertex 2.5 87.5 5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 0 1 |
|
||||
outer loop |
|
||||
vertex 2.5 -87.5 5 |
|
||||
vertex -2.5 87.5 5 |
|
||||
vertex -2.5 -87.5 5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 0 -1 |
|
||||
outer loop |
|
||||
vertex -2.5 -87.5 -5 |
|
||||
vertex 2.5 87.5 -5 |
|
||||
vertex 2.5 -87.5 -5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal -0 0 -1 |
|
||||
outer loop |
|
||||
vertex 2.5 87.5 -5 |
|
||||
vertex -2.5 -87.5 -5 |
|
||||
vertex -2.5 87.5 -5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 -1 0 |
|
||||
outer loop |
|
||||
vertex -2.5 -87.5 -5 |
|
||||
vertex 2.5 -87.5 5 |
|
||||
vertex -2.5 -87.5 5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 -1 -0 |
|
||||
outer loop |
|
||||
vertex 2.5 -87.5 5 |
|
||||
vertex -2.5 -87.5 -5 |
|
||||
vertex 2.5 -87.5 -5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 1 -0 0 |
|
||||
outer loop |
|
||||
vertex 2.5 -87.5 5 |
|
||||
vertex 2.5 87.5 -5 |
|
||||
vertex 2.5 87.5 5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 1 0 0 |
|
||||
outer loop |
|
||||
vertex 2.5 87.5 -5 |
|
||||
vertex 2.5 -87.5 5 |
|
||||
vertex 2.5 -87.5 -5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 1 -0 |
|
||||
outer loop |
|
||||
vertex 2.5 87.5 -5 |
|
||||
vertex -2.5 87.5 5 |
|
||||
vertex 2.5 87.5 5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 1 0 |
|
||||
outer loop |
|
||||
vertex -2.5 87.5 5 |
|
||||
vertex 2.5 87.5 -5 |
|
||||
vertex -2.5 87.5 -5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal -1 0 0 |
|
||||
outer loop |
|
||||
vertex -2.5 -87.5 -5 |
|
||||
vertex -2.5 87.5 5 |
|
||||
vertex -2.5 87.5 -5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal -1 -0 0 |
|
||||
outer loop |
|
||||
vertex -2.5 87.5 5 |
|
||||
vertex -2.5 -87.5 -5 |
|
||||
vertex -2.5 -87.5 5 |
|
||||
endloop |
|
||||
endfacet |
|
||||
endsolid OpenSCAD_Model |
|
@ -1,87 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Adapter for drilling machine in the embedded lab. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 10.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Vars |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
holder_height = 175; |
|
||||
holder_width = 15; |
|
||||
holder_depth = 5; |
|
||||
|
|
||||
notch_height = 120; |
|
||||
notch_width = 2; |
|
||||
notch_depth = 3; |
|
||||
|
|
||||
allowance = 0.5; |
|
||||
|
|
||||
crossbar_height = 10 + allowance; |
|
||||
crossbar_width = 5 + allowance; |
|
||||
crossbar_depth = 175; |
|
||||
|
|
||||
pillar_height = 20; |
|
||||
pillar_width = 15; |
|
||||
pillar_depth = holder_depth; |
|
||||
|
|
||||
airpump_diameter = 30; |
|
||||
|
|
||||
// Suitable for M3 screw thread |
|
||||
hole_diameter = 2.5; |
|
||||
|
|
||||
// Height difference between notch for PCB and the actual holder |
|
||||
height_diff_1 = holder_height - notch_height; |
|
||||
|
|
||||
// Height difference between notch position and crossbar_slot |
|
||||
height_diff_2 = 0.7*height_diff_1 - airpump_diameter/2; |
|
||||
|
|
||||
// Width difference between crossbar and holder |
|
||||
width_diff_1 = holder_width - crossbar_width; |
|
||||
|
|
||||
// With difference between |
|
||||
width_diff_2 = pillar_width - holder_width; |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
difference() |
|
||||
{ |
|
||||
union() |
|
||||
{ |
|
||||
// Cube for the base holder |
|
||||
cube([holder_width, holder_depth, holder_height], center = false); |
|
||||
// Pillars |
|
||||
translate([holder_width, 0, 0]) |
|
||||
cube([pillar_width, pillar_depth, pillar_height]); |
|
||||
translate([-pillar_width , 0, 0]) |
|
||||
cube([pillar_width, pillar_depth, pillar_height]); |
|
||||
} |
|
||||
|
|
||||
union() |
|
||||
{ |
|
||||
// Drill holes for air pump |
|
||||
translate([holder_width/2, holder_depth + 1, 0]) |
|
||||
rotate([90, 0, 0]) |
|
||||
cylinder(h = holder_depth + 2, r = airpump_diameter/2); |
|
||||
|
|
||||
// Cube for notch |
|
||||
translate([holder_width/2 - notch_width/2, -1, 0.7*height_diff_1]) |
|
||||
cube([notch_width, notch_depth, notch_height], center = false); |
|
||||
|
|
||||
// Slots for crossbars |
|
||||
translate([width_diff_1/2, -1, height_diff_2/2 + airpump_diameter/2 - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
translate([width_diff_1/2, -1, holder_height - 0.3*height_diff_1/2 - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
|
|
||||
// Drill holes for screws |
|
||||
translate([-1, holder_depth/2, height_diff_2/2 + airpump_diameter/2]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
translate([-1, holder_depth/2, holder_height - 0.3*height_diff_1/2]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
} |
|
||||
} |
|
@ -1,87 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Adapter for drilling machine in the embedded lab. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 10.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Vars |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
holder_height = 175; |
|
||||
holder_width = 15; |
|
||||
holder_depth = 5; |
|
||||
|
|
||||
notch_height = 120; |
|
||||
notch_width = 2; |
|
||||
notch_depth = 3; |
|
||||
|
|
||||
allowance = 0.5; |
|
||||
|
|
||||
crossbar_height = 10 + allowance; |
|
||||
crossbar_width = 5 + allowance; |
|
||||
crossbar_depth = 175; |
|
||||
|
|
||||
pillar_height = 20; |
|
||||
pillar_width = 15; |
|
||||
pillar_depth = holder_depth; |
|
||||
|
|
||||
airpump_diameter = 30; |
|
||||
|
|
||||
// Suitable for M3 screw thread |
|
||||
hole_diameter = 2.5; |
|
||||
|
|
||||
// Height difference between notch for PCB and the actual holder |
|
||||
height_diff_1 = holder_height - notch_height; |
|
||||
|
|
||||
// Height difference between notch position and crossbar_slot |
|
||||
height_diff_2 = 0.7*height_diff_1 - airpump_diameter/2; |
|
||||
|
|
||||
// Width difference between crossbar and holder |
|
||||
width_diff_1 = holder_width - crossbar_width; |
|
||||
|
|
||||
// With difference between |
|
||||
width_diff_2 = pillar_width - holder_width; |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
difference() |
|
||||
{ |
|
||||
union() |
|
||||
{ |
|
||||
// Cube for the base holder |
|
||||
cube([holder_width, holder_depth, holder_height], center = false); |
|
||||
// Pillars |
|
||||
translate([holder_width , 0, 0]) |
|
||||
cube([pillar_width, pillar_depth, pillar_height]); |
|
||||
translate([-pillar_width, 0, 0]) |
|
||||
cube([pillar_width, pillar_depth, pillar_height]); |
|
||||
} |
|
||||
|
|
||||
union() |
|
||||
{ |
|
||||
// Drill holes for air pump |
|
||||
translate([holder_width/2, holder_depth + 1, 0]) |
|
||||
rotate([90, 0, 0]) |
|
||||
cylinder(h = holder_depth + 2, r = airpump_diameter/2); |
|
||||
|
|
||||
// Cube for notch |
|
||||
translate([holder_width/2 - notch_width/2, -1, 0.7*height_diff_1]) |
|
||||
cube([notch_width, notch_depth, notch_height], center = false); |
|
||||
|
|
||||
// Slots for crossbars |
|
||||
translate([width_diff_1/2, -1, height_diff_2/2 + airpump_diameter/2 - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
translate([width_diff_1/2, -1, holder_height - 0.3*height_diff_1/2 - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
|
|
||||
// Drill holes for screws |
|
||||
translate([holder_width/2, holder_depth/2, height_diff_2/2 + airpump_diameter/2]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
translate([holder_width/2, holder_depth/2, holder_height - 0.3*height_diff_1/2]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
} |
|
||||
} |
|
@ -1,91 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// File for all dimensions, so they can be changed globally. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 17.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
// Allowance |
|
||||
allowance05 = 0.5; |
|
||||
allowance1 = 1; |
|
||||
allowance2 = 2; |
|
||||
|
|
||||
// Dimesions holder |
|
||||
holder_height = 172; |
|
||||
holder_width = 18; |
|
||||
holder_depth = 8; |
|
||||
|
|
||||
// Dimensions notch |
|
||||
notch_height = 161; |
|
||||
// Calculations to construct a triangle which can take a PCB |
|
||||
biggest_pcb = 2; |
|
||||
c = biggest_pcb + allowance05; |
|
||||
x = c; |
|
||||
y = sqrt( pow(x,2) - pow(c/2,2) ); |
|
||||
|
|
||||
// Dimensions cuvette |
|
||||
glass_thickness = 6; |
|
||||
cuvette_width = 180 + 2*glass_thickness + allowance2; |
|
||||
cuvette_depth = 50 + 2*glass_thickness + allowance2; |
|
||||
|
|
||||
// Dimensions lid |
|
||||
lid_thickness = 4; |
|
||||
lid_width = 180 + 2*glass_thickness + 2*lid_thickness + allowance2; |
|
||||
lid_depth = 50 + 2*glass_thickness + 2*lid_thickness + allowance2; |
|
||||
lid_height = 20; |
|
||||
|
|
||||
// Dimensions holder heater |
|
||||
heater_diameter = 25 + allowance1; |
|
||||
heater_offset = 55; |
|
||||
heater_pos = -lid_width/2 + heater_diameter/2 + 2*lid_thickness + 3; |
|
||||
|
|
||||
// Dimensions slot for the PCB holder arms |
|
||||
slot_width = lid_width - heater_diameter - 2*lid_thickness - 20; |
|
||||
slot_depth = holder_depth + allowance05; |
|
||||
slot_height = 1.5 * lid_height; |
|
||||
slot_pos = heater_pos + heater_diameter/2 + lid_thickness + 3; |
|
||||
|
|
||||
// Dimensions service holes for temp. sensor and air tube |
|
||||
service_hole_width = 10; |
|
||||
service_hole_depth = 10; |
|
||||
service_hole_height = lid_height; |
|
||||
|
|
||||
// Dimensions crossbar |
|
||||
crossbar_height = 2.5 + allowance05; |
|
||||
crossbar_width = 8 + allowance05; |
|
||||
crossbar_depth = slot_width; |
|
||||
|
|
||||
// Dimensions lid |
|
||||
lid_thickness = 4; |
|
||||
lid_slot_width = 8; |
|
||||
|
|
||||
// Dimensions neck |
|
||||
neck_diameter = holder_depth; |
|
||||
neck_height = lid_thickness + allowance05; |
|
||||
|
|
||||
// Dimensions head |
|
||||
head_width = holder_width; |
|
||||
head_depth = holder_depth; |
|
||||
head_height = 5; |
|
||||
|
|
||||
// Suitable for M3 screw thread |
|
||||
hole_diameter = 2.5; |
|
||||
|
|
||||
// Air system diameter |
|
||||
air_system = 10; |
|
||||
|
|
||||
// Height difference between notch for PCB and the actual holder |
|
||||
height_diff_1 = holder_height - notch_height; |
|
||||
|
|
||||
// Width difference between crossbar and holder |
|
||||
width_diff_1 = holder_width - crossbar_width; |
|
||||
|
|
||||
// Dimensions bar that PCB does not fall down |
|
||||
bar_width = holder_width/2; |
|
||||
bar_depth = 6; |
|
||||
// The height of this thing should exactely use the space which is available |
|
||||
// between the notch for the PBC and the crossbar slot |
|
||||
bar_height = height_diff_1/4 - crossbar_height/2; |
|
||||
|
|
||||
// My color for everything |
|
||||
myColor = "FireBrick"; |
|
@ -1,17 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Adapter for drilling machine in the embedded lab. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 17.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Includes |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
include <dimensions.scad> |
|
||||
use <dimensions.scad> |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
cube([crossbar_width - allowance05, crossbar_depth, crossbar_height - allowance05], center = true); |
|
@ -1,86 +0,0 @@ |
|||||
solid OpenSCAD_Model |
|
||||
facet normal -0 0 1 |
|
||||
outer loop |
|
||||
vertex -4 74 1.25 |
|
||||
vertex 4 -74 1.25 |
|
||||
vertex 4 74 1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 0 1 |
|
||||
outer loop |
|
||||
vertex 4 -74 1.25 |
|
||||
vertex -4 74 1.25 |
|
||||
vertex -4 -74 1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 0 -1 |
|
||||
outer loop |
|
||||
vertex -4 -74 -1.25 |
|
||||
vertex 4 74 -1.25 |
|
||||
vertex 4 -74 -1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal -0 0 -1 |
|
||||
outer loop |
|
||||
vertex 4 74 -1.25 |
|
||||
vertex -4 -74 -1.25 |
|
||||
vertex -4 74 -1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 -1 0 |
|
||||
outer loop |
|
||||
vertex -4 -74 -1.25 |
|
||||
vertex 4 -74 1.25 |
|
||||
vertex -4 -74 1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 -1 -0 |
|
||||
outer loop |
|
||||
vertex 4 -74 1.25 |
|
||||
vertex -4 -74 -1.25 |
|
||||
vertex 4 -74 -1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 1 -0 0 |
|
||||
outer loop |
|
||||
vertex 4 -74 1.25 |
|
||||
vertex 4 74 -1.25 |
|
||||
vertex 4 74 1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 1 0 0 |
|
||||
outer loop |
|
||||
vertex 4 74 -1.25 |
|
||||
vertex 4 -74 1.25 |
|
||||
vertex 4 -74 -1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 1 -0 |
|
||||
outer loop |
|
||||
vertex 4 74 -1.25 |
|
||||
vertex -4 74 1.25 |
|
||||
vertex 4 74 1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal 0 1 0 |
|
||||
outer loop |
|
||||
vertex -4 74 1.25 |
|
||||
vertex 4 74 -1.25 |
|
||||
vertex -4 74 -1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal -1 0 0 |
|
||||
outer loop |
|
||||
vertex -4 -74 -1.25 |
|
||||
vertex -4 74 1.25 |
|
||||
vertex -4 74 -1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
facet normal -1 -0 0 |
|
||||
outer loop |
|
||||
vertex -4 74 1.25 |
|
||||
vertex -4 -74 -1.25 |
|
||||
vertex -4 -74 1.25 |
|
||||
endloop |
|
||||
endfacet |
|
||||
endsolid OpenSCAD_Model |
|
Before Width: | Height: | Size: 79 KiB |
@ -1,41 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Floor protection for cuvette. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 12.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Includes |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
include <roundy.scad> |
|
||||
use <roundy.scad> |
|
||||
include <dimensions.scad> |
|
||||
use <dimensions.scad> |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
color(myColor) |
|
||||
difference() |
|
||||
{ |
|
||||
union() |
|
||||
{ |
|
||||
// Basic lid |
|
||||
translate([0, 0, lid_height/2]) |
|
||||
roundy(lid_width, lid_depth, lid_height, true); |
|
||||
translate([-lid_width/2 + 5, -lid_depth/2 + 2, lid_height/2]) |
|
||||
rotate([90, 0, 0]) |
|
||||
linear_extrude(height = 6, center = true, convexity = 10, twist = 0) |
|
||||
union() |
|
||||
{ |
|
||||
translate([0, 4, 0]) |
|
||||
text("Etching Machine of the Embedded Systems Master", size = 6, valign = "center"); |
|
||||
translate([0, -4, 0]) |
|
||||
text("Designed by Maximilian Stiefel 2017", size = 6, valign = "center"); |
|
||||
} |
|
||||
} |
|
||||
// Depening to put it over the cuvette |
|
||||
translate([0, 0, lid_height - lid_thickness]) |
|
||||
cube([cuvette_width, cuvette_depth, lid_height], center = true); |
|
||||
} |
|
Before Width: | Height: | Size: 131 KiB |
Before Width: | Height: | Size: 89 KiB |
@ -1,88 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Left holder part to anchor PCB with in the etching bath. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 17.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Includes |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
include <dimensions.scad> |
|
||||
use <dimensions.scad> |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Vars |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
color(myColor) |
|
||||
difference() |
|
||||
{ |
|
||||
union() |
|
||||
{ |
|
||||
// Cube for the base holder |
|
||||
cube([holder_width, holder_depth, holder_height], center = false); |
|
||||
|
|
||||
// Head |
|
||||
translate([0, 0, holder_height + neck_height]) |
|
||||
cube([head_width, head_depth, head_height]); |
|
||||
|
|
||||
// Neck |
|
||||
translate([holder_width/2, holder_depth/2, holder_height]) |
|
||||
cylinder(h = neck_height, r = neck_diameter/2); |
|
||||
|
|
||||
// Bar, that PCB does not fall |
|
||||
translate([holder_width/2 - bar_width/2, -bar_depth, height_diff_1/2 - bar_height]) |
|
||||
cube([bar_width, bar_depth, bar_height]); |
|
||||
|
|
||||
// Text |
|
||||
translate([holder_width/2 + 4, holder_depth, 0.2*holder_height]) |
|
||||
rotate([90,0,180]) |
|
||||
linear_extrude(height = 3, center = true, convexity = 10, twist = 0) |
|
||||
text("L", size = 10, valign = "center"); |
|
||||
translate([0, holder_depth -1, (1/4)*height_diff_1 + 6]) |
|
||||
rotate([90, 0, 270]) |
|
||||
linear_extrude(height = 2, center = true, convexity = 10, twist = 0) |
|
||||
text("M3", size = 3, valign = "center"); |
|
||||
translate([0, holder_depth/2, holder_height/2]) |
|
||||
rotate([90, -90, 270]) |
|
||||
linear_extrude(height = 2, center = true, convexity = 10, twist = 0) |
|
||||
text("Maximilian Stiefel 2017", size = 3, valign = "center"); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
union() |
|
||||
{ |
|
||||
// Cube for notch |
|
||||
//translate([holder_width/2 - notch_width/2, -notch_depth +2, height_diff_1/2]) |
|
||||
//cube([notch_width, notch_depth, notch_height], center = false); |
|
||||
|
|
||||
// Triangular notch |
|
||||
translate([-c/2 + holder_width/2, -0.01, height_diff_1/2]) |
|
||||
linear_extrude(height = notch_height, center = false) |
|
||||
polygon(points=[[0,0],[c/2,y], [c,0]], paths = [[0,1,2]]); |
|
||||
|
|
||||
// Slots for crossbars |
|
||||
translate([width_diff_1/2, -1, (1/4)*height_diff_1 - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
translate([width_diff_1/2, -1, (3/4)*height_diff_1 + notch_height - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
|
|
||||
// Drill holes for screws |
|
||||
translate([-1, holder_depth/2, (1/4)*height_diff_1]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
translate([0, holder_depth/2,(3/4)*height_diff_1 + notch_height]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
|
|
||||
// Holes for the air system |
|
||||
// translate([holder_width/2, holder_depth + 1, 0]) |
|
||||
// rotate([90, 0, 0]) |
|
||||
// cylinder(h = holder_depth + 2, r = air_system/2); |
|
||||
} |
|
||||
} |
|
@ -1,88 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Left holder part to anchor PCB with in the etching bath. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 17.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Includes |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
include <dimensions.scad> |
|
||||
use <dimensions.scad> |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Vars |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
color(myColor) |
|
||||
difference() |
|
||||
{ |
|
||||
union() |
|
||||
{ |
|
||||
// Cube for the base holder |
|
||||
cube([holder_width, holder_depth, holder_height], center = false); |
|
||||
|
|
||||
// Head |
|
||||
translate([0, 0, holder_height + neck_height]) |
|
||||
cube([head_width, head_depth, head_height]); |
|
||||
|
|
||||
// Neck |
|
||||
translate([holder_width/2, holder_depth/2, holder_height]) |
|
||||
cylinder(h = neck_height, r = neck_diameter/2); |
|
||||
|
|
||||
// Bar, that PCB does not fall |
|
||||
translate([holder_width/2 - bar_width/2, -bar_depth, height_diff_1/2 - bar_height]) |
|
||||
cube([bar_width, bar_depth, bar_height]); |
|
||||
|
|
||||
// Text |
|
||||
translate([holder_width/2 +5, holder_depth, 0.2*holder_height]) |
|
||||
rotate([90,0,180]) |
|
||||
linear_extrude(height = 3, center = true, convexity = 10, twist = 0) |
|
||||
text("R", size = 10, valign = "center"); |
|
||||
translate([holder_width, 1, (1/4)*height_diff_1 + 6]) |
|
||||
rotate([90, 0,90]) |
|
||||
linear_extrude(height = 2, center = true, convexity = 10, twist = 0) |
|
||||
text("M3", size = 3, valign = "center"); |
|
||||
translate([holder_width, holder_depth/2, holder_height/2]) |
|
||||
rotate([90, -90, 90]) |
|
||||
linear_extrude(height = 2, center = true, convexity = 10, twist = 0) |
|
||||
text("Maximilian Stiefel 2017", size = 3, valign = "center"); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
union() |
|
||||
{ |
|
||||
// Cube for notch |
|
||||
//translate([holder_width/2 - notch_width/2, -notch_depth +2, height_diff_1/2]) |
|
||||
//cube([notch_width, notch_depth, notch_height], center = false); |
|
||||
|
|
||||
// Triangular notch |
|
||||
translate([-c/2 + holder_width/2, -0.01, height_diff_1/2]) |
|
||||
linear_extrude(height = notch_height, center = false) |
|
||||
polygon(points=[[0,0],[c/2,y], [c,0]], paths = [[0,1,2]]); |
|
||||
|
|
||||
// Slots for crossbars |
|
||||
translate([width_diff_1/2, -1, (1/4)*height_diff_1 - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
translate([width_diff_1/2, -1, (3/4)*height_diff_1 + notch_height - crossbar_height/2]) |
|
||||
cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); |
|
||||
|
|
||||
// Drill holes for screws |
|
||||
translate([holder_width/2 + 1, holder_depth/2, (1/4)*height_diff_1]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
translate([holder_width/2 + 1, holder_depth/2,(3/4)*height_diff_1 + notch_height]) |
|
||||
rotate([0, 90, 0]) |
|
||||
cylinder(h = 9, r = hole_diameter/2); |
|
||||
|
|
||||
// Holes for the air system |
|
||||
// translate([holder_width/2, holder_depth + 1, 0]) |
|
||||
// rotate([90, 0, 0]) |
|
||||
// cylinder(h = holder_depth + 2, r = air_system/2); |
|
||||
} |
|
||||
} |
|
@ -1,69 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Lid for cuvette with pcb holder slots and a possibility to put a heater. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 17.06.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Includes |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
include <roundy.scad> |
|
||||
use <roundy.scad> |
|
||||
include <dimensions.scad> |
|
||||
use <dimensions.scad> |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
color(myColor) |
|
||||
difference() |
|
||||
{ |
|
||||
union() |
|
||||
{ |
|
||||
// Basic lid |
|
||||
translate([0, 0, lid_height/2]) |
|
||||
roundy(lid_width, lid_depth, lid_height, true); |
|
||||
//cube([lid_width, lid_depth, lid_height], center = true); |
|
||||
translate([heater_pos, 0, lid_height - 1]) |
|
||||
cylinder(h = heater_offset + 1, r = heater_diameter/2 + lid_thickness); |
|
||||
|
|
||||
// Uppsala University Logo |
|
||||
translate([0, 5, lid_height]) |
|
||||
linear_extrude(height = 1) |
|
||||
scale(0.08) |
|
||||
import("uppsla_university.dxf"); |
|
||||
|
|
||||
// Text |
|
||||
translate([-lid_width/2 + 5, -lid_depth/2 + 2, lid_height/2]) |
|
||||
rotate([90, 0, 0]) |
|
||||
linear_extrude(height = 6, center = true, convexity = 10, twist = 0) |
|
||||
union() |
|
||||
{ |
|
||||
translate([0, 4, 0]) |
|
||||
text("Embedded Etcher", size = 6, valign = "center"); |
|
||||
translate([0, -4, 0]) |
|
||||
text("Revision 1.0", size = 6, valign = "center"); |
|
||||
} |
|
||||
} |
|
||||
union() |
|
||||
{ |
|
||||
// Depening to put it over the cuvette |
|
||||
translate([0, 0, lid_height/2 - lid_thickness]) |
|
||||
cube([cuvette_width, cuvette_depth, lid_height], center = true); |
|
||||
|
|
||||
// Hole for heater |
|
||||
translate([heater_pos, 0, -1]) |
|
||||
cylinder(h = heater_offset + lid_height + 2, r = heater_diameter/2); |
|
||||
// Slot for the PCB holder arms |
|
||||
translate([slot_pos, -slot_depth/2, 0]) |
|
||||
cube([slot_width, slot_depth, slot_height], center = false); |
|
||||
|
|
||||
// Service holes |
|
||||
translate([-lid_width/2 + lid_thickness + 5, -lid_depth/2 + lid_thickness + 3, (1/2)*lid_height]) |
|
||||
cube([service_hole_width, service_hole_depth, service_hole_height]); |
|
||||
translate([lid_width/2 - lid_thickness - service_hole_width -5, -lid_depth/2 + lid_thickness + 3, (1/2)*lid_height]) |
|
||||
cube([service_hole_width, service_hole_depth, service_hole_height]); |
|
||||
|
|
||||
} |
|
||||
} |
|
Before Width: | Height: | Size: 88 KiB |
@ -1,37 +0,0 @@ |
|||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
// Module for a open box with rounded edges. |
|
||||
// |
|
||||
// Author: Maximilian Stiefel |
|
||||
// Last modification: 26.04.2017 |
|
||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||
|
|
||||
module roundy(width, depth, height, center) |
|
||||
{ |
|
||||
///////////////////////////////////////////////////////////////////////// |
|
||||
// Vars |
|
||||
///////////////////////////////////////////////////////////////////////// |
|
||||
edge_rounding = 8; |
|
||||
transx = -width/2; |
|
||||
transy = -depth/2; |
|
||||
transz = -height/2; |
|
||||
|
|
||||
///////////////////////////////////////////////////////////////////////// |
|
||||
// Action |
|
||||
///////////////////////////////////////////////////////////////////////// |
|
||||
// Hull 4 cylinders |
|
||||
translate([transx, transy, transz]) |
|
||||
hull(){ |
|
||||
// x=0, y=0 |
|
||||
translate([edge_rounding, edge_rounding, 0]) |
|
||||
cylinder(r = edge_rounding, h = height); |
|
||||
// x=width, y=0 |
|
||||
translate([width - edge_rounding, edge_rounding, 0]) |
|
||||
cylinder(r = edge_rounding, h = height); |
|
||||
// x=0, y=depth |
|
||||
translate([edge_rounding, depth - edge_rounding,0]) |
|
||||
cylinder(r = edge_rounding, h = height); |
|
||||
//x=width, y=length |
|
||||
translate([width - edge_rounding, depth - edge_rounding,0]) |
|
||||
cylinder(r = edge_rounding, h = height); |
|
||||
} |
|
||||
} |
|
@ -1,37 +0,0 @@ |
|||||
ISO-10303-21; |
|
||||
HEADER; |
|
||||
FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); |
|
||||
FILE_NAME('/home/maximilian/UppSense/cad/etching_machine/v2.0/test.step' |
|
||||
,'2017-06-17T18:55:45',('Author'),(''), |
|
||||
'Open CASCADE STEP processor 6.8','FreeCAD','Unknown'); |
|
||||
FILE_SCHEMA(('AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }')); |
|
||||
ENDSEC; |
|
||||
DATA; |
|
||||
#1 = APPLICATION_PROTOCOL_DEFINITION('committee draft', |
|
||||
'automotive_design',1997,#2); |
|
||||
#2 = APPLICATION_CONTEXT( |
|
||||
'core data for automotive mechanical design processes'); |
|
||||
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); |
|
||||
#4 = PRODUCT_DEFINITION_SHAPE('','',#5); |
|
||||
#5 = PRODUCT_DEFINITION('design','',#6,#9); |
|
||||
#6 = PRODUCT_DEFINITION_FORMATION('','',#7); |
|
||||
#7 = PRODUCT('ASSEMBLY','ASSEMBLY','',(#8)); |
|
||||
#8 = MECHANICAL_CONTEXT('',#2,'mechanical'); |
|
||||
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); |
|
||||
#10 = SHAPE_REPRESENTATION('',(#11),#15); |
|
||||
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); |
|
||||
#12 = CARTESIAN_POINT('',(0.,0.,0.)); |
|
||||
#13 = DIRECTION('',(0.,0.,1.)); |
|
||||
#14 = DIRECTION('',(1.,0.,-0.)); |
|
||||
#15 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) |
|
||||
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#19)) GLOBAL_UNIT_ASSIGNED_CONTEXT( |
|
||||
(#16,#17,#18)) REPRESENTATION_CONTEXT('Context #1', |
|
||||
'3D Context with UNIT and UNCERTAINTY') ); |
|
||||
#16 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); |
|
||||
#17 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); |
|
||||
#18 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); |
|
||||
#19 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#16, |
|
||||
'distance_accuracy_value','confusion accuracy'); |
|
||||
#20 = PRODUCT_TYPE('part',$,(#7)); |
|
||||
ENDSEC; |
|
||||
END-ISO-10303-21; |
|
Before Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
@ -0,0 +1,35 @@ |
|||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// LED illuminator to hide the LED from the receiver diode. |
||||
|
// |
||||
|
// Author: Maximilian Stiefel |
||||
|
// Last modification: 22.06.2017 |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Includes |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// 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() |
||||
|
{ |
||||
|
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]); |
||||
|
} |
@ -0,0 +1,198 @@ |
|||||
|
solid OpenSCAD_Model |
||||
|
facet normal -1 0 0 |
||||
|
outer loop |
||||
|
vertex 0 0 0 |
||||
|
vertex 0 3.5 16.5 |
||||
|
vertex 0 3.5 0 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal -1 -0 0 |
||||
|
outer loop |
||||
|
vertex 0 3.5 16.5 |
||||
|
vertex 0 0 0 |
||||
|
vertex 0 0 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 0 1 |
||||
|
outer loop |
||||
|
vertex 2 3.5 16.5 |
||||
|
vertex 0 3.5 16.5 |
||||
|
vertex 2 1.75 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 0 1 |
||||
|
outer loop |
||||
|
vertex 28.5 1.75 16.5 |
||||
|
vertex 30.5 3.5 16.5 |
||||
|
vertex 28.5 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 0 1 |
||||
|
outer loop |
||||
|
vertex 30.5 3.5 16.5 |
||||
|
vertex 28.5 1.75 16.5 |
||||
|
vertex 30.5 0 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal -0 0 1 |
||||
|
outer loop |
||||
|
vertex 2 1.75 16.5 |
||||
|
vertex 30.5 0 16.5 |
||||
|
vertex 28.5 1.75 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 0 1 |
||||
|
outer loop |
||||
|
vertex 2 1.75 16.5 |
||||
|
vertex 0 0 16.5 |
||||
|
vertex 30.5 0 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 0 1 |
||||
|
outer loop |
||||
|
vertex 0 0 16.5 |
||||
|
vertex 2 1.75 16.5 |
||||
|
vertex 0 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 1 -0 0 |
||||
|
outer loop |
||||
|
vertex 30.5 0 16.5 |
||||
|
vertex 30.5 3.5 0 |
||||
|
vertex 30.5 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 1 0 0 |
||||
|
outer loop |
||||
|
vertex 30.5 3.5 0 |
||||
|
vertex 30.5 0 16.5 |
||||
|
vertex 30.5 0 0 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 0 |
||||
|
outer loop |
||||
|
vertex 30.5 3.5 16.5 |
||||
|
vertex 28.5 3.5 15 |
||||
|
vertex 28.5 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 0 |
||||
|
outer loop |
||||
|
vertex 28.5 3.5 15 |
||||
|
vertex 30.5 3.5 0 |
||||
|
vertex 2 3.5 15 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 -0 |
||||
|
outer loop |
||||
|
vertex 30.5 3.5 0 |
||||
|
vertex 28.5 3.5 15 |
||||
|
vertex 30.5 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 -0 |
||||
|
outer loop |
||||
|
vertex 2 3.5 15 |
||||
|
vertex 0 3.5 16.5 |
||||
|
vertex 2 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 0 |
||||
|
outer loop |
||||
|
vertex 2 3.5 15 |
||||
|
vertex 0 3.5 0 |
||||
|
vertex 0 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 0 |
||||
|
outer loop |
||||
|
vertex 0 3.5 0 |
||||
|
vertex 2 3.5 15 |
||||
|
vertex 30.5 3.5 0 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 0 -1 |
||||
|
outer loop |
||||
|
vertex 0 0 0 |
||||
|
vertex 30.5 3.5 0 |
||||
|
vertex 30.5 0 0 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal -0 0 -1 |
||||
|
outer loop |
||||
|
vertex 30.5 3.5 0 |
||||
|
vertex 0 0 0 |
||||
|
vertex 0 3.5 0 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 -1 0 |
||||
|
outer loop |
||||
|
vertex 0 0 0 |
||||
|
vertex 30.5 0 16.5 |
||||
|
vertex 0 0 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 -1 -0 |
||||
|
outer loop |
||||
|
vertex 30.5 0 16.5 |
||||
|
vertex 0 0 0 |
||||
|
vertex 30.5 0 0 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 1 -0 0 |
||||
|
outer loop |
||||
|
vertex 2 1.75 16.5 |
||||
|
vertex 2 3.5 15 |
||||
|
vertex 2 3.5 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 1 0 0 |
||||
|
outer loop |
||||
|
vertex 2 3.5 15 |
||||
|
vertex 2 1.75 16.5 |
||||
|
vertex 2 1.75 15 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal -1 0 0 |
||||
|
outer loop |
||||
|
vertex 28.5 1.75 15 |
||||
|
vertex 28.5 3.5 16.5 |
||||
|
vertex 28.5 3.5 15 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal -1 -0 0 |
||||
|
outer loop |
||||
|
vertex 28.5 3.5 16.5 |
||||
|
vertex 28.5 1.75 15 |
||||
|
vertex 28.5 1.75 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal -0 0 1 |
||||
|
outer loop |
||||
|
vertex 2 3.5 15 |
||||
|
vertex 28.5 1.75 15 |
||||
|
vertex 28.5 3.5 15 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 0 1 |
||||
|
outer loop |
||||
|
vertex 28.5 1.75 15 |
||||
|
vertex 2 3.5 15 |
||||
|
vertex 2 1.75 15 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 -0 |
||||
|
outer loop |
||||
|
vertex 28.5 1.75 15 |
||||
|
vertex 2 1.75 16.5 |
||||
|
vertex 28.5 1.75 16.5 |
||||
|
endloop |
||||
|
endfacet |
||||
|
facet normal 0 1 0 |
||||
|
outer loop |
||||
|
vertex 2 1.75 16.5 |
||||
|
vertex 28.5 1.75 15 |
||||
|
vertex 2 1.75 15 |
||||
|
endloop |
||||
|
endfacet |
||||
|
endsolid OpenSCAD_Model |
@ -0,0 +1,35 @@ |
|||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// LED illuminator to hide the LED from the receiver diode. |
||||
|
// |
||||
|
// Author: Maximilian Stiefel |
||||
|
// Last modification: 22.06.2017 |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Includes |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Vars |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
$fa = 0.5; // minimum facet angle is now 0.5 |
||||
|
$fs = 0.5; // minimum facet size is now 0.5 mm |
||||
|
|
||||
|
holder_height = 15; |
||||
|
holder_diameter = 8.5; |
||||
|
holder_hole_diameter = 6.5; // LED with 5 mm diameter should fit in |
||||
|
holder_slot_width = 1; |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Action |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
difference() |
||||
|
{ |
||||
|
cylinder(h = holder_height, r = holder_diameter/2, 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); |
||||
|
} |
||||
|
} |
@ -0,0 +1,31 @@ |
|||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Spacer for PCBs. |
||||
|
// |
||||
|
// Author: Maximilian Stiefel |
||||
|
// Last modification: 22.06.2017 |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Includes |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Vars |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
$fa = 0.5; // minimum facet angle is now 0.5 |
||||
|
$fs = 0.5; // minimum facet size is now 0.5 mm |
||||
|
|
||||
|
spacer_height = 15; |
||||
|
spacer_diameter = 5; |
||||
|
spacer_hole_diameter = 3.2; // standard hole size for M3 |
||||
|
|
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
// Action |
||||
|
///////////////////////////////////////////////////////////////////////////////// |
||||
|
difference() |
||||
|
{ |
||||
|
cylinder(h = spacer_height, r = spacer_diameter/2, center = true); |
||||
|
translate([0, 0, 0]) |
||||
|
cylinder(h = spacer_height + 2, r = spacer_hole_diameter/2, center = true); |
||||
|
} |
||||
|
|