Kevin has already mentioned that the review will take some time. This is ok, and I do not want to make any pressure, but I would like to understand what this means. Is there even a realistic chance to get this integrated into the main branch, or is this too special (although my printer model doesn’t seem to be the only model with this feature nowadays, the Prusa Original XL seems to have something similar)? Is there anything I can do to speed this up?
I am also asking because there are a number of potential users who are a bit hesitating to switch to Klipper (from the original Repetier-based firmware) until the printer is supported out of the box and e.g. some automated installer or pre-build Raspberry Pi image can be used (more PRs will be necessary for this, but this is the biggest one by far).
So after a long time I finally improved my code to take another attempt on the PR. For some technical reasons, I had to open another PR:
The code has now improved a lot and is much more mature. I reduced the number of configurable parameters, and for most of the remaining parameters there is a clear semi-automatic procedure how to obtain them. The only parameter left for the user/“system integrator” to decide (besides ADC configuration) is the maximum acceptable force at which the printer shall shutdown to protect the hardware. This will also be used to derive step sizes etc., together with other parameters measured during the calibration procedure.
This calibration procedure has to be done only once per printer model, hence I wrote “system integrator” above - the normal user does not have to go through this. Still the procedure should be simple enough that anyone who can integrate a new printer model into Klipper should be able to do this. Also people who are modifying printers by adding load cells should have all the knowledge required to complete this procedure.
One piece in the puzzle is still missing though: To use the new module, one needs to have some driver for an appropriate ADC. So far, all Klipper-supported ADCs are single-ended, but for load cells we need differential ADCs. I have developed and tested the code mostly with an ADS1100 ADC, for which I wrote also a driver. The downside is, when using the ADC, one has to build some additional amplifier electronics to have the necessary sensitivity. An easier approach would be to use the famous HX711. Unfortunately there is not yet a good driver available for Klipper. I have written a simple, but unreliably (out-of-spec) driver for it, which works well enough at least to do some first tests. Both drivers (ADS1100 and HX711) can be found here:
So if someone wants to go ahead and try this out, please go ahead. I am happy to help in case of problems.