Browse Source

Small adoptions for the glass silde to be put on the analog PCB directly.

master
Maximilian Stiefel 7 years ago
parent
commit
cd183a56c7
  1. 1752
      cad/etching_machine/v1.0/PCB Holder Crossbar.svg
  2. 1825
      cad/etching_machine/v1.0/PCB Holder.svg
  3. 18
      cad/etching_machine/v1.0/pcb_holder_crossbar.scad
  4. 86
      cad/etching_machine/v1.0/pcb_holder_crossbar.stl
  5. 87
      cad/etching_machine/v1.0/pcb_holder_holder_l.scad
  6. 1374
      cad/etching_machine/v1.0/pcb_holder_holder_l.stl
  7. 87
      cad/etching_machine/v1.0/pcb_holder_holder_r.scad
  8. 1374
      cad/etching_machine/v1.0/pcb_holder_holder_r.stl
  9. 91
      cad/etching_machine/v2.0/dimensions.scad
  10. 17
      cad/etching_machine/v2.0/pcb_holder_crossbar.scad
  11. 86
      cad/etching_machine/v2.0/pcb_holder_crossbar.stl
  12. 1749
      cad/etching_machine/v2.0/pcb_holder_crossbar.svg
  13. 41
      cad/etching_machine/v2.0/pcb_holder_floor_prot.scad
  14. 136236
      cad/etching_machine/v2.0/pcb_holder_floor_prot.stl
  15. 1726
      cad/etching_machine/v2.0/pcb_holder_floor_prot.svg
  16. 1863
      cad/etching_machine/v2.0/pcb_holder_holder.svg
  17. 88
      cad/etching_machine/v2.0/pcb_holder_holder_l.scad
  18. 28016
      cad/etching_machine/v2.0/pcb_holder_holder_l.stl
  19. 88
      cad/etching_machine/v2.0/pcb_holder_holder_r.scad
  20. 69
      cad/etching_machine/v2.0/pcb_holder_lid.scad
  21. 243518
      cad/etching_machine/v2.0/pcb_holder_lid.stl
  22. 1883
      cad/etching_machine/v2.0/pcb_holder_lid.svg
  23. 37
      cad/etching_machine/v2.0/roundy.scad
  24. 37
      cad/etching_machine/v2.0/test.step
  25. 46356
      cad/etching_machine/v2.0/uppsla_university.dxf
  26. BIN
      cad/etching_machine/v2.0/uppsla_university.png
  27. 0
      cad/mechanics_rev1/adapter.scad
  28. 0
      cad/mechanics_rev1/adapter.step
  29. 0
      cad/mechanics_rev1/adapter.stl
  30. 0
      cad/mechanics_rev1/adapter_drilling_machine.scad
  31. 0
      cad/mechanics_rev1/adapter_drilling_machine.stl
  32. 0
      cad/mechanics_rev1/housing.scad
  33. 0
      cad/mechanics_rev1/housing.step
  34. 0
      cad/mechanics_rev1/housing.stl
  35. 0
      cad/mechanics_rev1/lid.scad
  36. 0
      cad/mechanics_rev1/lid.step
  37. 0
      cad/mechanics_rev1/lid.stl
  38. 0
      cad/mechanics_rev1/mech_sketch_0.png
  39. 0
      cad/mechanics_rev1/mech_sketch_1.png
  40. 0
      cad/mechanics_rev1/mech_sketch_2.png
  41. 0
      cad/mechanics_rev1/mech_sketch_3.png
  42. 0
      cad/mechanics_rev1/mech_sketch_4.png
  43. 0
      cad/mechanics_rev1/mech_sketch_5.png
  44. 0
      cad/mechanics_rev1/open_box.scad
  45. 35
      cad/mechanics_rev2/glass_slide_holder.scad
  46. 198
      cad/mechanics_rev2/glass_slide_holder.stl
  47. 35
      cad/mechanics_rev2/led_illuminator.scad
  48. 2634
      cad/mechanics_rev2/led_illuminator.stl
  49. 31
      cad/mechanics_rev2/spacers.scad
  50. 1486
      cad/mechanics_rev2/spacers.stl
  51. 20
      pcbs/analog_board/analog_board.kicad_pcb
  52. 6
      pcbs/analog_board/analog_board.kicad_pcb-bak
  53. BIN
      pcbs/analog_board/output/mechanical_drawing.pdf

1752
cad/etching_machine/v1.0/PCB Holder Crossbar.svg

File diff suppressed because it is too large

Before

Width:  |  Height:  |  Size: 79 KiB

1825
cad/etching_machine/v1.0/PCB Holder.svg

File diff suppressed because it is too large

Before

Width:  |  Height:  |  Size: 86 KiB

18
cad/etching_machine/v1.0/pcb_holder_crossbar.scad

@ -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);

86
cad/etching_machine/v1.0/pcb_holder_crossbar.stl

@ -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

87
cad/etching_machine/v1.0/pcb_holder_holder_l.scad

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

1374
cad/etching_machine/v1.0/pcb_holder_holder_l.stl

File diff suppressed because it is too large

87
cad/etching_machine/v1.0/pcb_holder_holder_r.scad

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

1374
cad/etching_machine/v1.0/pcb_holder_holder_r.stl

File diff suppressed because it is too large

91
cad/etching_machine/v2.0/dimensions.scad

@ -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";

17
cad/etching_machine/v2.0/pcb_holder_crossbar.scad

@ -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);

86
cad/etching_machine/v2.0/pcb_holder_crossbar.stl

@ -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

1749
cad/etching_machine/v2.0/pcb_holder_crossbar.svg

File diff suppressed because it is too large

Before

Width:  |  Height:  |  Size: 79 KiB

41
cad/etching_machine/v2.0/pcb_holder_floor_prot.scad

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

136236
cad/etching_machine/v2.0/pcb_holder_floor_prot.stl

File diff suppressed because it is too large

1726
cad/etching_machine/v2.0/pcb_holder_floor_prot.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 131 KiB

1863
cad/etching_machine/v2.0/pcb_holder_holder.svg

File diff suppressed because it is too large

Before

Width:  |  Height:  |  Size: 89 KiB

88
cad/etching_machine/v2.0/pcb_holder_holder_l.scad

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

28016
cad/etching_machine/v2.0/pcb_holder_holder_l.stl

File diff suppressed because it is too large

88
cad/etching_machine/v2.0/pcb_holder_holder_r.scad

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

69
cad/etching_machine/v2.0/pcb_holder_lid.scad

@ -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]);
}
}

243518
cad/etching_machine/v2.0/pcb_holder_lid.stl

File diff suppressed because it is too large

1883
cad/etching_machine/v2.0/pcb_holder_lid.svg

File diff suppressed because it is too large

Before

Width:  |  Height:  |  Size: 88 KiB

37
cad/etching_machine/v2.0/roundy.scad

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

37
cad/etching_machine/v2.0/test.step

@ -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;

46356
cad/etching_machine/v2.0/uppsla_university.dxf

File diff suppressed because it is too large

BIN
cad/etching_machine/v2.0/uppsla_university.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

0
cad/adapter.scad → cad/mechanics_rev1/adapter.scad

0
cad/adapter.step → cad/mechanics_rev1/adapter.step

0
cad/adapter.stl → cad/mechanics_rev1/adapter.stl

0
cad/adapter_drilling_machine.scad → cad/mechanics_rev1/adapter_drilling_machine.scad

0
cad/adapter_drilling_machine.stl → cad/mechanics_rev1/adapter_drilling_machine.stl

0
cad/housing.scad → cad/mechanics_rev1/housing.scad

0
cad/housing.step → cad/mechanics_rev1/housing.step

0
cad/housing.stl → cad/mechanics_rev1/housing.stl

0
cad/lid.scad → cad/mechanics_rev1/lid.scad

0
cad/lid.step → cad/mechanics_rev1/lid.step

0
cad/lid.stl → cad/mechanics_rev1/lid.stl

0
cad/mech_sketch_0.png → cad/mechanics_rev1/mech_sketch_0.png

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
cad/mech_sketch_1.png → cad/mechanics_rev1/mech_sketch_1.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
cad/mech_sketch_2.png → cad/mechanics_rev1/mech_sketch_2.png

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

0
cad/mech_sketch_3.png → cad/mechanics_rev1/mech_sketch_3.png

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

0
cad/mech_sketch_4.png → cad/mechanics_rev1/mech_sketch_4.png

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

0
cad/mech_sketch_5.png → cad/mechanics_rev1/mech_sketch_5.png

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

0
cad/open_box.scad → cad/mechanics_rev1/open_box.scad

35
cad/mechanics_rev2/glass_slide_holder.scad

@ -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]);
}

198
cad/mechanics_rev2/glass_slide_holder.stl

@ -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

35
cad/mechanics_rev2/led_illuminator.scad

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

2634
cad/mechanics_rev2/led_illuminator.stl

File diff suppressed because it is too large

31
cad/mechanics_rev2/spacers.scad

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

1486
cad/mechanics_rev2/spacers.stl

File diff suppressed because it is too large

20
pcbs/analog_board/analog_board.kicad_pcb

@ -5,7 +5,7 @@
(no_connects 0)
(area 87.150001 71.8 191.85 137.700001)
(thickness 1.6)
(drawings 22)
(drawings 23)
(tracks 179)
(zones 0)
(modules 54)
@ -31,13 +31,13 @@
(44 Edge.Cuts user)
(45 Margin user hide)
(46 B.CrtYd user hide)
(47 F.CrtYd user hide)
(47 F.CrtYd user)
(48 B.Fab user hide)
(49 F.Fab user hide)
(49 F.Fab user)
)
(setup
(last_trace_width 0.3)
(last_trace_width 0.25)
(user_trace_width 0.2)
(user_trace_width 0.3)
(user_trace_width 0.5)
@ -1594,6 +1594,18 @@
(net 2 GND))
)
(dimension 35 (width 0.3) (layer Dwgs.User)
(gr_text "35,000 mm" (at 117.5 109.35) (layer Dwgs.User)
(effects (font (size 1.5 1.5) (thickness 0.3)))
)
(feature1 (pts (xy 100 105) (xy 100 110.7)))
(feature2 (pts (xy 135 105) (xy 135 110.7)))
(crossbar (pts (xy 135 108) (xy 100 108)))
(arrow1a (pts (xy 100 108) (xy 101.126504 107.413579)))
(arrow1b (pts (xy 100 108) (xy 101.126504 108.586421)))
(arrow2a (pts (xy 135 108) (xy 133.873496 107.413579)))
(arrow2b (pts (xy 135 108) (xy 133.873496 108.586421)))
)
(gr_text "< 1" (at 124.714 100.33) (layer F.Cu)
(effects (font (size 0.8 0.8) (thickness 0.1)) (justify left))
)

6
pcbs/analog_board/analog_board.kicad_pcb-bak

@ -3,7 +3,7 @@
(general
(links 90)
(no_connects 0)
(area 99.949999 79.949999 180.050001 130.050001)
(area 87.150001 71.8 191.85 137.700001)
(thickness 1.6)
(drawings 22)
(tracks 179)
@ -72,7 +72,7 @@
(aux_axis_origin 0 0)
(visible_elements FFFFFF1F)
(pcbplotparams
(layerselection 0x00030_80000001)
(layerselection 0x00000_80000001)
(usegerberextensions false)
(excludeedgelayer true)
(linewidth 0.100000)
@ -91,7 +91,7 @@
(plotinvisibletext false)
(padsonsilk false)
(subtractmaskfromsilk false)
(outputformat 1)
(outputformat 2)
(mirror false)
(drillshape 1)
(scaleselection 1)

BIN
pcbs/analog_board/output/mechanical_drawing.pdf

Binary file not shown.
Loading…
Cancel
Save