]> www.fi.muni.cz Git - things.git/blob - hc-sr04.scad
drill stand: downloaded back from thingiverse
[things.git] / hc-sr04.scad
1 eps = 0.01;
2 infty = 100;
3
4 wall = 1.5;
5
6 cyl_r = 8 + 0.5;
7 cyl_x = 27 / 2;
8 cyl_h = 8; // above pcb, max 13.8;
9
10 pcb_x = 45 + 0.5;
11 pcb_y = 20 + 0.5;
12 xtal_h = 5;
13 pcb_supp = 3; // side support thickness
14 pcb_h = 8; // 1.2 + space for connector etc
15 pcb_thick = 2;
16
17 cyl_base = pcb_x/2 + wall - cyl_x;
18
19 conn_x = 12.5;
20 conn_y = 12;
21
22 cable_w = 7;
23 cable_h = 3;
24
25 mount_h = 3;
26 screw_sp = 5;
27
28 module sensor() {
29         hull() {
30                 // space above pcb
31                 translate([-pcb_x/2, -pcb_y/2, -eps])
32                         cube([pcb_x, pcb_y, pcb_h-pcb_thick+eps]);
33                 // connector
34                 translate([-conn_x/2, pcb_y/2-eps, -eps])
35                         cube([conn_x, conn_y+eps, pcb_h-pcb_thick+eps]);
36         }
37         // cable protrusion
38         translate([-cable_w/2, pcb_y/2+conn_y-eps, -eps])
39                 cube([cable_w, 2*wall + eps, cable_h]);
40
41         // cylinders
42         for (x = [-1, 1]) translate([cyl_x*x, 0, pcb_h - eps])
43                 cylinder(r = cyl_r, h = cyl_h + 2+wall + eps);
44         // pcb
45         translate([-pcb_x/2, -pcb_y/2, pcb_h-pcb_thick-eps])
46                 cube([pcb_x, pcb_y, pcb_thick+eps]);
47         // space below the pcb (xtal, etc)
48         translate([-pcb_x/2+pcb_supp, -pcb_y/2, pcb_h-pcb_thick - eps])
49                 cube([pcb_x - 2*pcb_supp, pcb_y, xtal_h+pcb_thick+eps]);
50 };
51 module case_body() {
52         hull() {
53                 // pcb
54                 translate([-pcb_x/2-wall, -pcb_y/2-wall, 0])
55                         cube([pcb_x+2*wall, pcb_y+2*wall, pcb_h+wall]);
56
57                 // cylinders
58                 for (x = [-1, 1]) translate([cyl_x*x, 0, pcb_h + cyl_h])
59                         cylinder(r = cyl_base, h = wall);
60
61                 translate([0, 8, pcb_h + cyl_h])
62                         cylinder(r = cyl_base, h = wall);
63
64                 // connector
65                 translate([-conn_x/2-wall, pcb_y/2-wall, 0])
66                         cube([conn_x+2*wall, conn_y+2*wall, pcb_h+wall]);
67         }
68         for (x = [0, 180]) rotate([0, 0, x]) hull() {
69                 // eps-wide cube
70                 translate([pcb_x/2-eps, -4/2-wall, pcb_h + cyl_h + wall -eps])
71                         cube([eps, 4+2*wall, eps]);
72                 // bottom plate
73                 translate([pcb_x/2+wall, -screw_sp/2-wall, 0])
74                         cube([screw_sp+wall, screw_sp+2*wall, wall]);
75         }
76 }
77
78 difference() {
79         case_body();
80         difference() {
81                 sensor();
82                 // pcb clip
83                 translate([-8/2, -pcb_y/2, pcb_h-pcb_thick-wall/2])
84                 rotate([0, 90, 0])
85                 cylinder(r=wall/2, h = 8, $fn = 4);
86         }
87         // mount holes
88         for (x = [0, 180]) rotate([0, 0, x]) {
89                 translate([pcb_x/2+wall, -screw_sp/2, wall])
90                         cube([screw_sp +wall+eps, screw_sp, pcb_h + cyl_h + eps]);
91                 translate([pcb_x/2+1+wall, -3/2, -eps])
92                         cube([3, 3, wall + 2*eps]);
93         }
94         // text
95         translate([0, 3.5, pcb_h + cyl_h + eps])
96                 rotate([0, 0, 90])
97                 linear_extrude(height=wall)
98                 text("CVT FI", font="DejaVu Sans:style=Bold", size=5,
99                         halign="center", valign="center");
100
101 }
102