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

Hi temp sensor DYZE design T-D500 room temperature not detected correctly #23737

Closed
SamppaD78 opened this issue Feb 14, 2022 · 25 comments
Closed

Comments

@SamppaD78
Copy link

Did you test the latest bugfix-2.0.x code?

Yes, and the problem still exists.

Bug Description

Latest marlin,compiled for DYZE design T-D500 temperature sensor. Sensor table number 66. After installation and main board reset,restoring new eeprom values and storing settings noticed incorrect temperature values reported by this T-D500 sensor.
Sensor is reporting values of 26-36C at room temperature of 22C. I have,recompile marlin to make sure that thermistor value is set to 66, swap the thermistor for a new one,run PID and issue persist.

Bug Timeline

Started after replacing new thermal sensor on a latest Marlin firmware

Expected behavior

Expected stable temp at room temperatures and stable temps at printing temperature. I don't know if this issue is affecting PID calibration as the starting temperature is not correct.

Actual behavior

Reported temperature is not correct at room temperature also fluctuate between 26 and 36C at stable room temperature of 22C

Steps to Reproduce

Compile Marlin to support dyze temperature enabling sensor 66 for hotend
upload firmwire and restore settings from eeprom. Store new settings and look at temperature of the hotend when printer is at room temperature. Hotend will show 26-36C and bed will be at room temperature of 22C

Version of Marlin Firmware

2.0.9.3

Printer model

Creality ender 3 Pro

Electronics

SKR mini E3 2.0

Add-ons

no

Bed Leveling

ABL Bilinear mesh

Your Slicer

Cura

Host Software

Pronterface

Additional information & file uploads

Here is a T-D500 resistance values from manufacturer
T-D500

vid-20220214-165344-J7HIM6aA.mp4
@thisiskeithb
Copy link
Member

Try reverting the changes from #23585

@rq3
Copy link

rq3 commented Feb 14, 2022

Marlin currently has a real problem with sensors that are NOT fairly standard 100K thermistors, with a 4.7K pull-up. The DYZE design high temperature thermistor has a room temperature value of about 3 to 4 MEGA OHMS, so the controller board analog to digital converter (ADC) has only microvolts to work with (if that), to discriminate individual degrees of temperature, let alone fractions of a degree.

At about 100C, the DYZE thermistor is down to about 100K of resistance, and the temperatures should be fairly accurate and reasonable, IF the temp table is correct. At about 300C, the DYZE thermistor resistance goes VERY low, again asking the ADC function to discriminate between very small resistance changes as the temperature rises.

These problems have always been there, and are in general, a limitation of the ADC's used on common controller boards. However, somewhere after Marlin 2.0.7.2 these issues got really bad, with up to 20 degree swings between successive ADC readings in later bugfix releases. Something got broken, and I can't find it.

On my printer, I fixed it with a custom amplifier, and a custom thermistor table (with only two data points; 0 count at 0C, and 1023 count at 500C). The temperature "bounce" (as reported by the ADC readings), is about 0.5 degree, and in physical reality is more like 0.050 degree.

Depending on the controller board, there may be a pretty severe interaction between the bed temperature readings and the hot end temperature readings, which may be expected, as they often use the same ADC input on the controller, and rapidly switch between the two. This is not a Marlin issue, but one of bad board design, and associated pin assignments.

However, there is indeed an issue in Marlin after 2.0.7.2 that makes the problem much worse than it was. 2.0.7.2 would eventually settle and agree to print. After that release, no way.

@SamppaD78
Copy link
Author

SamppaD78 commented Feb 15, 2022 via email

@SamppaD78
Copy link
Author

SamppaD78 commented Feb 15, 2022 via email

@SamppaD78
Copy link
Author

SamppaD78 commented Feb 15, 2022 via email

@rq3
Copy link

rq3 commented Feb 15, 2022

Does this issue affect PID calibration? My printer sensor T-D500 displays incorrect value only at home temperature. Kind regards: Samppa

PID should work fine with a target temperature of 240C.

@SamppaD78
Copy link
Author

SamppaD78 commented Feb 15, 2022 via email

@rq3
Copy link

rq3 commented Feb 15, 2022

Hi.thats good to know. Well at this point there is no need for temperature above 240C so i can print some parts in that temp range until i found some solution for this t-d500 sensor issue or just swap a replacement from other manufacturer. Is there a temp cartridge sensor 3x15mm in dimensions that is actually supported correctly in marlin and where can i purchase one? Kind regards: Samppa

I am not aware of any high temperature sensor, of any kind, that directly actually works with most 32 bit controllers and Marlin. I currently use a PT1000 platinum RTD which is 3mm x 15mm, but it requires an amplifier and a custom thermistor table.

@SamppaD78
Copy link
Author

SamppaD78 commented Feb 16, 2022 via email

@rq3
Copy link

rq3 commented Feb 16, 2022

Hi. So in that case most likely custom thermistor table is needed at least and if this doesn't help then an amplifier. I never done any custom thermistor table settings change in marlin. I can see that there is a settings in configuration.h at 484 mark "custom sensor 1000" and config.adv at mark 56 // Custom Thermistor 1000 parameters. So how can i calculate Custom Thermistor 1000 parameters,any guide? I have manufacturer thermistor resistance values for this sensor @.*** Lähettäjä:

I would just use Table 66, and accept that temperatures below 100 and above about 300 may be unstable and/or inaccurate, depending upon your control boards's ADC.

@rq3
Copy link

rq3 commented Mar 12, 2022

Please be advised that pull request #23871 has been recently merged. This actually fixes many of the ongoing issues that Marln has been having with temperature control by utilizing the full 12 bit ADC capability of many controllers., which had previously been "fixed", but actually was not.

Soon Marlin will have a new temperature control method called MPC (#23751) created by @tombrazier (who also recognized the root cause of Marlin's 12 bit error), which will be a replacement for either PID or bang-bang on the hot end.

These two changes are major improvements in Marlin's temperature control, with no flakey PID tuning required. I am currently utilizing both changes, and can say that the results are nothing short of stunning.

@SamppaD78
Copy link
Author

That`s a good news. If we are lucky with next Marlin version this bug issue will be resolved permanently.

@thisiskeithb
Copy link
Member

So what’s changed since the last time you’ve tested this if you’re now seeing 0 temp readings (as reported in #24043)?

@SamppaD78
Copy link
Author

SamppaD78 commented Apr 15, 2022 via email

@rq3
Copy link

rq3 commented Apr 16, 2022

@SamppaD78 , this is correct behavior for the Dyze sensor. At room temperature its resistance is so very high that as far as the ADC converter is concerned, it's not there at all. Marlin should report the very highest ADC count for the #66 thermistor table, or 0 degrees.

At about 100C, the sensor resistance has become low enough that the ADC can make a real reading, and will start to report correct temperatures.

To repeat, this is NOT a Marlin issue, and in fact the latest bugfix makes Marlin actually report what the ADC is telling it to report. This is new behavior for Marlin, and may take some getting used to, as Marlin used to report flakey temperatures that didn't make any real sense. Now it reports what it should.

I don't know why room temperature is so important to you, other than to provide a "warm and fuzzy feeling" that the sensor is doing something, or anything. Marlin does, however, keep track of the hotend temperature when you tell it to heat, and if the temperature doesn't go up a certain number of degrees within a certain amount of time, Marlin will report a heater failure and shut everything off.

As mentioned before, if you truly want to see accurate temperatures between the freezing point of water, and 500C, you will need a platinum RTD sensor, the appropriate amplifier, and a temp table for the combination that tells Marlin what to expect from it.

The Dyze high temperature sensor is just that, a high temperature sensor, and a very good one. It is NOT, and does not claim to be, a good sensor for comfortable room temperatures.

Hope this helps.

@SamppaD78
Copy link
Author

SamppaD78 commented Apr 16, 2022 via email

@rq3
Copy link

rq3 commented Apr 16, 2022

With the latest bugfix, how much time did you give it to heat? It will report 0C (with some "bouncing" from ADC noise) from room temperature up to about 80C or so, then should start reporting reasonable temperatures. That may take a minute or so. If you don't get an immediate heater failure, then things are probably working as they should.

With the latest bugfix, actual printing temperatures should appear to be much more stable than they used to. You can see the effect of all of this in your video. The very bouncy "room temperature" readings are basically just ADC noise. When you set 60C and the sensor warmed up, the readings become much more stable, and should be even better at higher temperatures.

With the latest bugfixes, the very old 12 bit error in Marlin has really, truly been fixed, and the readings should be even better.
I would not spend money on a PT1000 unless you also get an amplifier for it. You will be disappointed.

@SamppaD78
Copy link
Author

SamppaD78 commented Apr 16, 2022 via email

@rq3
Copy link

rq3 commented Apr 16, 2022

Both of those are normally unused by default in Marlin. 2000 milliseconds is 2 seconds, so you are telling Marlin that if it doesn't get a stable and useable climb in temperature within 2 seconds, declare a heater failure and shut down.

Try setting that to 20000 or 30000 and see what happens.

I have a 40 watt heater with a silicone sock on a custom pure silver, very small heat block. It takes almost exactly 60 seconds to go from room temperature (20C) to 200C.

This really isn't the place for troubleshooting your printer. You may want to start this discussion on Discord, or the RepRap forum.

@SamppaD78
Copy link
Author

SamppaD78 commented Apr 16, 2022 via email

@thisiskeithb
Copy link
Member

thisiskeithb commented Apr 17, 2022

From Amazon's listing for this thermistor:

Configuration.h modification

#define TEMP_SENSOR_0 66
#define HEATER_0_MINTEMP 21
#define HEATER_0_MAXTEMP 500

Configuration_adv.h modification

#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 5
#define MILLISECONDS_PREHEAT_TIME 30000

From the config changes above & as rq3 mentioned, setting MILLISECONDS_PREHEAT_TIME to 30000 should get you going.

The fact that it worked without making these changes before, was probably a fluke.

@thisiskeithb
Copy link
Member

Closing as this is a configuration issue.

@Acarter97
Copy link

Any chance for the BIN file, or all the files in a zip? I'm having a hell of a time fixing mine up like that

@thisiskeithb
Copy link
Member

@Acarter97: This Issue Queue is for Marlin bug reports and development-related issues, and we prefer not to handle user-support questions here. (As noted on this page.) For best results getting help with configuration and troubleshooting, please use the following resources:

@github-actions
Copy link

github-actions bot commented Jul 2, 2022

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked and limited conversation to collaborators Jul 2, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants