Load Cells for Z-Offset¶
This page covers using load cells for auto z-offset alongside another supported probe
Experimental High risk of bed or toolhead damage
Load cells for z-offset is EXTREMELY EXPERIMENTAL. The nozzle is pushed onto the bed with a force measured by the load cells, if the load cells are not calibrated properly or something else goes wrong you can damage your printer. Be ready to hit the e-stop button in your UI or Grumpyscreen, or the power button, and never leave your printer unattended while starting a print.
Kalico only
Load cells for z-offset REQUIRES Kalico. The installer will automatically setup kalico for a install or reinstall or if you enable loadcells for z-offset, either for an existing or new installation.
Supported Printers¶
| Printer | Status |
|---|---|
| Ender 3 V3 | Tested |
| Ender 3 V3 KE | Tested |
| Ender 3 V3 SE | Tested |
| K1 | Tested |
| K1C | Tested |
| K1 SE | Configured, not tested |
| K1 Max | Configured, not tested |
Note
For K1, K1C, K1 Max, K1 SE, Ender 3 V3 CoreXZ and Ender 5 Max the load cell probe reads all four bed load cells together as a single probe, this needs new MCU firmware which the installer takes care of.
Overview¶
- Enable loadcells zoffset support
- Calibrate the load cells with a known weight
- Test the probe and check its accuracy
- Configure Nozzle Wipe - currently this must be done manually, we are exploring integrating a default nozzle wipe for load cells soon.
Setup¶
Warning
There is an assumption you have already setup a supported probe with kalico
To enable loadcells for z-offset it is a single command for an existing probe:
To enable loadcells for zoffset while installing or reinstalling, for this example we are setting up a cartographer:
You need to Calibrate the load cells before trying to do a print
Calibration¶
Warning
The load cell(s) must be calibrated before you can use them for z-offset, until you do the printer will stop with Load Cell Probe Error: Load Cell not calibrated. Never guess the calibration value, the safety limits are all in grams and an inaccurate calibration lets the nozzle push far harder than you intend.
Check the Load Cells¶
Make sure the bed is empty and run LOAD_CELL_DIAGNOSTIC, it collects samples for 10 seconds, press on the bed while it runs.
Saturated samplesshould be 0Unique valuesshould be a large part of the samples collected, if it is 1 there is a wiring or configuration problemSample rangeshould increase when you press on the bed
Source: https://github.com/KalicoCrew/kalico/blob/main/docs/Load_Cell.md#diagnostics
Calibrate the Load Cells¶
You need an object of known weight, weigh it on a kitchen scale.
Tip
On the Ender 3 V3 a known weight of ~3 kg (around 3000 grams) was needed during testing,
On the K1 a known weight of ~6 kg (around 6000 grams) was needed during testing,
a lighter weight fails with the Tare and Calibration readings are less than 1% different! error, see Calibration Errors.
New spools of filament work well, a brand new spool is typically 1000 g of filament plus the spool itself, which is about 250 g for a bamboo plastic spool or about 175 g for a cardboard spool. Weight whatever you use on a kitchen scale and enter the real weight.
- Remove everything from the bed
- Run
LOAD_CELL_CALIBRATE - Run
TARE - Place your object of known weight in the centre of the bed (or over the load cell at the front left for an Ender 3 V3 SE / KE)
- Run
CALIBRATE GRAMS=<weight in grams>for exampleCALIBRATE GRAMS=3000 - Run
ACCEPT
Upon completionSAVE_CONFIG
You can use ABORT to cancel at any time. Afterwards run LOAD_CELL_DIAGNOSTIC again, and LOAD_CELL_READ will it will report the force on the bed in grams.
Source: https://github.com/KalicoCrew/kalico/blob/main/docs/Load_Cell.md#calibration
Calibration Errors¶
| Error | Cause | Fix |
|---|---|---|
Tare and Calibration readings are less than 1% different! |
The weight is too light, the reading has to change by at least 1% of the sensor range | Use more weight, on the Ender 3 V3 about 3 kg (3000 grams) is needed and 2598 grams was not enough. The message suggests a higher gain, but gain is already at its highest setting (A-128), so more weight is the only fix |
Sensor is saturated with too much load! |
The weight is too heavy | Use less weight |
Tare and Calibration readings are the same! |
The reading did not change | Check the weight is actually on the bed and run LOAD_CELL_DIAGNOSTIC to check the sensor |
The calibration is still active after one of these errors, so you can change the weight and run CALIBRATE GRAMS=<weight in grams> again.
Test the Probe¶
Run LOAD_CELL_TEST_TAP, then gently tap the nozzle or press on the bed 3 times, it will report each tap as it is detected. If no tap is detected within 30 seconds it fails.
Note
Load cell probes always report not triggered for QUERY_ENDSTOPS and QUERY_PROBE, use LOAD_CELL_TEST_TAP instead.
Probe Accuracy¶
Make sure the nozzle is clean and there is no filament oozing from it, and if you are heating the nozzle keep it around 140°C, ooze on the nozzle is the biggest source of bad taps.
- Home All (
G28) - Run
LOAD_CELL_PROBE_ACCURACY
Tuning¶
The load cell probe settings are in the [load_cell_probe] section of loadcells_zoffset.cfg, which you can edit from the config editor in Fluidd or Mainsail.
Tap Failures¶
If you see tap validation errors in the console like TAP_PULLBACK_TOO_SHORT or TAP_BREAK_CONTACT_TOO_LATE the pullback move is too short, increase pullback_distance in the [load_cell_probe] section. The default is 0.2, on the Ender 3 V3 setting it to 0.5 fixed frequent TAP_PULLBACK_TOO_SHORT failures.
If the errors are TAP_BREAK_CONTACT_TOO_EARLY it is too long.
Trigger Force¶
trigger_force is the force in grams that triggers the probe, it is set by the mount, 75 for the Ender 3 V3 and 160 for the K1 and K1 Max. Probing always overshoots this, so raise it in small steps only if you need to.
Safety Limits¶
force_safety_limit(default2000grams) is the most force allowed on the bed before a probe move starts. If it is exceeded you getforce of 3000g exceeds force_safety_limit (2000g) before probing!, this can be caused by the nozzle already resting on the bed or something pushing on the bed.drift_safety_limit(default1000grams) is the most force allowed while probing before it triggers. If it is exceeded you getforce exceeded drift_safety_limit before triggering!.
First Print¶
You might need to optimise your load cell z offset using baby stepping.
In fluidd the save button after you finish or cancel your print can be a bit hard to find, look for
