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

PINDA v2 temperature sensor / compensation #16293

Merged
merged 3 commits into from
Jan 17, 2020

Conversation

tompe-proj
Copy link
Contributor

Requirements

  • Heated bed with temperature sensor
  • Z-probe with temperature sensor (e.g. P.I.N.D.A V2)
  • Spare input for the probe thermistor

Description

I mainly print ABS with enclosure and experienced inconsistent first layer. Therefore I added my spare P.I.N.D.A V2 probe (from original MK3S) to the system. Thermistor of probe is simply connected where usually the thermistor for a second extruder goes (Note: for tests one can also zip-tie a spare thermistor to a standard probe).
Therefore, first changes were to add temperature readings for a probe thermistor.
When running G29, after each probe the temperatures will be read and according compensation values will be added to the measuread z-value. There are three tables (bed/hotend/probe), whereas each holds compensation values for a certain range of temperature.
In order to find these values I initially planned to simply copy the Prusa MK3 P.I.N.D.A calibration process. However, this process does not even work properly on my original MK3S and I honestly think Prusa does not care too much about this feature so I came up with my own but similar process. Also I found that different bed temperatures significantly effect first layer so I included it in the calibration process. For the sake of completeness I also added a table for hotend temperatures (which have to be set manually). (calibrate: G76, modify values: M871).

For calibration it is important that while one component gets calibrated, the others temperature is held constant. E.g. when calibrating probe, bed temperature is held constant (e.g. 100°C). First z-probing is always the base value (e.g. probe at 30°C), following probes will then calculate the delta (i.e. the relative error due to temperature change of probe). E.g. second probing (probe at 35°C) will measure a delta of 5um to base value, therefore if I ever do a bed leveling and my probe measures 35°C I would have to subtract this value from the measured_z. This relative errors are the compensation values that will then be stored in a table.
When calibrating bed temperatures, we first park the print-head in a position where the probe can cool down below 30°C, then move it to the probe point close to the bed and wait until it reaches 30°C, finally do the probing. Doing this over and over again allows to measure different bed temperatures by constant 30°C probe temperature.

Probe calibration:
Note: make sure fans are not blowing at probe or it will not heat up enough, we should at least reach 45-50°C to get enough data for a linear regression and extrapolation to be somewhat accurate

  • Move probe to cooldown point.
  • Heat up bed to 100°C.
  • Move probe to probing point (1mm above heatbed).
  • Wait until probe reaches target temperature (30°C).
  • Do a z-probing (=base value) and increases probe target temperature by 5°C.
  • Wait until probe reaches increased target temperature.
  • Do a z-probing (delta to base value will be a compensation value) and increases probe target temperature by 5°C again.
  • Repeats last two steps until max. temperature reached or timeout (i.e. probe does not heat up any further).
  • Missing compensation values of higher temperatures will be extrapolated (using linear regression first). Note: While this is not exact by any means it is still better than simply using the compensation value of highest temperature in table.

Bed calibration:
Note: heating up the probe to 30°C should be no problem, even at a bed temp. of 60°C (otherwise shield probe from fans again)

  • Move probe to cooldown point.
  • Heat up bed to 60°C.
  • Move probe to probing point (1mm above heatbed).
  • Wait until probe reaches target temperature (30°C).
  • Do a z-probing (=base value) and increases bed temperature by 5°C.
  • Moves probe to cooldown point.
  • Wait until probe is below 30°C and bed has reached target temperature.
  • Move probe to probing point and waits until it reaches target temperature (30°C).
  • Do a z-probing (delta to base value will be a compensation value) and increases bed temperature by 5°C.
  • Repeat last four points until max. bed temperature reached (e.g. 110°C) or timeout.
  • Missing compensation values of higher temperatures will be extrapolated (using linear regression first). Note: While this is not exact by any means it is still better than simply using the compensation value of highest temperature in table.

I´m not a professional when it comes to Marlin, in fact this was my first time changing more than just the config files. But since it was clear that this is not a feature to be implemented soon, I thought I would give it a shot. There might be errors in it or simply malfunction due to a different setup that I had not thought about. However, I run this code on an "almost clone" of a Prusa MK3S and had no problems so far.
In case there are any questions feel free to contact me.

Benefits

Adding support for z-probes with a thermistor (e.g. P.I.N.D.A V2) and a way to calibrate first layer temperature compensation values (will then be used with G29).

Related Issues

More consistent first layers at various bed and probe temperatures.
P.I.N.D.A V2 support in Marlin was already requested as a feature before.

@thinkyhead thinkyhead changed the title Added first layer temperature compensation and probe thermistor suppo… PINDA v2 temperature sensor / compensation Dec 23, 2019
@boelle
Copy link
Contributor

boelle commented Dec 23, 2019

now you just need to implement the prusa style of probing the mk42 bed and prusa printers can almost run marlin without missing important features :-D

of course all the selftests prusa has will be missing

@tompe-proj
Copy link
Contributor Author

The probing of bed calibration points they do on setup is their way of skew correction, right?
I actually have a genuine MK52 on my Marlin printer so I might play around with it some day.

@boelle
Copy link
Contributor

boelle commented Dec 23, 2019

yes they do a zig zag search over each point, just high enough over the bed that it will only trigger when right over the center of each point

and they do multiple passes over each point so i gues on each pass they go a bit up

and they know where the points should be so they can compare them to where they are and figure XY skew and at the same time they also have done probing for height/level

or so i think it is, i'm not good at coding but might be worth looking in to their copy of marlin (old version based)

@tompe-proj
Copy link
Contributor Author

Right, I can confirm that they in fact do change their z while running zig zag, I realized that when running my own setup. I think they start rather high and then go lower while running zig zag, this way you should get x, y, and z for each calibration point. Assuming the coordinate system is fixed to the frame, one can then find the bed plane in it... or rather the orientation (I think that is all you need for skew correction). However, I have not really thought about this in depth. I think it would make sense to take a peek at the Prusa sources first and then think about how to feed this data into the already existing skew correction in Marlin.

Marlin/Configuration.h Show resolved Hide resolved
Marlin/Configuration.h Outdated Show resolved Hide resolved
Marlin/Configuration.h Outdated Show resolved Hide resolved
Marlin/Configuration.h Outdated Show resolved Hide resolved
Marlin/src/feature/temp_comp.cpp Outdated Show resolved Hide resolved
Marlin/src/feature/temp_comp.h Outdated Show resolved Hide resolved
@tompe-proj
Copy link
Contributor Author

In current commit of file probe_temp_compensation.h there seems to be a typo after code cleanup (line 43-45):
static constexpr temp_calib_t calib_arr_init[TC_COUNT] = { { 10, 30, 5, 10 + ( 30 * 5) }, { 10, 60, 5, 10 + ( 60 * 5) }, { 5, 180, 20, 5 + (180 * 20) } };
The end temp is calculated 30 + (10 * 5) and so on.

@GMagician
Copy link
Contributor

GMagician commented Jan 17, 2020

samd51 needs more code to add probe adc reading...
hal.cpp

#if HAS_TEMP_ADC_PROBE
  #define GET_PROBE_ADC()         PIN_TO_ADC(TEMP_PROBE_PIN)
#else
  #define GET_PROBE_ADC()         -1
#endif

adc_pins array:
in
above // ADC1 pins

#if GET_PROBE_ADC() == 0
  TEMP_PROBE_PIN,
#endif

below // ADC1 pins

#if GET_PROBE_ADC() == 1
  TEMP_PROBE_PIN,
#endif

adc0_dma_regs_list array:

#if GET_PROBE_ADC() == 0
  { PIN_TO_INPUTCTRL(TEMP_PROBE_PIN) },
#endif

adc1_dma_regs_list array:

#if GET_PROBE_ADC() == 1
  { PIN_TO_INPUTCTRL(TEMP_PROBE_PIN) },
#endif

@thinkyhead
Copy link
Member

samd51 needs more code to add probe adc reading...

That's outside the scope of this PR and should be submitted separately.

@thinkyhead
Copy link
Member

thinkyhead commented Jan 17, 2020

The end temp is calculated 30 + (10 * 5) and so on.

Thanks for reviewing. Now patched!

@thinkyhead thinkyhead merged commit a338dce into MarlinFirmware:bugfix-2.0.x Jan 17, 2020
@thinkyhead
Copy link
Member

I tried to preserve all the same functionality with my patches, but there can always be more typos. So, of course, keep us posted and submit fixes for any issues that you find. The new G-codes will need to be documented in the MarlinFirmware/MarlinDocumentation repository before this is considered complete.

@tompe-proj
Copy link
Contributor Author

I just added some doc files and opened a merge request. However, checks failed so maybe somebody can review my formatting. I don't know what caused it to fail.
https://github.com/MarlinFirmware/MarlinDocumentation/pull/269

@tompe-proj
Copy link
Contributor Author

Somehow my link does not work when clicking but it does when copy-pasting. If neither does for you just search for request 269 in MarlinDocumentation.

@rado79
Copy link
Contributor

rado79 commented Jan 19, 2020

Does G76 need automatic bed leveling activated? or does itworks independently.

@3d-gussner
Copy link

Thanks to getting this into Marlin.

Can you also please update RepRap Gcode Wiki that Marlin uses G76 and add M871 as well?

Looking into Prusa Firmware the #define TEMP_SENSOR_PROBE should be 1, maybe a note that PINDAv2 uses the "1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup)" would be helpful.

Question: How are the pins_xxx.h files updated?

I was missing this new feature especially in pins_EINSY_RAMBO.h and pins_MINIRAMBO.h as these are used in Prusa MK2.5/s MK3/s.

@tompe-proj
Copy link
Contributor Author

Does G76 need automatic bed leveling activated? or does itworks independently.

G76 itself is standalone. However, currently the compensation values will only be taken into account when you run G29 (ABL).

@rado79
Copy link
Contributor

rado79 commented Jan 19, 2020

This is a nice feature, thanks! Would be great to have it without G29, just to adapt z-offset.

@tompe-proj
Copy link
Contributor Author

Would be great to have it without G29

It should be possible to move the temp-compensation from G29 directly to the function probe_at_point() in probe.cpp. Although the function would need an extra parameter to disable compensation for certain calls -> we also use this function when running G76 and it would mess with us. I'm not a Marlin dev so I don't know if this change could break other parts in code.

@boelle
Copy link
Contributor

boelle commented Jan 31, 2020

now that its fully working do you have any plans to add the mk42 and mk52 bed?

some initial work was made here: #13348 and there is a FR for it here: #6199

@tompe-proj
Copy link
Contributor Author

@boelle I still do but don't want to guarantee anything. Was quite busy the last days but it got better again. I will start by checking Prusa code to get an idea of what they are doing exactly. Since Marlin already has skew correction it would probably be best to just estimate all values that would normally be measured manually after printing a test object.

mjparme added a commit to mjparme/Marlin that referenced this pull request Feb 1, 2020
* Don't test certain changes

* Reset runout.ran_out on resume (MarlinFirmware#16230)

* Step timing cleanup and rounding fix (MarlinFirmware#16258)

* Add MRR_ESPA/_ESPE (ESP32) boards (MarlinFirmware#16238)

* Add Ender-5 Pro config (MarlinFirmware#16221)

* Add FLYBOARD (STM32F407ZG) (MarlinFirmware#16257)

* Fix STM32 flush of TX (used by UBL) (MarlinFirmware#16197)

* Flash leveling (for some STM32) (MarlinFirmware#16174)

* Some ESP32 patches (MarlinFirmware#16297)

* MKS SGen-L pins EEBF or EFBF scheme (MarlinFirmware#16296)

* Add Rumba32 support for PIO (MarlinFirmware#16202)

* MKS Robin 2 (STM32F407ZE) base support (MarlinFirmware#16270)

* Update Czech language (MarlinFirmware#16305)

* Sync SKR E3 configs (MarlinFirmware#16301)

* Add NOZZLE_AS_PROBE (no probe offsets) (MarlinFirmware#15929)

* Update README with status badge, etc.

* Split up HAL items

* Update mfpub for current MarlinDocumentation

* Fix Max7219 with 256 or more cels

* Fix games menu back item, titles

* Update comments re: NOZZLE_AS_PROBE

* Fix min limit for acc, feed, jerk (MarlinFirmware#16416)

* Improve Renkforce configs (MarlinFirmware#16417)

* Permit ENDSTOP_INTERRUPTS_FEATURE on more STM32 (MarlinFirmware#16412)

* Improve STEVAL_3DP001V1 and future STEVAL_* support (MarlinFirmware#16404)

* MKS Robin ILI9328 TFT support (MarlinFirmware#16401)

* Disable PIDTEMPBED for SKR Mini E3 (MarlinFirmware#16396)

* Return from loop() on non-AVR boards (MarlinFirmware#16390)

* Refactor TMC-related macros and sanity checks (MarlinFirmware#16384)

* Add FILAMENT_UNLOAD_PURGE_FEEDRATE (MarlinFirmware#16372)

* Fix some DOGM warnings (MarlinFirmware#16363)

* Fix warnings in stepper.cpp (MarlinFirmware#16364)

* Fix PrintrBoard build (ignore TMC libraries) (MarlinFirmware#16346)

(In future try to get Teensy processors better supported by `TMCStepper`.)

* Clean up trailing whitespace

* PWM pin not needed for Neopixel brightness / submenu (MarlinFirmware#16345)

* Misc patches preceding DGUS PR

* Fix Visual Micro "Arduino IDE for Visual Studio" support (MarlinFirmware#16418)

* Update Russian language (MarlinFirmware#16426)

* STM32F1: Fix misleading indent / nullptr on FSMC (MarlinFirmware#16431)

* Z-offset edit precision based on value limits (MarlinFirmware#16425)

* Add Ender-5 leadscrew README (MarlinFirmware#16424)

* Add motherboard BIGTREE_SKR_V1.4_TURBO  (MarlinFirmware#16374)

* Enable MULTI_NOZZLE_DUPLICATION for BIBO (MarlinFirmware#16435)

* Touch UI: Fix UBL mesh value editing (MarlinFirmware#16432)

* Sidewinder X1 Config Updates (MarlinFirmware#16315)

* Add Leapfrog Xeed 2015 support (MarlinFirmware#16400)

* Improve JGAurora A1/A5S touch buttons (MarlinFirmware#16394)

* Standardize drivers.h values, add class indirection (MarlinFirmware#16448)

* Update Russian language (MarlinFirmware#16440)

* BTT002: Add runout, PLR, and RGB pins (MarlinFirmware#16442)

* Pins debugging AVR serial pins (MarlinFirmware#16437)

* Fix MIN_PROBE_EDGE bug in default ABL G29 (MarlinFirmware#16367)

* Temporary CI fix for STM32

* Use a default monitor_speed of 250000

* MSG_WATCH => MSG_INFO_SCREEN

* Add EVNOVO (Artillery) Genius config (MarlinFirmware#16320)

* Fixed Creality CR-20 Pro configuration example (MarlinFirmware#16332)

* FYSETC F6 v1.4 board support (MarlinFirmware#16321)

* Add example configs. Expand custom menu. (MarlinFirmware#16286)

- Anet E10
- Geeetech D200
- Geeetech M201
- JGAurora Magic
- MakerFarm Pegasus 12

* Fix Ender-2 display pins, add BTN_ENC (MarlinFirmware#16349)

* Update and fix DGUS (MarlinFirmware#16317)

* Fix serials available on SKR Pro 1.1 (MarlinFirmware#16439)

* Fix daily date bump action

* Action to check PRs

* Update maintainer funding links

* Skip build tests on forks

* Update git helper usage

* Fix EEPROM error with EXTRUDERS == 0 (MarlinFirmware#16464)

* Fix M115 cap with EXTRUDERS == 0 (MarlinFirmware#16459)

* Add option to invert joystick axes (MarlinFirmware#16466)

* Update Russian language (MarlinFirmware#16461)

* Fix permyriad progress bar (MarlinFirmware#16460)

* Improve French language (UBL) (MarlinFirmware#16453)

* Followup to EEPROM patch (MarlinFirmware#16470)

* Remove extra UBL map edit menu item (MarlinFirmware#16451)

* Fix unused var warning (MarlinFirmware#16467)

* Update U20 config to help UBL toggle (MarlinFirmware#16471)

* Move auto_build.py to 'vscode' folder

* Fix MKS_SGEN sanity check (MarlinFirmware#16501)

* Fix EEPROM array size bug (MarlinFirmware#16475)

* Fix SKR Pro BLTouch conflicting timers (MarlinFirmware#16499)

* Provide some missing Arduino macros (MarlinFirmware#16497)

* Fix Change Filament menu item with runout (MarlinFirmware#16485)

* Fix LCD for Tevo Tornado (MarlinFirmware#16474)

* Update workflow skip condition

* Add menu item Tune > Advance K (MarlinFirmware#16488)

* Extend SERIAL_CHAR to take multiple arguments

* Code style and comment tweaks

* Correct ESP32 CPU speed in README (MarlinFirmware#16472)

* Add ARC_SEGMENTS_PER_SEC for finer G2/G3 arcs (MarlinFirmware#16510)

* Fix compile error w/out LCD (MarlinFirmware#16502)

* Add Probe Offsets menu (MarlinFirmware#16444)

* Fix Probe Offset XY edit items (et Français) (MarlinFirmware#16523)

* Update Russian language (MarlinFirmware#16522)

* [cron] Bump distribution date (2020-01-10)

* Prevent Z misaligment on tool change (MarlinFirmware#16518)

* Update Italian language (MarlinFirmware#16527)

* ESP3d integration for ESP32 (MarlinFirmware#16515)

* [cron] Bump distribution date (2020-01-11)

* Migrate actions to default (2.0.x) branch

* Only constrain motion on homed axes (MarlinFirmware#16533)

Co-authored-by: Scott Lahteine <[email protected]>

* Fix probeless delta build (MarlinFirmware#16537)

* Use RECIPROCAL macro (not _RECIP) (MarlinFirmware#16530)

* [cron] Bump distribution date (2020-01-12)

* Restore test_builds action to bugfix

* Update auto_build.py paths for Atom/Sublime

* [cron] Bump distribution date (2020-01-13)

* Add GTM32 (STM32F103VET6) environment (MarlinFirmware#16454)

* Power options formatting

* Geeetech G2Pro configuration (MarlinFirmware#16553)

* Fix Linux upload path detection (MarlinFirmware#16514)

* Add SERVO, TONE timers to variant for better STEVAL_3DP001V1 support (MarlinFirmware#16538)

* Clean up whitespace

* [cron] Bump distribution date (2020-01-14)

* Improved STMicro L64XX stepper driver support (MarlinFirmware#16452)

* Make lcd_power_loss_recovery_cancel exportable

* Fix PLR cancel with ExtUI (MarlinFirmware#16556)

* Bring MP_SCARA config up to date

* Fix Fysetc S6 FLASH_PAGE_SIZE and test build (MarlinFirmware#16560)

* [cron] Bump distribution date (2020-01-15)

* Update more configs

* Move configurations to a separate repo

* Fix build error with unsupported reset flags (MarlinFirmware#16562)

* Steval_3DP001V1 timers, analog inputs, etc. (MarlinFirmware#16565)

* Use Flash EEPROM on BTT002 (MarlinFirmware#16558)

* Get test configs from GitHub

* Fix typo

* Nikon IR support for time lapse photos (MarlinFirmware#16539)

* Adjustable ADC debounce delay (MarlinFirmware#16264)

* [cron] Bump distribution date (2020-01-16)

* STM32 RODATA LENGTH (MarlinFirmware#16580)

* Fix I2C address of MCP4728 on LPC176x (MarlinFirmware#16578)

* Fix GTM32 environment (to prevent a crash)

* Fix some warnings, Melzi pins

* Move macros to stepper/indirection

* Fix TOUCH_UI_FTDI_EVE bugs (MarlinFirmware#16540)

* ESP32 HAL: Fix random pauses during prints (MarlinFirmware#16548)

* [cron] Bump distribution date (2020-01-17)

* STM32 soft SPI. STEVAL_3DP001V1 SD read. M906 tweaks. (MarlinFirmware#16579)

* Clean up HAL ADC, old test scripts

* Adjust GTM32 build flags (MarlinFirmware#16582)

* Shared SPI sanity check (MarlinFirmware#16581)

* More CI test updates

* Update FYSETC S6 pins (MarlinFirmware#16559)

* PINDA v2 temperature sensor / compensation (MarlinFirmware#16293)

* [cron] Bump distribution date (2020-01-18)

* Allow RRW Keypad with any LCD

* [cron] Bump distribution date (2020-01-19)

* [cron] Bump distribution date (2020-01-20)

* Fix M112 with Emergency Parser

* Simplify TMC monitor code

* Updates for L64XX

* Function-like macros

* Use bool in pin compare

* Patch for _STEP_INIT

* Simplify a drivers.h macro (MarlinFirmware#16589)

* SAMD51: ADC for probe temperature compensation (MarlinFirmware#16596)

* Update FYSETC S6 Peripheral Pins (MarlinFirmware#16593)

* Update BTT002 pins (MarlinFirmware#16591)

* Reset shutdown timer on M85 (MarlinFirmware#16587)

* AVR sanity check for MONITOR_DRIVER_STATUS with SW Serial (MarlinFirmware#16421)

* STEVAL_3DP001V1: Easier Serial2 (for WIFI interface) (MarlinFirmware#16599)

* Fix Greek language string (MarlinFirmware#16601)

* Quad Z stepper support (MarlinFirmware#16277)

* LPC1768: Allow I2C master channel override (MarlinFirmware#16584)

* Move steps/mm out of slim menus (MarlinFirmware#16603)

* Fix CHAMBER_MAXTEMP security margin (MarlinFirmware#16600)

* L64xx M906 Fix status variable, formatting (MarlinFirmware#16597)

* Provide methods for M420 + MBL (MarlinFirmware#16602)

* [cron] Bump distribution date (2020-01-21)

* Fix STM401/4xx/STM32F7xx timers, STEVAL_3DP001V1 warning (MarlinFirmware#16621)

* Override for LPC1768 u8g/digipot I2C master ID (MarlinFirmware#16622)

* Release UI on G26 priming timeout (MarlinFirmware#16449)

* Add HMS434 V15 ATSAM board (MarlinFirmware#16620)

* Tweak some config spacing

* G12 defaults per tool. Event G-code for post-toolchange (MarlinFirmware#16554)

* Arc segment radius scaling (MarlinFirmware#16551)

* Update mfdoc, mfpub

* [cron] Bump distribution date (2020-01-22)

* Tweak mfpub stashing

* [cron] Bump distribution date (2020-01-23)

* Enable use of latest TMCStepper on MKS Robin Nano (MarlinFirmware#16652)

* [cron] Bump distribution date (2020-01-24)

* Convert chars only for enabled languages

* Extra debugging for leveling on/off

* Bring configs and drivers.h up to date

* Duet Smart Effector support (MarlinFirmware#16641)

* BigTreeTech GTR V1.0 / Support 8 extruders, heaters, temp sensors, fans (MarlinFirmware#16595)

* [cron] Bump distribution date (2020-01-26)

* Fix DELTA_CALIBRATION_MENU recursive call (MarlinFirmware#16656)

* Fix MKS Base + Digipot compile error (MarlinFirmware#16636)

* Add ESP3DLib idletask entry point (MarlinFirmware#16658)

* Fix Serial defines for M43 on AVR (MarlinFirmware#16649)

* Fix HOMING_BACKOFF_MM for DELTA (MarlinFirmware#16657)

* Clean up PID language defines

* More 8 extruder defines

* Update Slovak language (MarlinFirmware#16646)

* Fix M43 timer report on AVR (MarlinFirmware#16645)

* Fix Spanish (swapped BLTouch strings) (MarlinFirmware#16637)

* SKR 1.3 sensorless endstops hack (MarlinFirmware#16659)

* Fix PID F menu label

* [cron] Bump distribution date (2020-01-27)

* Preserve CWD for write/remove file (MarlinFirmware#16667)

* Rename some temperature members

* Fix Trigorilla 1.4 limit switches

See MarlinFirmware#16612

* Fix serial port redirection (index ≠ port num) (MarlinFirmware#16687)

* G60/G61 Position Save/Restore (MarlinFirmware#16557)

* Remove extraneous G60/G61 lines

* Fix Manual Bed Leveling with multiple extruders (MarlinFirmware#16688)

* [cron] Bump distribution date (2020-01-28)

* Prevent SD access from resetting ESP32 (MarlinFirmware#16690)

* [cron] Bump distribution date (2020-01-29)

* Fix Toolchange (!no_move) return to status (MarlinFirmware#16699)

* [cron] Bump distribution date (2020-01-30)

* Cleanup of old includes, add comments

* Fix HAS_FAN macro (MarlinFirmware#16717)

* Fix probe temp calibration (MarlinFirmware#16718)

* Support for E4d@BOX mainboard (MarlinFirmware#16716)

* Fix missing string for M48 build (MarlinFirmware#16708)

* Fix G60/G61 slots > 8 and compile error (MarlinFirmware#16715)

* Move L64XX index_to_axis to progmem (MarlinFirmware#16697)

* Refactor heater watch, job timer auto-start (MarlinFirmware#16725)

* Auto assign DIAG pins for multi-endstop (MarlinFirmware#16723)

* Tweak G60/G61 slots

* Fix compile error in SdVolume on ESP32 (MarlinFirmware#16728)

* Simultaneous use of rotary encoder and touch buttons (MarlinFirmware#16729)

* Set up DIAG endstops for BTT SKR 1.4 / 1.4 Turbo (MarlinFirmware#16727)

* Extend RX/TX pins for up to 8 extruders

* Fix up, improve endstop pin auto-assignment

Followup for MarlinFirmware#16723

* (21) PT100 for MCUs with 3.3v logic (MarlinFirmware#16731)

* [cron] Bump distribution date (2020-01-31)

* Add sanity-check for new Advanced Pause option

Followup to MarlinFirmware#16372

* Include macros for delta ABC

* Update Russian language (MarlinFirmware#16745)

* Fix BTT SKR 1.4 extra endstop pins (MarlinFirmware#16738)

* Option for Trigorilla 1.4 with add-on endstops board (MarlinFirmware#16737)

* Consistent M112 with Emergency Parser (MarlinFirmware#16747)

* Improve mfadd helper script

- Use the original branch name if none is supplied
- Set the remote tracking to the source
- Accept User/Branch or User:Branch syntax

* Clean up i2c encoder, sanitize serial

* Misc cleanup, whitespace

* Encapsulate probe as singleton class (MarlinFirmware#16751)

* G34 automatic point assignment (MarlinFirmware#16473)

* Fix Temperature::over_autostart_threshold (MarlinFirmware#16749)

* Update Russian language (MarlinFirmware#16750)

* Fix CURRENT_STEP_DOWN compile error

* Drop obsolete SD special char handling

See MarlinFirmware#14035

* Probe singleton patch

Followup to MarlinFirmware#16751

* Fix RGB / Neopixel white color bug

See MarlinFirmware#16752

* Suppress a compile warning

* More 8-extruder fixups

Co-authored-by: Scott Lahteine <[email protected]>
Co-authored-by: Tanguy Pruvot <[email protected]>
Co-authored-by: Jason Smith <[email protected]>
Co-authored-by: Luc <[email protected]>
Co-authored-by: thisiskeithb <[email protected]>
Co-authored-by: FLYmaker <[email protected]>
Co-authored-by: randellhodges <[email protected]>
Co-authored-by: ferengi82 <[email protected]>
Co-authored-by: Luu Lac <[email protected]>
Co-authored-by: petrzjunior <[email protected]>
Co-authored-by: InsanityAutomation <[email protected]>
Co-authored-by: Giuliano Zaro <[email protected]>
Co-authored-by: Dirk O. Kaar <[email protected]>
Co-authored-by: Pascal de Bruijn <[email protected]>
Co-authored-by: Bob Kuhn <[email protected]>
Co-authored-by: Alexander Gavrilenko <[email protected]>
Co-authored-by: swilkens <[email protected]>
Co-authored-by: Lino Barreca <[email protected]>
Co-authored-by: rado79 <[email protected]>
Co-authored-by: Acenotass <[email protected]>
Co-authored-by: ellensp <[email protected]>
Co-authored-by: Walt Sorensen <[email protected]>
Co-authored-by: yedey <[email protected]>
Co-authored-by: George Fu <[email protected]>
Co-authored-by: Vertabreaker <[email protected]>
Co-authored-by: greppp <[email protected]>
Co-authored-by: Jamie <[email protected]>
Co-authored-by: Justin <[email protected]>
Co-authored-by: ManuelMcLure <[email protected]>
Co-authored-by: 0r31 <[email protected]>
Co-authored-by: Alejandro Aguilera <[email protected]>
Co-authored-by: meponderR <[email protected]>
Co-authored-by: Mehdi Beyk Mohamadi <[email protected]>
Co-authored-by: FlyingSamson <[email protected]>
Co-authored-by: Ryan V1 <[email protected]>
Co-authored-by: David Klasinc <[email protected]>
Co-authored-by: gjdodd <[email protected]>
Co-authored-by: Dennis <[email protected]>
Co-authored-by: felixstorm <[email protected]>
Co-authored-by: vivian-ng <[email protected]>
Co-authored-by: tompe-proj <[email protected]>
Co-authored-by: MaukCC <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Artur Petrzak <[email protected]>
Co-authored-by: yangwenxiong <[email protected]>
Co-authored-by: Roman Moravčík <[email protected]>
Co-authored-by: Robby Candra <[email protected]>
Co-authored-by: Hans007a <[email protected]>
Co-authored-by: Neskik <[email protected]>
Co-authored-by: Mauro <[email protected]>
Co-authored-by: Radek Pietruszewski <[email protected]>
Co-authored-by: chgi <[email protected]>
Co-authored-by: Robert Stein <[email protected]>
Co-authored-by: rebel1 <[email protected]>
@thinkyhead
Copy link
Member

thinkyhead commented Feb 27, 2020

There seems to be some confusion in the code about the meaning of the probe / wait-for-heat position. Do you intend for PTC_PROBE_POS_X/Y to indicate the position to put the probe or the position to put the nozzle? It is unclear from the code what the intention is, but it seems to refer to the nozzle position and not to the probe position. See #16995 and #17005.

@npmomchev
Copy link

npmomchev commented May 17, 2020

I installed Marlin 2.5.0.3. I put on the printer P.I.N.D.A. v2 sensor. I'm trying to find the temperature dependence of the sensor. After reading the bed temperature offset values, the G76 command moves the sensor outside the bed perimeter and heats the bed to the maximum temperature. The temperature of the probe is about 26 degrees. Then nothing happens. I know from the manual that I have to read the values manually. Can anyone help step by step how to do this.

@tompe-proj
Copy link
Contributor Author

@npmomchev So if I understand correctly you run G76 and bed calibration completes successfully but when it starts the process for the probe calibration it just keeps sitting there doing nothing.

  • When running probe temp-calibration it moves the probe outside the print area to cool it down and heat up the bed to max temperature at the same time. Only when the probe is below probe start temp (usually 30°C) and bed has reached target temp (PTC_MAX_BED_TEMP) it will continue. In Configuration_adv.h there you will find the parameter PTC_MAX_BED_TEMP, make sure your bed can actually reach this temperature. E.g. in case it is set to 110°C and your bed only reaches 100°C max your printer will wait until it runs into timeout and as a consequence fail the calibration process.

  • Setting values manually means the following: after a successful calibration process, all values are stored in RAM only, so they are already active but after a reboot they will be lost again. In order to store them permanently run the M500 command to copy them from RAM into EEPROM. It is also good practice to read them first using M871 and check if the values actually make sense (e.g. there might be some outliers). You can also correct/set single values by manually using the M871 command. Once you are satisfied store them using M500.

You can find example values and the whole process of calibration here:
https://marlinfw.org/docs/features/probe_temp_compensation.html

Hope this helps.

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

Successfully merging this pull request may close these issues.

9 participants