mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-08-08 06:24:03 -06:00
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>
This commit is contained in:
parent
929733f0a7
commit
0b2c89ecaf
3 changed files with 11869 additions and 17 deletions
77
docs/prints/calibrate_size.scad
Normal file
77
docs/prints/calibrate_size.scad
Normal file
|
@ -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();
|
Loading…
Add table
Add a link
Reference in a new issue