diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2018-09-05 10:38:19 -0400 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2018-09-25 13:48:46 -0400 |
commit | 0b2c89ecaf650d606404e43155a8b5694d537ff0 (patch) | |
tree | 54c9a3d4d8f27df9f0dc8e5567dd1be3444bb1c4 /docs/prints/calibrate_size.scad | |
parent | 929733f0a7ffc660e0e47f131b7f3ceb2d46efbd (diff) | |
download | kutter-0b2c89ecaf650d606404e43155a8b5694d537ff0.tar.gz kutter-0b2c89ecaf650d606404e43155a8b5694d537ff0.tar.xz kutter-0b2c89ecaf650d606404e43155a8b5694d537ff0.zip |
delta_calibrate: Initial support for enhanced delta calibration
Add support for an enhanced delta calibration routine that performs XY
dimension calibration.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'docs/prints/calibrate_size.scad')
-rw-r--r-- | docs/prints/calibrate_size.scad | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/docs/prints/calibrate_size.scad b/docs/prints/calibrate_size.scad new file mode 100644 index 00000000..f1e60c95 --- /dev/null +++ b/docs/prints/calibrate_size.scad @@ -0,0 +1,77 @@ +// Calibration object for delta sizing +// +// Generate STL using OpenSCAD: +// openscad calibrate_size.scad -o calibrate_size.stl + +base_radius = 70; +base_height = 1.5; +base_width = 8; +cylinder_height = 5; +cylinder_radius = 5; +cylinder_outer_dist = 65; +ridge_cut_radius = .5; +text_height = 1; +text_size = 5; +spoke_angles = [0, 60, 120, 180, 240, 300]; +CUT=0.01; + +// Circular ring around entire object (to help reduce warping) +module base_ring() { + difference() { + cylinder(h=base_height, r=base_radius); + translate([0, 0, -CUT]) + cylinder(h=base_height + 2*CUT, r=base_radius-base_width); + } +} + +// The base ring plus the base spokes +module base() { + base_ring(); + // Spokes + for (angle=spoke_angles) + rotate([0, 0, angle]) + translate([-base_width/2, -CUT, 0]) + cube([base_width, base_radius-base_width+2*CUT, base_height]); +} + +// Cylinder that measurement ridges are cut out of +module measuring_cylinder() { + cut_width = cylinder_radius; + difference() { + cylinder(h=cylinder_height+CUT, r=cylinder_radius, $fn=60); + for (angle=spoke_angles) + rotate([0, 0, angle]) + translate([-cut_width, cylinder_radius - ridge_cut_radius, -CUT]) + cube([2*cut_width, cut_width, cylinder_height+3*CUT]); + } +} + +// All the measuring cylinders around the ring +module measuring_cylinders() { + measuring_cylinder(); + for (angle=spoke_angles) + rotate([0, 0, angle]) + translate([0, cylinder_outer_dist, 0]) + measuring_cylinder(); +} + +// Text writing +module write_text(angle, dist, msg) { + text_offset = dist + 1 - text_size/2; + rotate([0, 0, angle]) + translate([0, text_offset, base_height - CUT]) + linear_extrude(height=text_height + CUT) + text(msg, size=text_size, halign="center"); +} + +// Final object with text descriptions +module calibration_object() { + base(); + translate([0, 0, base_height-CUT]) + measuring_cylinders(); + write_text(120, cylinder_outer_dist - 20, "A"); + write_text(240, cylinder_outer_dist - 20, "B"); + write_text(0, cylinder_outer_dist - 20, "C"); +} + +calibration_object(); |