Parcourir la source

improved 15mm firework launcher

Thomas Buck il y a 6 ans
Parent
révision
1f86d6e8bf
2 fichiers modifiés avec 45154 ajouts et 10269 suppressions
  1. 69
    72
      firework_15mm/firework_15mm.scad
  2. 45085
    10197
      firework_15mm/firework_15mm.stl

+ 69
- 72
firework_15mm/firework_15mm.scad Voir le fichier

@@ -1,51 +1,93 @@
1 1
 
2 2
 charge_dia = 16.2;
3
-charge_height = 55.0;
3
+charge_height = 42.0;
4 4
 charge_wall = 2.5;
5 5
 
6
-ignite_dia = 6.8;
7
-ignite_height = 17.0;
6
+base_add = 2.5;
7
+bottom_pins = 3.0;
8
+
9
+ignite_dia = 7.0;
10
+ignite_height = 20.0;
8 11
 ignite_wall = 1.2;
9 12
 
10 13
 cable_dia = 5.0;
14
+cable_width = 2.0;
11 15
 
12
-base_width = 25;
13
-base_height = 10.0;
14
-base_wall = 3.0;
15
-
16
-hole_dia = 5.0;
17
-hole_len = 8.0;
16
+hole_dia = 7.0;
17
+hole_len = 15.0;
18 18
 hole_angle = 45.0;
19
-hole_off = 2.0;
20
-hole_off2 = 5.0;
19
+hole_off = 4.0;
20
+hole_off2 = 2.0;
21
+
22
+mount_height = 2.0;
23
+mount_width = 6.0;
24
+mount_len = 10.0;
25
+mount_hole = 3.2;
21 26
 
22 27
 $fn = 42;
23 28
 
24
-module charge() {
25
-    difference() {
26
-        cylinder(d = charge_dia + (2 * charge_wall), h = charge_height + charge_wall);
27
-        
28
-        translate([0, 0, charge_wall])
29
-        cylinder(d = charge_dia, h = charge_height + 1);
30
-        
31
-        translate([0, 0, -1])
32
-        cylinder(d = cable_dia, h = charge_wall + 2);
33
-        
29
+module gas_holes() {
34 30
         translate([charge_dia / 2 + charge_wall + hole_off, 0, hole_off2])
35 31
         rotate([0, -hole_angle, 0])
36 32
         cylinder(d = hole_dia, h = hole_len);
37
-        
38 33
         translate([-charge_dia / 2 - charge_wall - hole_off, 0, hole_off2])
39 34
         rotate([0, hole_angle, 0])
40 35
         cylinder(d = hole_dia, h = hole_len);
41
-        
42 36
         translate([0, charge_dia / 2 + charge_wall + hole_off, hole_off2])
43 37
         rotate([hole_angle, 0, 0])
44 38
         cylinder(d = hole_dia, h = hole_len);
45
-        
46 39
         translate([0, -charge_dia / 2 - charge_wall - hole_off, hole_off2])
47 40
         rotate([-hole_angle, 0, 0])
48 41
         cylinder(d = hole_dia, h = hole_len);
42
+}
43
+
44
+module mount_tabs() {
45
+    for (i = [0 : 90 : 360]) {
46
+        rotate([0, 0, i + 45])
47
+        translate([charge_dia / 2, -mount_width / 2, 0])
48
+        difference() {
49
+            union() {
50
+                cube([mount_len, mount_width, mount_height]);
51
+                
52
+                translate([mount_len, mount_width / 2, 0])
53
+                cylinder(d = mount_width, h = mount_height);
54
+            }
55
+            
56
+            translate([mount_len, mount_width / 2, -1])
57
+            cylinder(d = mount_hole, h = mount_height + 2);
58
+        }
59
+    }
60
+}
61
+
62
+module charge() {
63
+    difference() {
64
+        // outer shell
65
+        cylinder(d = charge_dia + (2 * charge_wall), h = charge_height + charge_wall + base_add);
66
+        
67
+        // bore hole
68
+        translate([0, 0, charge_wall + base_add])
69
+        cylinder(d = charge_dia, h = charge_height + 1);
70
+        
71
+        // cable hole
72
+        translate([0, 0, -1])
73
+        cylinder(d = cable_dia, h = charge_wall + base_add + 2);
74
+        
75
+        // cable cut on bottom
76
+        translate([0, -cable_dia / 2, -1])
77
+        cube([charge_dia, cable_dia, cable_width + 1]);
78
+        
79
+        translate([0, 0, base_add])
80
+        gas_holes();
81
+        
82
+        translate([0, 0, charge_height / 2 + base_add])
83
+        gas_holes();
84
+    }
85
+    
86
+    // pins to hold up long charges
87
+    for (i = [0 : 90 : 360]) {
88
+        rotate([0, 0, i + 45])
89
+        translate([(charge_dia - bottom_pins) / 2, 0, charge_wall + base_add])
90
+        sphere(d = bottom_pins);
49 91
     }
50 92
 }
51 93
 
@@ -64,55 +106,10 @@ module ignite() {
64 106
 module top() {
65 107
     charge();
66 108
 
67
-    translate([0, 0, charge_wall])
109
+    translate([0, 0, charge_wall + base_add])
68 110
     ignite();
69
-}
70
-
71
-module pillars() {
72
-    hull() {
73
-        cube([base_wall, base_wall, base_wall]);
74
-        
75
-        translate([base_width / 2, base_width / 2, base_height + base_wall])
76
-        cylinder(d = charge_dia + (2 * charge_wall), h = 1);
77
-    }
78
-    
79
-    hull() {
80
-        translate([base_width - base_wall, 0, 0])
81
-        cube([base_wall, base_wall, base_wall]);
82
-        
83
-        translate([base_width / 2, base_width / 2, base_height + base_wall])
84
-        cylinder(d = charge_dia + (2 * charge_wall), h = 1);
85
-    }
86
-    
87
-    hull() {
88
-        translate([0, base_width - base_wall, 0])
89
-        cube([base_wall, base_wall, base_wall]);
90
-        
91
-        translate([base_width / 2, base_width / 2, base_height + base_wall])
92
-        cylinder(d = charge_dia + (2 * charge_wall), h = 1);
93
-    }
94
-    
95
-    hull() {
96
-        translate([base_width - base_wall, base_width - base_wall, 0])
97
-        cube([base_wall, base_wall, base_wall]);
98
-        
99
-        translate([base_width / 2, base_width / 2, base_height + base_wall])
100
-        cylinder(d = charge_dia + (2 * charge_wall), h = 1);
101
-    }
102
-}
103
-
104
-module base() {
105
-    cube([base_width, base_width, base_wall]);
106
-    
107
-    difference() {
108
-        pillars();
109
-        
110
-        translate([base_width / 2, base_width / 2, base_wall + 1])
111
-        cylinder(d = cable_dia, h = base_height + 2);
112
-    }
113 111
     
114
-    translate([base_width / 2, base_width / 2, base_height + base_wall])
115
-    top();
112
+    mount_tabs();
116 113
 }
117 114
 
118
-base();
115
+top();

+ 45085
- 10197
firework_15mm/firework_15mm.stl
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


Chargement…
Annuler
Enregistrer