diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2026-01-06 16:18:12 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2026-01-06 16:18:12 +0100 |
| commit | e69aa61989896a6dfd65acb7753377eb69630203 (patch) | |
| tree | ea0f1dc6dba37cd42ca9a27ae902e88cd1828ecd | |
add openscad prototype for scanner body. draw m12 lense holder
| -rw-r--r-- | body/.body.scad.swp | bin | 0 -> 12288 bytes | |||
| -rw-r--r-- | body/body.scad | 7 | ||||
| -rw-r--r-- | body/design.scad | 34 | ||||
| -rw-r--r-- | body/helpers.scad | 9 | ||||
| -rw-r--r-- | body/m12_lense_holder.scad | 91 | ||||
| -rw-r--r-- | body/m12_lense_holder_adapter.scad | 1 |
6 files changed, 142 insertions, 0 deletions
diff --git a/body/.body.scad.swp b/body/.body.scad.swp Binary files differnew file mode 100644 index 0000000..9104a06 --- /dev/null +++ b/body/.body.scad.swp diff --git a/body/body.scad b/body/body.scad new file mode 100644 index 0000000..506422b --- /dev/null +++ b/body/body.scad @@ -0,0 +1,7 @@ +include <design.scad> +include <helpers.scad> +include <m12_lense_holder.scad> +include <m12_lense_holder_adapter.scad> + +m12_lense_holder(); +//m12_lense_holder_wo_holes();
\ No newline at end of file diff --git a/body/design.scad b/body/design.scad new file mode 100644 index 0000000..86e598d --- /dev/null +++ b/body/design.scad @@ -0,0 +1,34 @@ +// sample file. +// should be generated by optical_design app: +// https://git.kostovsky.me/optical_design/ +$actualZBaseText = "145.96 (118.96)"; +$opticalAxisAngleDegrees = 28; +$lenseYPosMm = 114; +$focalDistanceMm = 10; +$backFocalDistanceMm = 7.3; +$lenseAperture = 56; +$lenseBodyMaxDiameterMm = 14; +$lenseBodyLengthMm = 17; +$sensorWidthMm = 4.98; +$sensorHeightMm = 3.74; +$sensorCellWidthUm = 6.9; +$sensorCellHeightUm = 6.9; +$sensorVerticalOffsetMm = 0; +$sensorPixelsHeight = 720; +$sensorPixelsWidth = 544; +$zBaseMm = 150; +$zRangeMm = 200; +$laserBodyDiameterMm = 14; +$laserBodyLengthMm = 45; +$laserAngleDegrees = 45; +$laserZOffsetMm = 0; +$scannerBodyWallThicknessMm = 3; +$scannerBodyFrontWallOffsetMm = -24; +$sensorLenseAngleDegrees = 4.61821827339071; +$vFoVDegrees = 20.269505650602042; +$actualZBaseMm = 145.95810178293496; +$actualZRangeMm = 210.77877476859703; +$lenseSensorDistanceMm = 10.429504909559073; +$frontSharpDistanceMm = 241.46849169805705; +$backSharpDistanceMm = 244.1992816062187; +$depthOfFieldMm = 2.730789908161654; diff --git a/body/helpers.scad b/body/helpers.scad new file mode 100644 index 0000000..2ad4a47 --- /dev/null +++ b/body/helpers.scad @@ -0,0 +1,9 @@ +use <design.scad> + +function hole_z(h) = + assert(h > 0, "hole_z: h should be greater than 0") + -h * 0.001; + +function hole_h(h) = + assert(h > 0, "hole_h: h should be greater than 0") + h * 1.002;
\ No newline at end of file diff --git a/body/m12_lense_holder.scad b/body/m12_lense_holder.scad new file mode 100644 index 0000000..63df125 --- /dev/null +++ b/body/m12_lense_holder.scad @@ -0,0 +1,91 @@ +// calculate cylinder/circle "Fragments Number" based on diameter +function diameterToFn(d) = (d * PI * 3); + +// m12 cam holder size +$m12_lense_holder_size = 13; +// bottom part height +$m12_lense_holder_bottom_h = 3.5; +// top part height +$m12_lense_holder_top_h = 3.5; +// distance between holes centers +$m12_lense_holder_d_btw_holes = 18; +// screw holes outer diameter +$m12_lense_holder_sh_outer_d = 4; +// screw holes inner diameter +$m12_lense_holder_sh_inner_d = 1.5; +// left hole offset +$m12_lense_holder_l_hole_offset = [-$m12_lense_holder_d_btw_holes / 2, 0, 0]; +// right hole offset +$m12_lense_holder_r_hole_offset = [$m12_lense_holder_d_btw_holes / 2, 0, 0]; +// lense hole diameter +$m12_lense_holder_lense_hole_diameter = 12; + +// m12 lense holder without holes +module m12_lense_holder_wo_holes() +{ + $S = $m12_lense_holder_size; + $cube_size = [$S, $S, $m12_lense_holder_bottom_h]; + + // bottom cube + translate([0, 0, $cube_size[2] / 2]) + cube($cube_size, center = true); + + // top cylinder + translate([0, 0, $cube_size[2]]) + cylinder($fn=diameterToFn($S), h = $m12_lense_holder_top_h, d = $S); + + // screw holes, outer body to cut from + hull() + { + translate($m12_lense_holder_l_hole_offset) + cylinder( + $fn = diameterToFn($m12_lense_holder_sh_outer_d), + h = $m12_lense_holder_bottom_h, + d = $m12_lense_holder_sh_outer_d); + + translate($m12_lense_holder_r_hole_offset) + cylinder( + $fn = diameterToFn($m12_lense_holder_sh_outer_d), + h = $m12_lense_holder_bottom_h, + d = $m12_lense_holder_sh_outer_d); + } +} + +module m12_lense_holder_holes() +{ + // left screw hole + translate($m12_lense_holder_l_hole_offset) + cylinder( + $fn = diameterToFn($m12_lense_holder_sh_inner_d), + h = $m12_lense_holder_bottom_h * 3, + d = $m12_lense_holder_sh_inner_d, + center = true); + + // right screw hole + translate($m12_lense_holder_r_hole_offset) + cylinder( + $fn = diameterToFn($m12_lense_holder_sh_inner_d), + h = $m12_lense_holder_bottom_h * 3, + d = $m12_lense_holder_sh_inner_d, + center = true); + + // lense hole + cylinder( + $fn = diameterToFn($m12_lense_holder_lense_hole_diameter), + d = $m12_lense_holder_lense_hole_diameter, + h = ($m12_lense_holder_bottom_h + $m12_lense_holder_top_h) * 3, + center = true); +} + +module m12_lense_holder() +{ + difference() + { + + m12_lense_holder_wo_holes(); + m12_lense_holder_holes(); + } +} + +//m12_lense_holder(); +//m12_lense_holder_wo_holes();
\ No newline at end of file diff --git a/body/m12_lense_holder_adapter.scad b/body/m12_lense_holder_adapter.scad new file mode 100644 index 0000000..3b099f6 --- /dev/null +++ b/body/m12_lense_holder_adapter.scad @@ -0,0 +1 @@ +include <m12_lense_holder.scad> |
