⑦Calibration Steps
Last updated
Last updated
When calibrating the first time you must perform in the prescribed order. Once complete you can re-calibrate particular steps but remember that some calibration changes will cascade. E.g. after calibrating the gear, you must recalibrate the encoder, the bowden and possibly all the gates. Generally you can re-calibrate the selector (step 1) and the gates (step 5) at any time, but the gear, encoder and bowden must always be done in that order!
Let's start by getting the selector cailbrated in this easy step (it is important to do this early because the bowden and gate calibration need to be able to select gates). This sets up the position all of all the gates as well as the bypass position if fitted. Firstly ensure MMU motors are off by running MMU_MOTORS_OFF
and remove filament from gate #0 -- you may need to run MMU_SERVO POS=up
to release the filament. Then re-insert and remove filament through selector to ensure that gate #0 is correctly alined with selector. Be careful and move the selector side to side whilst moving the filament inside the gate. Try to assess where the filament is centered in the gate and leave the selector in that position. Then run:
Sit back and relax. The selector will move to find the extremes of movement and then use information about the geometry of the particular MMU and version/options you are using to generate and save the selector offsets automatically!
Although it should not be necessary, there are options to update a single position if you would like to or run into problems. See the command reference for more detailed information on options, but basically you turn MMU motors off, line up the desired gate with the selector and run:
Validation: At the end of this step you should be able to select any tool/gate on your MMU. For instance, try running MMU_HOME TOOL=3
to re-home and select tool/gate #3.
Happy Hare sets up theoretically good servo postions during installation, however they really should be calibrated. Most MMU's require precise servo movement. To do that you need to run through this process similar to this to update and record the angle for the three symbolic positions. Be sure to consult you MMU documentation.
1. Check the Current Servo Position
First, run the following command to check the current status and angle of the servo motor:
The output might look like this:
Current servo angle: 125, Positions: {'down': 110, 'up': 125, 'move': 110}
This indicates that the current servo angle is 125 degrees, and the preset positions for 'up' (raise), 'down' (lower), and 'move' are 125, 110, and 110, respectively.
2. Move the Servo to the "Up" Position
Use the following command to move the servo motor to the "up" position:
If you find the position is not accurate, proceed to the next step to fine-tune it.
3. Manually Adjust the Servo Angle
You can gradually adjust the servo angle using the following command until you are satisfied with the position:
Here, 128
is the angle you want to set. Adjust the value as needed until the servo reaches the correct position.
4. Save the New "Up" Position
Once you're happy with the adjusted angle, use the following command to save the current angle as the new "up" position:
This will update the "up" position of the servo motor to the angle you've set (e.g., 128 degrees).
Repeat for the three positions:
MMU_SERVO POS=up = tool is selected and filament is allowed to freely move through gate
MMU_SERVO POS=move = ready the servo for selector move (optional - defaults to up)
MMU_SERVO POS=down = to grip filament
In this step you are simply ensuring that when the gear stepper is told to move 100mm of filament it really does move 100mm. It is akin to what you did when you set up your extruder rotational distance although in this case no Klipper restart is necessary! Position selector in front of gate #0 (you can use MMU_SELECT GATE=0
if you have finished the selector calibration above) and put some filament through the gate so that it pokes out just past the selector exit. Run the following to ensure the filament is gripped:
Next remove the bowden tube and cut the filament flush with the ECAS connector on the selector (this is the encoder on the ERCF design). Run this command to attemp to move 100mm of filament:
Get out your ruler and very carefully measure the length of the emited filament. Hold your ruler up to the bowden and gently pull the filament straight to get an accurate measurement. Next run this specifying your actual measured value (102.5 used in this example):
Gear stepper
rotation_distance
calculated to be 23.117387Gear calibration has been saved
You can also measure over a different length by using something like MMU_TEST_MOVE MOVE=200
and MMU_CALIBRATE_GEAR LENGTH=200 MEASURED=205.25
for a 200mm length for example.
Validation: If you want to test, snip the filament again flush with the ECAS connector and run MMU_TEST_MOVE
. Exactly 100mm should be moved this time.
If your MMU includes an encoder (like the ERCF design) the next step is to calibrate so it measures distance accurately. Re-fit the bowden to the selector/encoder (you can insert the short length of filament to tube as you fit to save time). Alternatively, just make sure you have some filament at gate #0 before starting. Now run:
You will see an output similar to:
Calibrating over 400mm...
counts: 368
counts: 368
counts: 369
counts: 369
counts: 369
counts: 369 Load direction: mean=368.67 stdev=0.58 min=368 max=369 range=1 Unload direction: mean=368.67 stdev=0.58 min=368 max=369 range=1 Before calibration measured length: 394.47mm Calculated resolution of the encoder: 1.085049 (currently: 1.094543) Encoder calibration has been saved
Use fresh filament - grooves from previous passes through extruder gears can lead to slight count differences.
Make sure the selector is aligned with the gate. If it is off to one side you will almost certainly get disimilar counts in forward and reverse directions.
You want the counts on each attempt to be the same or very similar but don't sweat +/-3 counts. With ERCF v2.0, sprung servo and new Binky encoder design they should be very consistent though ;-)
You can run this (like all calibration commands) without saving the result by adding a SAVE=0
flag.
If this step worked then you should be able to unload the residual filament with MMU_UNLOAD
. If you aren't happy with results, leave the filament ready for the next run.
Optionally the last calibration before use! Here you can calibrate the length of your bowden from MMU gate to extruder entrance. This is important because it allows the MMU to move the filament at a fast pace over this distance because getting to the more complicated part of the load sequence. To speed up this process you need to give the calibration routine a hint of how far way the extruder is (but not exceeding the distance). A good rule of thumb is to manually measure the distance from exit from the selector to the entrance to your extruder. Subtract 40-50mm from that distance. I measured approximately 690mm on my system, so will supply 650mm as the starting value. In you have an encoder you can run the automatic method:
Homing MMU... Tool T0 enabled
Calibrating bowden length from reference Gate #0
Tool T0 enabled
Heating extruder to minimum temp (200.0)
Finding extruder gear position (try #1 of 3)...
Run Current: 0.21A Hold Current: 0.09A
Run Current: 0.49A Hold Current: 0.09A
Pass #1: Filament homed to extruder, encoder measured 683.5mm, filament sprung back 3.2mm
- Bowden calibration based on this pass is 683.5
Finding extruder gear position (try #2 of 3)...
Run Current: 0.21A Hold Current: 0.09A
Run Current: 0.49A Hold Current: 0.09A
Pass #2: Filament homed to extruder, encoder measured 682.7mm, filament sprung back 3.2mm - Bowden calibration based on this pass is 682.7
Finding extruder gear position (try #3 of 3)...
Run Current: 0.21A Hold Current: 0.09A
Run Current: 0.49A Hold Current: 0.09A
Pass #3: Filament homed to extruder, encoder measured 683.9mm, filament sprung back 3.2mm
- Bowden calibration based on this pass is 683.4
Recommended calibration reference is 680.2mm. Clog detection length: 16.8mm
Bowden calibration and clog detection length have been saved
If you don't have an encoder or have problems with collision detection at the extruder you can run manually. To do this, select gate 0, push filament through manually all the way to the extruder gears. This run with the MANUAL=1
option:
This will reverse homes to the gate and use Klipper's measurement of stepper movement. This is the method for MMU designs like Tradrack that don't have encoder but do have mmu_gate
sensor.
This calibration assumes that the selector has been calibrated first.
This may cause the extruder to be heated. This is to ensure that the extruder motor is energized and can resist the impact of the collision with the filament
All of the calibration steps can be run in a "check/test" mode. Simply add SAVE=0
to the command and the calibration will be run but the results will not be saved. This is very useful for verification.
Finally, remember that the results from all the calibration is stored in mmu_vars.cfg
so you can also view/edit that file directly.