Printer Model: voron 2.4
MCU / Printerboard: btt octopus ez max
Host / SBC : Raspberry pi 5
klippy.log : klippy (2).log (3.2 MB)
Its not realy an issue but just an understanding on how BTT Eddy probe does its Temperature calibration witch i dont fully get.
zo i installed the eddy probe. did al the basic stuff (calibrate eddy current, calibrate offset) and it works. (i use de btt eddy probe only as probe. for Z-homing i use a different endstop). But when i do my temperature calibration as by guide im little confused.
(see guide here eddy probe guide)
below are the steps for temperature compensation:
Home All Axes and move Z 5 mm above the bed by typing G0 Z5 or using the movement UI.
Set idle timeout by typing SET_IDLE_TIMEOUT TIMEOUT=36000
Run TEMPERATURE_PROBE_CALIBRATE PROBE=btt_eddy TARGET=56 STEP=4
This will cause the UI to display the z axis adjustment box. Use the paper method mentioned here to pinch a sheet of paper between the nozzle and the bed and then accept the value.
Turn on your heat bed to the maximum value and your nozzle to 220C.
If you are in a room with an air-conditioner or an open window, it would be good to turn it off and/or close the window. We want the temperature of the Eddy to rise and breezes will stop that.
As the Eddy temp rises you will automatically be asked to perform the paper pinch method at each 4C interval. Be careful not to burn yourself on the bed as the bed can get quite hot.
Repeat the paper test method until the calibration completes. If you find that the temperature of the Eddy is no longer increasing then you can end the calibration early using the relevant command below.
questions i have are:
first measurement with cold nossle. uhhm atleast i never print with a cold nossle so i skipped this en went to 230 for the first measurement. also there are always some blobs on the nossle that wil maybe add 0.1 mm to your meassurement. (maby if you use the probe for Z-homing but still its unlikely that you print with a cold nossle)
heated bed to maximum oke, when do we wait for heatsoaking? what i know is that during heating, metal is expanding but will settle back if the hole plate is uniform heated. making measurements during heating makes (in my opinion) measurments unvalid (i dont print with a build plate that isnt fully heatsoaked) this has also to do with the voron build plate being 8mm thick.
so i did the temperature calibration by guide (except the first measurement i did with a heated nossle) set target to 80 and left step at 4
and got this graph.
i did also a new offset calibration for the probe with a heatsoaked bed at 100C and nossle at 230 because that is mostly that i print at
after this i tested bed mesh with a cold bed and a bed that is heatsoaked to 100 C.
what i saw that at lower temperatures (no heated bed) the nossle wil bury itself into the bed (0.1 mm to low) (probe temp around 45/49 degrees) and at higher temperatures (250 nossle and 110 bed) i am consistant 0.4 mm to far away of the bed. (probe temp arround 79/85 degrees).
i want to understand what is going on, why is it so out of wack and is my analysis on the situation correct or am i doing something wrong. also this is no rant to the persons writing the guide or persons involved in the development of the eddy probe, its just i dont get it.
A generic, but more detailed explanation of the calibration procedure can be found in Klipper’s documentation. I can’t speak to the steps outlined by BTT, but I can say that calibration should not start with a cold nozzle. The nozzle temperature needs to be consistent throughout the calibration procedure. There should be no blobs on the nozzle during calibration, if necessary remove filament.
With regard to thermal expansion, it will not impact the calibration procedure unless the distance between the nozzle and the probe changes, which should not occur on a well designed printer. It is necessary to calibrate across the widest temperature range possible, so heat soaking is counter productive. The temperature_probe calibration procedure measures the distance between where the probe triggers and the bed, not the absolute position of the tool. Thus thermal expansion of the frame and/or bed does not impact the results.
The temperature_probe calibration procedure measures the distance between where the probe triggers and the bed, not the absolute position of the tool
okay but how. this is exactly something i cant grasp. if you want to do thermal drift compensation of your sensor your measuring (in this case different coil impedences at different temperatures) and then saving that as “Z0 reeds impedence this at this temperature”. then i dont know why z-offset is stored and where its based on.
zo maybe the question should be “are you compensating thermal drift of you sensor” or “are you compensating thermal drift of the printer with the sensor”
this are the raw values, impedance, temperature and Z-offset are stored. i dont know what the stored z-offset in this case means. is it the value form calibration reading minus temperature calibration reading resulting in this z-offset? or is this the Z-offset based on the Z-offset when te temparature calibration was completed at that point? is it being used? or is it just to visualise?
after checking sensor placement i saw that the sensor is placed around 5mm higher than nossle whitch is way to high as per guide (should be around 2 to 3 mm). i thought i adjusted this correctly but aparently not.
let me adjust this en recalibrate everything and see if maybe the problems im having are bound to sensor placement being to high
I believe that your interpretation as to what the calibration values represent is not correct. I’ll try to briefly explain how the calibration works, but it may be a bit too in depth to describe on a forum. My recommendation would be to check out the source code of temperature_probe.py to get the full picture.
After a manual probe is performed, the calibration reads the frequency reported by the probe at several different Z positions relative the the bed (specifically every .5 mm from where the manual probe completes). This gives us a series of coordinates (temperature, frequency) for each height. These coordinates are then fit to a 2d polynomial for each height. The values you see in the drift_calibration option are the coefficients for the polynomials.
With these polynomials in hand, we can correct the frequency reported by the probe based on the current temperature reading.
It is compensating drift of the sensor itself. In theory the calibration could be transferred to another printer if the sensor is moved to another printer, although I would recommend performing a new calibration in this scenario. The thing to keep in mind is that each individual sensor will have a unique calibration.
seems like everything works again after adjusting the sensor and calibration.
steps i did. (maby handy as reference to somebody also having problems)
removed the saved calibration values from printer.cfg
adjusted the sensor to 2mm above the nossle
calibrated the Gain by moving the sensor 20 mm above the bed and using the command :LDC_CALIBRATE_DRIVE_CURRENT CHIP=btt_eddy
save config, homing printer. (note at this stage you cant use the BTT eddy sensor because its not fully calibrated yet. i do homing with endstops. the sensor is only used with QGL and BED MESH for me)
heating nossle to 240 degrees and waiting for stable temp.
moved the head to middle of the bed and using PROBE_EDDY_CURRENT_CALIBRATE CHIP=btt_eddy calibrated the sensor with the paper test.
save config, homing printer. (BTT eddy sensor is calibrated at this point and can be used).
heating nossle to 240 degrees and waiting for stable temp. and did the z-offset calibration by moving the head to the middle of the bed (i used the Z-offset calibration in Klipperscreen for this)
save config, homing printer.
waited until nossle and BTT eddy sensor are around room temp.
heated the nossle to 240 degrees and did the temperature calibtration with TEMPERATURE_PROBE_CALIBRATE PROBE=btt_eddy TARGET=100 STEP=6. the first calibration i did on a cold bed. After that i heated the bed in steps of 15 degrees starting at 50 degrees and waited with the next calibration until the heated bed was heatsoaked. my end temperature was 120 degrees of the bed. i did it this way because it gives me more control on how hot the sensor gets at a certain calibration point and while doing the calibration doesn’t heat up more giving (maybe) more stable reading during certain temperatures.
after testing i started a print (nossle at 255 and bed at 110) and saw that the lines where sticking to the bed but the nossle was to high (after measuring the layer lines had a thickness of 0.4mm). when comparing to the paper i used (wich was a thicknes of 0.2mm) and the printer adding the first line thickness to the first layer (wich is 0.2 mm) i could confirm that calibration was succesful. After adjusting the Z-offset and added 0.2 mm to it, it was bang on.
thanks @Arksine for your explanation. after analyzing some code of temperature_probe.py and your explanation it did give me more insight on how things are working. thank again