1 // Holder for two Fraen FHS-HEB1-LB01-x lenses for Luxeon LEDs.
8 fraen_diam = 30.90 + 0.3;
11 pin_offset = 10.35*1.4142;
16 rear_pin_diam = 3.25 + 0.5;
18 side_barrier_x_offset = 13;
19 side_barrier_pin_z_offset = 4.2;
20 side_barrier_thickness = 2;
22 heatsink_thickness = 2;
23 heatsink_w = 15 + 0.5;
24 heatsink_l = lens_dist + 1.5*heatsink_w;
25 heatsink_z = 1 + wall;
26 heatsink_hole_sep = 2*wall;
28 clip_h1 = 27; // front height (on the heatsink side)
29 clip_h2 = 20; // rear height (on the lens side)
38 clip_top_xoff = clip_l*tan(clip_angle);
50 // vnitrni prumer kruhu by mel byt 30.75mm
51 // vnejsi prumer aspon 35 mm
52 // pin od stredu 10.35mm na x a y
54 // pin ma od cela do zabrany 4.2mm, celkove by mel mit 9.2mm
56 // piny by mely pokracovat jeste tak 4mm pod nulu,
57 // a pak uz muze jit konv.obal do ctverce
58 // vnitrni rozmery ctverce 21.5x21.5, zakulacene rohy prumer 3.5
59 // vrch chladice (s LEDkou) -18.5
60 // konec nozicek -24.5
62 front_len = fraen_h + wall;
63 rear_mount_depth = 10;
67 hull() for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, 0]) {
68 cylinder(r = fraen_diam/2 + pin_diam/2 + wall,
69 h = front_len + wall);
76 for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, 0]) {
78 translate([0, 0, -eps])
79 cylinder(r = fraen_diam/2 - wall, h = wall+2*eps);
81 translate([0, 0, wall])
82 cylinder(r = fraen_diam/2 , h = front_len + eps);
84 for (angle = [0, 90, 180, 270]) {
85 rotate([0, 0, angle+45])
86 translate([pin_offset, 0, wall])
87 cylinder(r=pin_diam/2,
93 hull() for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, front_len - rear_mount_depth] ) {
94 cylinder(r = fraen_diam/2 + pin_diam/2,
95 h = wall + rear_mount_depth + eps);
97 for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, front_len])
98 for (angle = [0, 90, 180, 270]) rotate([0, 0, angle])
99 translate([rear_pin_dist, rear_pin_dist, 0])
100 cylinder(r=rear_pin_diam/2, h = wall);
103 for (y = [-1, 1]) translate([0, y*screw_yoff, -eps])
104 cylinder(r = screw_d/2,
105 h = front_len + wall + 2*eps);
110 hull() for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, 0] ) {
111 cylinder(r = fraen_diam/2 + pin_diam/2 - rear_sep,
112 h = wall + rear_mount_depth);
120 for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, wall])
121 for (angle = [0, 90, 180, 270]) rotate([0, 0, angle])
122 translate([rear_pin_dist, rear_pin_dist, 0])
123 cylinder(r=rear_pin_diam/2, h = rear_mount_depth+wall+eps);
125 // for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, 2*wall]) hull()
126 // for (angle = [0, 90, 180, 270]) rotate([0, 0, angle])
127 // translate([rear_pin_dist, rear_pin_dist, 0])
128 // cylinder(r=rear_pin_diam/2, h = rear_mount_depth);
131 hull() for (x = [-1, 1]) scale([x, 1, 1]) translate([lens_dist/2, 0, heatsink_z + heatsink_thickness] ) {
132 cylinder(r = fraen_diam/2 + pin_diam/2 - rear_sep - wall,
133 h = rear_mount_depth + wall + eps);
135 // minus screw mounts
136 for (y = [-1, 1]) translate([0, y*screw_yoff, 0])
137 cylinder(r = screw_d/2 + screw_wall,
138 h = rear_mount_depth + wall + eps);
141 for (y = [-1, 1]) translate([0, y*screw_yoff, -eps])
142 cylinder(r = screw_d/2,
143 h = rear_mount_depth + wall + 2*eps);
145 translate([-heatsink_l/2, -heatsink_w/2, heatsink_z])
146 cube([heatsink_l, heatsink_w, rear_mount_depth]);
147 // heatsink back hole
148 translate([-heatsink_l/2 + heatsink_hole_sep,
149 -heatsink_w/2 + heatsink_hole_sep, -eps])
150 cube([heatsink_l-2*heatsink_hole_sep,
151 heatsink_w-2*heatsink_hole_sep,
156 translate([0, fraen_diam *1.5, 0])
157 front_part($fn = 128);
159 rear_part($fn = 128);