Browse Source

bunch of changes to 3d model. firmware now has min and max speed setting.

Thomas Buck 1 year ago
parent
commit
4f936dc58f
4 changed files with 364 additions and 60 deletions
  1. 40
    8
      README.md
  2. 6
    2
      firmware/OpenChrono/OpenChrono.ino
  3. 9
    0
      firmware/OpenChrono/config.h
  4. 309
    50
      hardware/openchrono.scad

+ 40
- 8
README.md View File

@@ -24,7 +24,7 @@ Besides some common stuff like soldering wire and hotglue you need the following
24 24
 | IR Phototransistor | SFH 309 FA-5  | 2x    |
25 25
 | IR LED 3mm         |               | 2x    |
26 26
 | Resistor           | 1k Ohm        | 2x    |
27
-| Resistor           | 100 Ohm       | 1x    |
27
+| Resistor           | 50 Ohm        | 1x    |
28 28
 | Screw              | M2 10mm       | 4x    |
29 29
 | Screw              | M2.5 10mm     | 2x    |
30 30
 | Screw              | M3 16mm       | 8x    |
@@ -35,16 +35,16 @@ For the UV tracer option you also need the following parts.
35 35
 | Description | Type    | Count |
36 36
 | ----------- | ------- | ----- |
37 37
 | UV LED 3mm  |         | 2x    |
38
-| Resistor    | 100 Ohm | 1x    |
38
+| Resistor    | 50 Ohm  | 1x    |
39 39
 
40 40
 You have different options for powering the project.
41 41
 My first version for testing uses a pre-made AA battery holder.
42 42
 
43
-| Description    | Type   | Count |
44
-| -------------- | ------ | ----- |
45
-| AA Battery     |        | 3x    |
46
-| AA Bat. Holder |        | 1x    |
47
-| Screw (sunk)   | M3 6mm | 2x    |
43
+| Description    | Type      | Count |
44
+| -------------- | --------- | ----- |
45
+| AA Battery     |           | 3x    |
46
+| AA Bat. Holder |           | 1x    |
47
+| Screw (sunk)   | M3 <= 6mm | 2x    |
48 48
 
49 49
 The originally intended variant is a AAA battery holder printed into the model.
50 50
 I don't have the terminals for that yet so it is not finished.
@@ -55,11 +55,43 @@ I don't have the terminals for that yet so it is not finished.
55 55
 | Bat. Terminal Neg. |      | 3x    |
56 56
 | Bat. Terminal Pos. |      | 3x    |
57 57
 
58
-I'm also looking to design a LiPo version with charger included in the future.
58
+The AA and AAA options are not recommended due to their bulk and weight!
59
+They also have problems with disconnections on firing impulses.
60
+
61
+The preferred version uses a single LiPo cell and a charger PCB.
62
+
63
+| Description     | Type      | Count |
64
+| --------------- | --------- | ----- |
65
+| LiPo Battery    | 600mAh    | 1x    |
66
+| Resistor SMD    | 4k Ohm    | 1x    |
67
+| Charging Module | TP4056    | 1x    |
68
+| Screw           | M3 <= 6mm | 4x    |
69
+
70
+Be careful though!
71
+If you use the LiPo charger board, they normally come with the charge current set to 1A with a 1.2k Ohm resistor.
72
+You need to put in a higher valued resistor instead, otherwise the small battery will be charged with far too much current and the charger will get very hot.
73
+I recommend 4k Ohm or more.
74
+See [this page for more info](https://www.best-microcontroller-projects.com/tp4056.html#TP4056_Current_Programming_Resistor).
59 75
 
60 76
 [![Breadboard](electronics/OpenChrono_bb.png)](electronics/OpenChrono_bb.png)
61 77
 [![Schematics](electronics/OpenChrono_schem.png)](electronics/OpenChrono_schem.png)
62 78
 
79
+### Resistor Values
80
+
81
+The proper values for the IR LED current-limiting resistors, as well as the pull-up resistors for the phototransistors depend on the exact parts used.
82
+We want to run the transistor in "switch mode", as [described here](https://www.electronics-notes.com/articles/electronic_components/transistor/phototransistor-circuits-applications.php).
83
+So we need to keep the pull-up value low enough that it quickly is able to pull the IO back to high when the BB passes.
84
+At the same time we also want the LED resistor as low as possible, so the transistor properly switches the IO to low when the light is shining on it.
85
+
86
+I built a first prototype with potis instead of resistors on the outside of the case, to be able to adjust the values while measuring the outputs with an oscilloscope.
87
+Using this setup, I arrived at values of 100 Ohm for the LEDs at 4V supply voltage, and 1k Ohm for the phototransistors.
88
+When I later ran again with batteries that had a bit lower voltage, it no longer worked reliably.
89
+So for use with 3x AA(A) batteries, I went down to 50 Ohm for the LEDs.
90
+
91
+Also note the type of the phototransistor, "SFH 309 FA-5".
92
+The '5' at the end gives the current that passes when light shines on the sensor, in this case 1.6mA - 3.2mA.
93
+So if you use a different sensor you will probably have to adjust the resistor values!
94
+
63 95
 ## Software
64 96
 
65 97
 This project uses the [U8g2 library by olikraus](https://github.com/olikraus/u8g2) to draw to the I2C OLED display.

+ 6
- 2
firmware/OpenChrono/OpenChrono.ino View File

@@ -26,8 +26,12 @@ static void calculate(uint16_t a, uint16_t b) {
26 26
         ticks = (uint16_t)tmp;
27 27
     }
28 28
 
29
-    tick_new_value(ticks);
30
-    lcd_new_value();
29
+    double speed = tick_to_metric(ticks);
30
+    if ((speed >= MIN_SPEED) && (speed <= MAX_SPEED)) {
31
+        // only register realistic velocities
32
+        tick_new_value(ticks);
33
+        lcd_new_value();
34
+    }
31 35
 }
32 36
 
33 37
 static void measure() {

+ 9
- 0
firmware/OpenChrono/config.h View File

@@ -77,9 +77,18 @@
77 77
 
78 78
 // --------------------------------------
79 79
 
80
+// with a prescaler of 1, we can measure from 17m/s to 1120000m/s
81
+// with a prescaler of 8, we can measure from 2.14m/s to 140000m/s
82
+// with a prescaler of 64, we can measure from 0.27m/s to 17500m/s
83
+// see comment in ticks.cpp
84
+
80 85
 // allowed values: 1, 8, 64, 256, 1024
81 86
 #define TIMER_PRESCALER 64
82 87
 
88
+// values outside this range will be ignored
89
+#define MIN_SPEED 0.3 /* in m/s */
90
+#define MAX_SPEED 2000.0 /* in m/s */
91
+
83 92
 // --------------------------------------
84 93
 
85 94
 // placeholder data for debugging purposes

+ 309
- 50
hardware/openchrono.scad View File

@@ -56,31 +56,40 @@ switch_screw_l = 10.0;
56 56
 switch_screw_d = 15.0;
57 57
 switch_off = 15;
58 58
 
59
-bat_h = bat_l + bat_spring_dist + 2 * bat_wall + 2 * bat_tab_d;
60
-
61
-$fn = 42;
62
-
63
-echo("sensor_distance", height - 2 * led_off);
64
-
65
-// https://dkprojects.net/openscad-threads/ 
66
-include <extern/threads.scad>
67
-
68 59
 // 1911
69 60
 thread_profile_1911 = [
70 61
     true, // type is_male
71 62
     12.0, // diameter
72 63
     1.0, // pitch
73 64
     0.0, // offset
74
-    9.0 // length
65
+    9.0, // length
66
+    0.0, // offset dia
67
+    9.1, // inner hole
68
+    true, // is cw thread
75 69
 ];
76 70
 
77
-// M14x1.0 female thread
78
-thread_profile_m14 = [
71
+// M14x1.0 CW female thread
72
+thread_profile_m14_cw = [
79 73
     false, // type is_male
80 74
     14.0, // diameter
81 75
     1.0, // pitch
82 76
     0.0, // offset
83
-    12.0 // length
77
+    12.0, // length
78
+    0.0, // offset dia
79
+    8.5, // inner hole
80
+    true, // is cw thread
81
+];
82
+
83
+// M14x1.0 CCW female thread
84
+thread_profile_m14_ccw = [
85
+    false, // type is_male
86
+    14.0, // diameter
87
+    1.0, // pitch
88
+    0.0, // offset
89
+    12.0, // length
90
+    0.0, // offset dia
91
+    8.5, // inner hole
92
+    false, // is cw thread
84 93
 ];
85 94
 
86 95
 // ASG / KWC Cobray Ingram M11 CO2 NBB 6mm
@@ -88,17 +97,30 @@ thread_profile_mac11 = [
88 97
     false, // type is_male
89 98
     16.5, // diameter
90 99
     1.5, // pitch
91
-    8.0, // offset
92
-    10.0 // length
100
+    9.0, // offset
101
+    10.0, // length
102
+    20.0, // offset dia
103
+    8.5, // inner hole
104
+    true, // is cw thread
93 105
 ];
94 106
 
95
-// debug / testing
96
-thread_profile_none = [ false, 0, 0, 0, 0 ];
107
+thread_profile_giant = [
108
+    false, // type is_male
109
+    34.0, // diameter
110
+    1.0, // pitch
111
+    0.0, // offset
112
+    10.0, // length
113
+    0.0, // offset dia
114
+    8.5, // inner hole
115
+    true, // is cw thread
116
+];
97 117
 
98 118
 thread_profiles = [
99 119
     thread_profile_1911,
100
-    thread_profile_m14,
101
-    thread_profile_mac11
120
+    thread_profile_m14_cw,
121
+    thread_profile_m14_ccw,
122
+    thread_profile_mac11,
123
+    thread_profile_giant
102 124
 ];
103 125
 
104 126
 thread_base = 5.0;
@@ -114,8 +136,6 @@ thread_adapter_screw_inset = 5;
114 136
 thread_adapter_in_body = 5;
115 137
 thread_adapter_h = body_screw_insert_height - thread_adapter_in_body;
116 138
 
117
-enable_gap_support = true;
118
-
119 139
 text1 = [
120 140
     "OpenChrono",
121 141
     "Liberation Sans:style=Bold",
@@ -131,14 +151,93 @@ text2 = [
131 151
     -60
132 152
 ];
133 153
 
154
+text3 = [
155
+    "OpenChrono",
156
+    "Liberation Sans:style=Bold",
157
+    12.0 - 4,
158
+    1.0,
159
+    70
160
+];
161
+text4 = [
162
+    "by xythobuz.de",
163
+    "Liberation Sans:style=Bold",
164
+    9.0 - 2,
165
+    1.0,
166
+    -70
167
+];
168
+
134 169
 texts_left = [ text1, text2 ];
170
+texts_lipo = [ text3, text4 ];
171
+
172
+lipo_lid_height = 65;
173
+lipo_lid_width = 80;
174
+lipo_lid_d = 3.0;
175
+lipo_lid_gap = 0.5;
176
+lipo_lid_gap_d = 0.2;
177
+
178
+lipo_lid_screw_d_small = 2.8;
179
+lipo_lid_screw_d_big = 3.3;
180
+lipo_lid_screw_area = 10;
181
+lipo_lid_screw_len = 10.0;
182
+lipo_lid_screw_off = 5.0;
183
+
184
+lipo_lid_compartment_d = 15.0;
185
+lipo_lid_compartment_w = lipo_lid_width - 2 * lipo_lid_screw_area - 5;
186
+
187
+lipo_pcb_w = 18.0;
188
+lipo_pcb_h = 29.0;
189
+lipo_pcb_d = 5.0;
190
+lipo_pcb_usb_w = 9.0;
191
+lipo_pcb_usb_h = 3.6;
192
+lipo_pcb_usb_off = 1.4;
193
+lipo_pcb_usb_wall = 1.5;
194
+lipo_pcb_led_dia = 2.0;
195
+lipo_pcb_led_dist = 5.0;
196
+lipo_pcb_led_off_x = 1.75;
197
+lipo_pcb_led_off_z = 7.0;
198
+
199
+lipo_w = 30.0;
200
+lipo_h = 43.0;
201
+lipo_d = 9.0;
135 202
 
203
+enable_gap_support = true;
136 204
 include_uv_leds = true;
137 205
 
206
+lipo_lid_angle = circum_angle(lipo_lid_width - lipo_lid_gap * 2, outer_dia);
207
+lipo_lid_angle_hole = circum_angle(lipo_lid_width, outer_dia);
208
+lipo_lid_angle_compartment = circum_angle(lipo_lid_compartment_w, outer_dia);
209
+
210
+bat_h = bat_l + bat_spring_dist + 2 * bat_wall + 2 * bat_tab_d;
211
+
212
+$fn = 42;
213
+
214
+echo("sensor_distance", height - 2 * led_off);
215
+
216
+if (include_uv_leds)
217
+echo("uv_led_distance", led_off / 2);
218
+
219
+// https://dkprojects.net/openscad-threads/
220
+include <extern/threads.scad>
221
+
138 222
 // how deep things on the outside have to be set in
139 223
 function circle_offset_deviation(off, dia) =
140 224
     dia * (1 - sin(acos(off * 2 / dia))) / 2;
141 225
 
226
+// circumference to angle
227
+function circum_angle(width, dia) = width / dia * 180 / 3.141;
228
+
229
+// from https://3dprinting.stackexchange.com/questions/10638/creating-pie-slice-in-openscad
230
+module pie_slice(r, a) {
231
+    intersection() {
232
+        circle(r = r);
233
+        
234
+        square(r);
235
+        
236
+        rotate(a - 90)
237
+        square(r);
238
+    }
239
+}
240
+
142 241
 module lcd_cutout() {
143 242
     difference() {
144 243
         cube([lcd_pcb_w, lcd_pcb_h, lcd_pcb_d + 10]);
@@ -150,8 +249,8 @@ module lcd_cutout() {
150 249
         
151 250
         // TODO hacky
152 251
         if (enable_gap_support)
153
-        translate([0, (lcd_pcb_w - 1) / 2, 0])
154
-        cube([lcd_pcb_w, 1, 9]);
252
+        translate([0, (lcd_pcb_w - 1) / 2, 1])
253
+        cube([lcd_pcb_w, 1, 8]);
155 254
     }
156 255
             
157 256
     for (x = [0, lcd_hole_off_x])
@@ -199,25 +298,29 @@ module thread(profile, thread_draw) {
199 298
         // male thread
200 299
         difference() {
201 300
             union() {
202
-                cylinder(d = outer_dia, h = thread_base);
203
-                metric_thread(profile[1], profile[2], profile[4] + thread_base, test=!thread_draw);
301
+                cylinder(d = outer_dia, h = thread_base + body_screw_depth);
302
+                
303
+                scale([1, profile[7] ? 1 : -1, 1])
304
+                metric_thread(profile[1], profile[2], profile[4] + thread_base + body_screw_depth, test=!thread_draw);
204 305
             }
205 306
             
206 307
             translate([0, 0, -1])
207
-            cylinder(d = inner_dia, h = profile[4] + thread_base + 2);
308
+            cylinder(d = profile[6], h = profile[4] + thread_base + body_screw_depth + 2);
208 309
         }
209 310
     } else {
210 311
         // female thread
211 312
         difference() {
212
-            cylinder(d = outer_dia, h = thread_base + profile[4] + profile[3]);
313
+            cylinder(d = outer_dia, h = thread_base + body_screw_depth + profile[4] + profile[3]);
213 314
             
214
-            metric_thread(profile[1], profile[2], profile[4] + thread_base + 1, true, test=!thread_draw);
315
+            translate([0, 0, -1])
316
+            scale([1, profile[7] ? 1 : -1, 1])
317
+            metric_thread(profile[1], profile[2], profile[4] + thread_base + body_screw_depth + 2, true, test=!thread_draw);
215 318
             
216
-            translate([0, 0, thread_base + profile[4]])
217
-            cylinder(d = profile[1] + 2, h = profile[3] + 1);
319
+            translate([0, 0, thread_base + body_screw_depth + profile[4]])
320
+            cylinder(d = profile[5], h = profile[3] + 1);
218 321
             
219 322
             translate([0, 0, -1])
220
-            cylinder(d = inner_dia, h = profile[4] + thread_base + profile[3] + 2);
323
+            cylinder(d = profile[6], h = profile[4] + thread_base + profile[3] + 2);
221 324
         } 
222 325
     }
223 326
 }
@@ -229,8 +332,30 @@ module thread_profile_adapter(profile, draw_profile) {
229 332
         for (r = [45, -45])
230 333
         for (r2 = [0, 180])
231 334
         rotate([0, 0, r + r2])
232
-        translate([0, (outer_dia - body_screw_insert_dia) / 2 - thread_adapter_screw_inset, -1])
233
-        cylinder(d = body_screw_dia, h = 100);
335
+        translate([0, (outer_dia - body_screw_insert_dia) / 2 - thread_adapter_screw_inset, 0]) {
336
+            translate([0, 0, -1])
337
+            cylinder(d = body_screw_dia, h = 50);
338
+            
339
+            translate([0, 0, thread_base])
340
+            cylinder(d = body_screw_head, h = 50);
341
+        }
342
+    }
343
+}
344
+
345
+module mac11_extender() {
346
+    difference() {
347
+        cylinder(d = outer_dia, h = 15);
348
+        
349
+        translate([0, 0, -1])
350
+        cylinder(d = 20, h = 15 + 2);
351
+        
352
+        for (r = [45, -45])
353
+        for (r2 = [0, 180])
354
+        rotate([0, 0, r + r2])
355
+        translate([0, (outer_dia - body_screw_insert_dia) / 2 - thread_adapter_screw_inset, 0]) {
356
+            translate([0, 0, -1])
357
+            cylinder(d = body_screw_dia, h = 50);
358
+        }
234 359
     }
235 360
 }
236 361
 
@@ -302,6 +427,13 @@ module half_body(right_side) {
302 427
             
303 428
             translate([-inner_dia / 2 - led_l - led_ridge_h - 5, 0, -10])
304 429
             cylinder(d = led_ridge_dia, h = led_ridge_h);
430
+            
431
+            if (include_uv_leds)
432
+            if (z < 0)
433
+            for (x = [0, 5])
434
+            translate([-inner_dia / 2 - led_l - led_ridge_h - x, 0, led_off / 2])
435
+            rotate([0, 90, 0])
436
+            cylinder(d = led_ridge_dia, h = led_ridge_h);
305 437
         }
306 438
         
307 439
         // TODO hacky led cable, led side
@@ -444,7 +576,7 @@ module right_half_aaa_bat() {
444 576
     }
445 577
 }
446 578
 
447
-module right_half_testing() {
579
+module right_halt_aa_bat() {
448 580
     difference() {
449 581
         right_half();
450 582
         
@@ -454,8 +586,8 @@ module right_half_testing() {
454 586
             
455 587
             // TODO hacky
456 588
             if (enable_gap_support)
457
-            translate([-0.5, 14, 20])
458
-            cube([1, 13, test_bat_h + 2]);
589
+            translate([-0.5, 14 + 1, 20])
590
+            cube([1, 12, test_bat_h + 2]);
459 591
         }
460 592
         
461 593
         for (x = [test_bat_off / 2, -test_bat_off / 2])
@@ -470,9 +602,118 @@ module right_half_testing() {
470 602
     }
471 603
 }
472 604
 
605
+module lipo_pcb_cutout() {
606
+    translate([-lipo_pcb_w / 2, 0, lipo_pcb_usb_wall])
607
+    cube([lipo_pcb_w, lipo_pcb_d, lipo_pcb_h]);
608
+    
609
+    translate([-lipo_pcb_usb_w / 2, lipo_pcb_usb_off, -1])
610
+    cube([lipo_pcb_usb_w, lipo_pcb_usb_h, lipo_pcb_usb_wall + 2]);
611
+    
612
+    for (z = [0, lipo_pcb_led_off_z])
613
+    translate([lipo_pcb_w / 2 - lipo_pcb_led_off_x, 0, lipo_pcb_usb_wall + lipo_pcb_led_off_z + z])
614
+    rotate([-90, 0, 0])
615
+    cylinder(d = lipo_pcb_led_dia, h = 42);
616
+}
617
+
618
+module lipo_lid() {
619
+    difference() {
620
+        rotate([0, 0, 90 - lipo_lid_angle / 2])
621
+        linear_extrude(lipo_lid_height - lipo_lid_gap * 2)
622
+        difference() {
623
+            pie_slice(outer_dia / 2, lipo_lid_angle);
624
+            pie_slice(outer_dia / 2 - lipo_lid_d + lipo_lid_gap_d, lipo_lid_angle);
625
+        }
626
+        
627
+        // screw holes
628
+        for (z = [0, lipo_lid_height - 2 * lipo_lid_screw_off])
629
+        for (r = [1, -1])
630
+        rotate([0, 0, r * (lipo_lid_angle / 2 - circum_angle(lipo_lid_screw_area / 2, outer_dia))])
631
+        translate([0, outer_dia / 2 + 1, lipo_lid_screw_off - lipo_lid_gap + z])
632
+        rotate([90, 0, 0])
633
+        cylinder(d = lipo_lid_screw_d_big, h = lipo_lid_d + 2);
634
+    }
635
+}
636
+
637
+module right_half_lipo() {
638
+    difference() {
639
+        right_half();
640
+        
641
+        // space for lid
642
+        translate([0, 0, (height - lipo_lid_height) / 2])
643
+        rotate([0, 0, 90 - lipo_lid_angle_hole / 2])
644
+        linear_extrude(lipo_lid_height)
645
+        difference() {
646
+            pie_slice(outer_dia / 2 + 1, lipo_lid_angle_hole);
647
+            pie_slice(outer_dia / 2 - lipo_lid_d, lipo_lid_angle_hole);
648
+        }
649
+        
650
+        // compartment behind lid
651
+        translate([0, 0, (height - lipo_lid_height) / 2])
652
+        rotate([0, 0, 90 - lipo_lid_angle_compartment / 2])
653
+        linear_extrude(lipo_lid_height)
654
+        difference() {
655
+            pie_slice(outer_dia / 2 - lipo_lid_d + 1, lipo_lid_angle_compartment);
656
+            pie_slice(outer_dia / 2 - lipo_lid_d - lipo_lid_compartment_d, lipo_lid_angle_compartment);
657
+        }
658
+        
659
+        // screw holes
660
+        for (z = [0, lipo_lid_height - 2 * lipo_lid_screw_off])
661
+        for (r = [1, -1])
662
+        rotate([0, 0, r * (lipo_lid_angle / 2 - circum_angle(lipo_lid_screw_area / 2, outer_dia))])
663
+        translate([0, outer_dia / 2, (height - lipo_lid_height) / 2 + lipo_lid_screw_off + z])
664
+        rotate([90, 0, 0])
665
+        cylinder(d = lipo_lid_screw_d_small, h = lipo_lid_d + lipo_lid_screw_len);
666
+        
667
+        // charging pcb
668
+        translate([0, outer_dia / 2 - 11, 0]) {
669
+            lipo_pcb_cutout();
670
+            
671
+            %translate([-(lipo_pcb_w - 1) / 2, 0.5, lipo_pcb_usb_wall])
672
+            cube([lipo_pcb_w - 1, lipo_pcb_d - 1, lipo_pcb_h + 1]);
673
+        }
674
+        
675
+        translate([-lipo_w / 2, outer_dia / 2 - lipo_lid_d - lipo_d - circle_offset_deviation(lipo_w / 2, outer_dia - (lipo_lid_d * 2)) - 1, 32]) {
676
+            cube([lipo_w, lipo_d + 20, lipo_h]);
677
+            
678
+            %cube([lipo_w, lipo_d, lipo_h]);
679
+        }
680
+        
681
+        // TODO hacky power cable
682
+        translate([15, -10, 27])
683
+        rotate([-90, 0, 15])
684
+        cylinder(d = 6.0, h = outer_dia);
685
+        
686
+        for (t = texts_lipo)
687
+        rotate([0, 0, -t[4]])
688
+        translate([0, outer_dia / 2 - t[3], (height + thread_adapter_h) / 2])
689
+        rotate([0, -90, -90])
690
+        linear_extrude(height = t[3] + 1)
691
+        text(t[0], size = t[2], font = t[1], halign = "center", valign="center");
692
+    }
693
+    
694
+    // TODO hacky
695
+    if (enable_gap_support) {
696
+        translate([-0.5, 10, 17.5])
697
+        cube([1, 17, lipo_lid_height + 1]);
698
+        
699
+        for (x = [-12, 11])
700
+        translate([x, 10, 31])
701
+        cube([1, 10, 45]);
702
+    }
703
+}
704
+
705
+module assembly_right_half_lipo() {
706
+    right_half_lipo();
707
+    
708
+    color("green")
709
+    translate([0, 0, (height - lipo_lid_height) / 2 + lipo_lid_gap])
710
+    lipo_lid();
711
+}
712
+
473 713
 module assembly_closed() {
474 714
     //right_half_aaa_bat();
475
-    right_half_testing();
715
+    //right_halt_aa_bat();
716
+    assembly_right_half_lipo();
476 717
     
477 718
     rotate([0, 0, 180])
478 719
     left_half();
@@ -483,13 +724,11 @@ module assembly_closed() {
483 724
 
484 725
 module assembly_opened(angle) {
485 726
     translate([-outer_dia / 2, 0, 0]) {
486
-        //rotate([0, 0, angle / 2])
487
-        //translate([outer_dia / 2, 0, 0])
488
-        //right_half_aaa_bat();
489
-        
490 727
         rotate([0, 0, angle / 2])
491 728
         translate([outer_dia / 2, 0, 0])
492
-        right_half_testing();
729
+        //right_half_aaa_bat();
730
+        //right_halt_aa_bat();
731
+        assembly_right_half_lipo();
493 732
         
494 733
         rotate([0, 0, -angle / 2])
495 734
         translate([outer_dia / 2, 0, 0])
@@ -498,20 +737,23 @@ module assembly_opened(angle) {
498 737
     }
499 738
 }
500 739
 
740
+module print_all_thread_adapters() {
741
+    for (p = [0 : len(thread_profiles) - 1])
742
+    translate([(p - floor(len(thread_profiles) / 2)) * (outer_dia + 5), -outer_dia / 2 - 5, 0])
743
+    thread_profile_adapter(thread_profiles[p], true);
744
+}
745
+
501 746
 module print(all_thread_adapters) {
502 747
     translate([outer_dia / 2 + 5, 0, 0])
503 748
     left_half();
504 749
     
505
-    //translate([-outer_dia / 2 - 5, 0, 0])
506
-    //right_half_aaa_bat(true);
507
-    
508 750
     translate([-outer_dia / 2 - 5, 0, 0])
509
-    right_half_testing();
751
+    //right_half_aaa_bat();
752
+    //right_halt_aa_bat();
753
+    right_half_lipo();
510 754
 
511 755
     if (all_thread_adapters)
512
-    for (p = [0 : len(thread_profiles) - 1])
513
-    translate([(p - floor(len(thread_profiles) / 2)) * (outer_dia + 5), -outer_dia / 2 - 5, 0])
514
-    thread_profile_adapter(thread_profiles[p], true);
756
+    print_all_thread_adapters();
515 757
 }
516 758
 
517 759
 //lcd_cutout();
@@ -519,8 +761,25 @@ module print(all_thread_adapters) {
519 761
 //left_half();
520 762
 //right_half();
521 763
 
764
+//right_half_aaa_bat();
765
+//right_halt_aa_bat();
766
+
767
+//right_half_lipo();
768
+//lipo_lid();
769
+//assembly_right_half_lipo();
770
+
522 771
 //assembly_closed();
523 772
 //assembly_opened(90);
524 773
 
525 774
 //print(true);
526
-print(false);
775
+//print(false);
776
+
777
+//print_all_thread_adapters();
778
+
779
+//thread_profile_adapter(thread_profile_1911, true);
780
+//thread_profile_adapter(thread_profile_m14_cw, true);
781
+//thread_profile_adapter(thread_profile_m14_ccw, true);
782
+//thread_profile_adapter(thread_profile_giant, true);
783
+
784
+thread_profile_adapter(thread_profile_mac11, true);
785
+//mac11_extender();

Loading…
Cancel
Save