Browse Source

Added simple optical Filament Runout Sensor

Thomas Buck 8 years ago
parent
commit
802adee79e
3 changed files with 5132 additions and 0 deletions
  1. 1626
    0
      Filament Sensor/Filament Flag.stl
  2. 144
    0
      Filament Sensor/Filament Sensor.scad
  3. 3362
    0
      Filament Sensor/Filament Sensor.stl

+ 1626
- 0
Filament Sensor/Filament Flag.stl
File diff suppressed because it is too large
View File


+ 144
- 0
Filament Sensor/Filament Sensor.scad View File

@@ -0,0 +1,144 @@
1
+
2
+sensor_width = 7;
3
+sensor_tower_width = 4.5;
4
+sensor_length = 25;
5
+sensor_height = 11;
6
+sensor_gap = 3;
7
+sensor_bottom = 3.5;
8
+sensor_hole_diameter = 3;
9
+sensor_hole_distance = 2.4;
10
+
11
+pcb_width = 10.5;
12
+pcb_length = 33;
13
+pcb_height = 1.8;
14
+pcb_sensor_x = 0.25;
15
+pcb_conn_x = 0.7;
16
+conn_length = 5.8;
17
+conn_height = 7;
18
+
19
+filament_width = 2;
20
+wall_size = 2;
21
+filament_top_distance = 3;
22
+sensor_y_gap = 0.2;
23
+
24
+flag_wall = 0.75;
25
+flag_width = 6.5;
26
+flag_gap = 2;
27
+flag_height = 5;
28
+
29
+part = "flag"; // "gantry" or "flag"
30
+
31
+$fn = 25;
32
+
33
+module sensor() {
34
+    difference() {
35
+        cube([sensor_length, sensor_width, sensor_bottom]);
36
+        
37
+        translate([sensor_hole_distance, sensor_width / 2, -1])
38
+            cylinder(d = sensor_hole_diameter, h = sensor_bottom + 2);
39
+        
40
+        translate([sensor_length - sensor_hole_distance, sensor_width / 2, -1])
41
+            cylinder(d = sensor_hole_diameter, h = sensor_bottom + 2);
42
+    }
43
+    
44
+    translate([(sensor_length - sensor_gap - (2 * sensor_tower_width)) / 2, 0, sensor_bottom])
45
+        cube([sensor_tower_width, sensor_width, sensor_height - sensor_bottom]);
46
+    
47
+    translate([(sensor_length - sensor_gap - (2 * sensor_tower_width)) / 2 + sensor_gap + sensor_tower_width, 0, sensor_bottom])
48
+        cube([sensor_tower_width, sensor_width, sensor_height - sensor_bottom]);
49
+}
50
+
51
+module pcb() {
52
+    difference() {
53
+        cube([pcb_length, pcb_width, pcb_height]);
54
+        
55
+        translate([pcb_length - sensor_length - pcb_sensor_x, (pcb_width - sensor_width) / 2, 0])
56
+            translate([sensor_hole_distance, sensor_width / 2, -1])
57
+            cylinder(d = sensor_hole_diameter, h = pcb_height + 2);
58
+        
59
+        translate([pcb_length - sensor_length - pcb_sensor_x, (pcb_width - sensor_width) / 2, 0])
60
+            translate([sensor_length - sensor_hole_distance, sensor_width / 2, -1])
61
+            cylinder(d = sensor_hole_diameter, h = pcb_height + 2);
62
+    }
63
+    
64
+    translate([pcb_length - sensor_length - pcb_sensor_x, (pcb_width - sensor_width) / 2, pcb_height])
65
+        sensor();
66
+    
67
+    translate([pcb_conn_x, 0, -conn_height])
68
+        cube([conn_length, pcb_width, conn_height]);
69
+}
70
+
71
+module gantry() {
72
+    difference() {
73
+        cube([sensor_hole_diameter + wall_size, sensor_width + (2 * wall_size), wall_size]);
74
+        
75
+        translate([sensor_hole_distance, wall_size + (sensor_width / 2), -1])
76
+            cylinder(d = sensor_hole_diameter, h = wall_size + 2);
77
+    }
78
+    
79
+    difference() {
80
+        translate([sensor_length - sensor_hole_diameter - wall_size, 0, 0])
81
+            cube([sensor_hole_diameter + wall_size, sensor_width + (2 * wall_size), wall_size]);
82
+        
83
+        translate([sensor_length - sensor_hole_distance, wall_size + (sensor_width / 2), -1])
84
+            cylinder(d = sensor_hole_diameter, h = wall_size + 2);
85
+    }
86
+    
87
+    translate([sensor_hole_diameter + wall_size, 0, 0])
88
+        cube([sensor_length - (2 * (sensor_hole_diameter + wall_size)), wall_size - sensor_y_gap, wall_size]);
89
+    
90
+    translate([sensor_hole_diameter + wall_size, sensor_width + wall_size + sensor_y_gap, 0])
91
+        cube([sensor_length - (2 * (sensor_hole_diameter + wall_size)), wall_size - sensor_y_gap, wall_size]);
92
+    
93
+    difference() {
94
+        translate([sensor_length - (2 * (sensor_tower_width + sensor_gap)), 0, wall_size])
95
+            cube([sensor_gap + wall_size, wall_size - sensor_y_gap, sensor_height - sensor_bottom - wall_size]);
96
+        
97
+        translate([sensor_length / 2, wall_size + 1, sensor_height - sensor_bottom - filament_top_distance])
98
+            rotate([90, 0, 0])
99
+            cylinder(d = filament_width, h = wall_size + 2);
100
+    }
101
+    
102
+    difference() {
103
+        translate([sensor_length - (2 * (sensor_tower_width + sensor_gap)), sensor_width + wall_size + sensor_y_gap, wall_size])
104
+            cube([sensor_gap + wall_size, wall_size - sensor_y_gap, sensor_height - sensor_bottom - wall_size]);
105
+        
106
+        translate([sensor_length / 2, sensor_width + (2 * wall_size) + 1, sensor_height - sensor_bottom - filament_top_distance])
107
+            rotate([90, 0, 0])
108
+            cylinder(d = filament_width, h = wall_size + 2);
109
+    }
110
+}
111
+
112
+module flag() {
113
+    translate([sensor_length / 2, flag_width + wall_size + (sensor_width - flag_width) / 2, sensor_height - sensor_bottom - filament_top_distance])
114
+    rotate([90, 0, 0])
115
+    union() {
116
+        difference() {
117
+            translate([-sensor_gap / 4, (filament_width + flag_wall) / 2 - 0.3, 0])
118
+                cube([sensor_gap / 2, flag_height, flag_width]);
119
+            
120
+            translate([-sensor_gap / 4 - 1, (filament_width + flag_wall) / 2 - 0.3, (flag_width - flag_gap) / 2])
121
+                cube([sensor_gap / 2 + 2, flag_height + 1, flag_gap]);
122
+        }
123
+        difference() {
124
+            cylinder(d = filament_width + flag_wall, h = flag_width);
125
+            translate([0, 0, -1])
126
+                cylinder(d = filament_width / 2, h = flag_width + 2);
127
+        }
128
+    }
129
+}
130
+
131
+%translate([-(pcb_length - sensor_length - pcb_sensor_x), (-(pcb_width - sensor_width) / 2) + wall_size, -pcb_height - sensor_bottom])
132
+    pcb();
133
+
134
+if (part == "gantry") {
135
+    gantry();
136
+} else {
137
+    %gantry();
138
+}
139
+
140
+if (part == "flag") {
141
+    flag();
142
+} else {
143
+    flag();
144
+}

+ 3362
- 0
Filament Sensor/Filament Sensor.stl
File diff suppressed because it is too large
View File


Loading…
Cancel
Save