Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MK3 3.2.0-RC1 - automatic temp calibration does not produce offsets to EEPROM #630

Closed
stahlfabrik opened this issue Apr 14, 2018 · 17 comments

Comments

@stahlfabrik
Copy link
Contributor

I tried two times to do the automatic temperature calibration.

After the first time under "Settings" the toggle for temp calibration goes from off to on.

After both times the EEPROM does not get written to:
>>>M861 ? SENDING:M861 ? PINDA cal status: 1 index, temp, ustep, um n/a, 35, 0, 0.00 0, 40, 0, 0.00 1, 45, 0, 0.00 2, 50, 0, 0.00 3, 55, 0, 0.00 4, 60, 0, 0.00

So the offsets stay zero as if the calibration routine would not write to EEPROM at all.

Oh - looking at the console it seams that during calibration already there are only "zeros produced":

ZERO: -1.00 Step: 1/6 (skipped) PINDA temperature: 35 Z shift (mm):0 Step: 2/6 T:28.81 E:0 B:76.0 ... T:41.48 E:0 B:100.9 PINDA temperature: 54.90 Z shift (mm):0.00 Step: 6/6 ... T:41.66 E:0 B:100.5 PINDA temperature: 60.09 Z shift (mm):0.00 Temperature calibration done. Continue with pressing the knob.

@stahlfabrik stahlfabrik changed the title MK3 3.2.0-RC1 - Temp calibration does not produce offsets to EEPROM MK3 3.2.0-RC1 - automatic temp calibration does not produce offsets to EEPROM Apr 14, 2018
@mylife4aiurr
Copy link

I cant even see the offsets. When I enter M861, responses unknown command.

@GurliGebis
Copy link

@mylife4aiurr did you include the questionmark after the command?

@stahlfabrik
Copy link
Contributor Author

Exactly, the command to query is "M861 ?"
(The other command options are all viewable in Marlin_main.cpp)

@mylife4aiurr
Copy link

I did not put a "?". I never put a ? in a gcode command B4. I will try it.

@Crunch69
Copy link

Crunch69 commented Apr 17, 2018

I ran several times and offsets where produced and saved issue is they are not constant and vary each and every time

PINDA temperature: 35 (mm):0
PINDA temperature: 40.28 (mm):0.05
PINDA temperature: 45.29 (mm):0.04
PINDA temperature: 49.87 (mm):0.06
PINDA temperature: 55.16 (mm):0.10
PINDA temperature: 60.16 (mm):0.16

PINDA temperature: 35 (mm):0
PINDA temperature: 39.98 (mm):0.06
PINDA temperature: 45.07 (mm):0.08
PINDA temperature: 49.97 (mm):0.12
PINDA temperature: 55.22 (mm):0.16
PINDA temperature: 60.19 (mm):0.24

@stahlfabrik
Copy link
Contributor Author

stahlfabrik commented Apr 18, 2018

@Crunch69 Did you do a firmware reset and calibrate XYZ under the 3.2.0-RC1 release? Or did you just update from 3.1.3 (and calibrated there)?

Best regards

Edit: They never are constant - see my comment in the issue that you have opened. That is normal and not a real issue - also the variation is very small! AND you should calculate mean values and use the new GCODE M861 to store mean values to EEPROM

EDIT2: And I am not a fan of the current automatic calibration because for my machine it makes everything worse (under 3.1.3 where it does produce values). I thus propose a manual print based approach which leads to the perfect set of offset values. See https://shop.prusa3d.com/forum/hardware-firmware-and-software-help-f64/1st-layer-problems-in-depth-look-at-software-pinda-t14815.html

EDIT3: TLDR:
This outlines how to do manual print based temperature calibration

  1. You turn of any temp calibration by going to settings in the menu and doing "M861 Z" just to be sure.
  2. You prepare a gcode file with a nice big first layer for PLA. You add the M860 Sx Gcode into it as described.
  3. You create multiple of these files with different x values (35, 40, 45, 50, 55, 60). For x above 45 you need to raise bed temperature.
  4. You start each gcode file and do adjust live Z to achieve the perfect first layer each time.
  5. You note down each live Z value for each PINDA temperature.
  6. You do the math do calculate the offsets. See the end of the forum post above for a discussion about SIGN of the offset values
  7. You store the set of optimal offsets that you have measured and calculated to EEPROM
  8. You enable temp calibration in settings / menu.
  9. You are happy printing ever after

EDIT4:
Here is a possible manual startup gcode which I used for the manual print based temperature calibration:
G28 W ; home all without mesh bed level
G0 Z50 ; raise Z to not heat PINDA before bed is warm
M104 S215 ; set extruder temp
M140 S60 ; set bed temp
M190 S60 ; wait for bed temp
M109 S215 ; wait for extruder temp
G0 X50 Y50 Z0.15 ; this is a good PINDA heating position
M860 S35 ; the new code - wait until PINDA is >= 35C
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling

See the M860 line? There you need to change the temperature that you want to calibrate.
See the M140 line? Play with that to reach higher PINDA temperatures for calibration

@PavelSindler
Copy link
Contributor

PavelSindler commented Apr 18, 2018

Temperature calibration contains measuring PINDa probe temperature dependency in range from 35 C to 60 C with 5 C step. If PINDa probe is already hotter at the beginning of temperature calibration then desired temperature for measuring, temp calibration skips step and stores zero to eeprom (as you can have printer in hot environment such as enclosure or printing farm and in this case you sometimes can't reach low PINDA temperatures).
Running temperature calibration with very hot PINDa probe can lead to skipping all steps and storing zeros to eeprom. But it doesn't seem that it is your case @stahlfabrik because in log you provided it seems that just first step is skipped.

@stahlfabrik
Copy link
Contributor Author

stahlfabrik commented Apr 18, 2018

Hi @PavelSindler

Thank you for taking the time to answer this issue! That is great.

I did the calibration twice. Especially the second time the pinda starting temp was below 25C. I wanted to make it sure that the printer is on ambient temperature.

The log was quite long so most steps were not skipped:-)

I think maybe it is related to the other bugs - the pinda missing the calibration points maybe - or the board type change warning?

I do not know:-(

I did not want to downgrade to stable and calibrate xyz there, then upgrade to RC1 to have a new environment to make a delta test again.

Someone commented on another issue (but deleted the comment before i could reply) that he did a temp calibration and the M861 ? Showed only zeros. He asked if that was an ok output of the new gcode.
Before temp calibration yes, after no - that what I would have replied.

So my MK3 seems not to be the only printer with this issue on RC1

@PavelSindler
Copy link
Contributor

It seems that it happen on one of our test printers also, but we just could't reproduce this issue later. But we will do more tests and hopefully find the bug.
Would it be ok, if I add your description (slightly modified) of how to use manual temperature calibration to release change log?

@stahlfabrik
Copy link
Contributor Author

Of course it is okay!

I also thought to maybe write a full guide on how to to it on the forum. But if you could describe the process - also please with a word about the sign of offsets and their very confusing display (signed vs unsigned integers) - please go ahead. People are confused right now what the two gcodes help to solve:-)

@stahlfabrik
Copy link
Contributor Author

Dear @PavelSindler:

About the offsets’ mathematical signs - I wrote a little statement. Could you please go over it and maybe adopt some info for your write up and/or tell me if there are to me unknown problems, when putting in negative offsets?

https://shop.prusa3d.com/forum/hardware-firmware-and-software-help-f64/1st-layer-problems-in-depth-look-at-software-pinda-t14815-s140.html#p78227

It seams to me it is ok. And of course it is absolutely necessary if you are not going to change the sign in that temp compensation function in mesh bed leveling:-) in my first pull request

@PavelSindler
Copy link
Contributor

So there were basicly two cases where automatic temp. calibration stored zeros to eeprom:

  1. running temp calibration with really hot PINDA probe: in this case all steps could be skipped
  2. when starting temp. cal. with steel sheet

Both have been fixed in #657

@PavelSindler
Copy link
Contributor

Fixed issue with signed / unsigned values: #671

@stahlfabrik
Copy link
Contributor Author

@PavelSindler i am super happy! I cannot wait for RC2 to be released:-) soon?

Thank you all @prusa for taking you the time to communicate more over this channel. Greatly appreciated!

@mylife4aiurr
Copy link

Friday is a great time to release a new beta for testing.......
Just say'n, users will have all weekend to give feedback.

@stahlfabrik
Copy link
Contributor Author

@mylife4aiurr Jup! In three hours it has been 14 days since RC1:-)

@stahlfabrik
Copy link
Contributor Author

Fixed in 3.2.0 RC2!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants