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

Temperature table for DyzeDesign thermistor #2915

Closed
wants to merge 1 commit into from

Conversation

EiNSTeiN-
Copy link

This is the temperature table for https://dyzedesign.liki.com/assembly-of-high-temperature-thermistor-500-c

I kept the thermistor number 66 which is the same they use in their fork.

@AnHardt for review
FYI @JeanSebastienCarrier-Dyze

@AnHardt
Copy link
Member

AnHardt commented Jan 21, 2016

Thats crap.

1016.24,16, 16259.84, 58.08
1020.25,16, 16324,    38.72
1023,   15, 15345,    25                    <<< !
1023,   16, 16368,    20

This is a lookup table where we later interpolate in. When the sign of the slope changes we have a problem. For a given adc-value we can read two temperatures.

To avoid problems they have done some more tricks. DyzeDesign@feacb36
Especially because of the complete replacement of temperature.cpp it is hard to follow what they might have done.

@EiNSTeiN-
Copy link
Author

Is there an easy change to this PR that I could make to move this forward? I'm not sure I understand the problem entirely.

@EiNSTeiN-
Copy link
Author

Would I be able to remove the line you pointed out at the expense of some accuracy at temperatures around 20-25 degrees? I don't think this needs to be very accurate at temperatures this low.

@AnHardt
Copy link
Member

AnHardt commented Jan 21, 2016

Start reading with
#2025
than continue with #2066
I'v done a lot of work in that area. My conclusion was: Non't use this thermistor.
If there branch improves the behavior it might be a solution, but i don't know.

There is absolute no accuracy below 25° C. The ADC readout is already 1023 there.

@EiNSTeiN-
Copy link
Author

Would you consider doing something like this?

{ 1016.24*OVERSAMPLENR , 58.08},
{ 1020.25*OVERSAMPLENR , 38.72},
{ 1023*OVERSAMPLENR , 25},
};

I don't think anyone needs lower temperatures for a 3d printer.

@AnHardt
Copy link
Member

AnHardt commented Jan 21, 2016

Or with other words.
The use of this thermistor is unsafe! Use it at your own risk, in your own branch
I'm strictly against it's integration into the main branch.

@EiNSTeiN-
Copy link
Author

No problem, thanks for taking the time to explain!

@EiNSTeiN- EiNSTeiN- closed this Jan 21, 2016
@EiNSTeiN- EiNSTeiN- deleted the dyzedesign-thermistor branch January 21, 2016 15:18
@AnHardt
Copy link
Member

AnHardt commented Jan 21, 2016

A simple test for there branch.
With all possible protection mechanisms on.
Disconnect the thermistor under different conditions (boot, standby, heating, cooling, at different temperatures).
If the heater stays on under any circumstance this thing is dangerous. If no warning is given, it's only imperfect.

@JeanSebastienCarrier-Dyze

Sorry if I'm a bit late to the discussion,
It seems I did a bad merge on temperature.cpp (which changed the tab for the whole file), I'll do something about this today to make it easier to compare the original version with the one we tweaked.

As for the safety measures, here's the problem and our solution. Normal thermistor can't read values above 300 degrees Celsius, so we had to pick something else, as we wanted our hotends to print high temperature materials. Since these thermistors can't get proper readings below 40ish degrees Celsius, the print would systematically fail because of a mintemp error before it could heat anything. We decided to allow for a "heating" delay to compensate for that (which sounded like a better alternative than simply turning off safety measures). We did a couple of tests where we disconnected or removed the thermistor from our hotend and the heater would still turn off after a few seconds.

@EiNSTeiN-
Copy link
Author

To review temperature.cpp more easily, you can add w=0 at the end of the commit url, it will hide all whitespace changes: DyzeDesign@feacb36?w=0

@KiteLab
Copy link
Contributor

KiteLab commented Jan 21, 2016

How about connecting a resistor (~50k) in parallel to the thermistor (at a ~constant temperature place).
That would drop the resistance at the low temperature end of the table.
Of cause a new table is needed.

@woodencase01
Copy link

@AnHardt
Hi AnHart,

I've made tests with the firmware proposed by DyzeDesign with the 500°C thermistor.

Tests 8, 10, 12 and 14 aren't considered since the thermistor table and the mintemp are configured to work as intended.

TEST 7 - Hotend's thermistor disconnected before startup

No error is shown. Temperature shown is 20°C, 1°C below the mintemp error.

Since the conditions «is preheating» and «target temperature > 0» is not met, the min_temp error is not shown as it would normally be.

TEST 9 - Hotend's thermistor disconnected after heating begins AND before (preheating time) seconds elapsed

Heater is still ON up to the end of the preheating time.

TEST 11 - Hotend's thermistor disconnected after heating begins AND after (preheating time) seconds elapsed

Min_temp error, heater is disabled.

TEST 13 - Hotend's thermistor disconnected after target temperature reached.

Min_temp error, heater is disabled.

Regarding the 500°C, it is true that the readings aren't great at room temperature, but the precision is better at high temperature. Dyze design has prepared a resolution comparison chart for this sensor.

http://dyzedesign.com/wp-content/uploads/2015/10/thermistor_table.jpg

I hope it helped!

@woodencase01
Copy link

@KiteLab

Sadly, adding a resistance either in parallel or in series will lower the resolution. The only way to improve the low temperature reading is actively with a op-amp or any equivalent IC. I had the same thinking while testing this thermistor ;)

@KiteLab
Copy link
Contributor

KiteLab commented Jan 21, 2016

@woodencase01
Do you have B and Rt25 values for the thermistor or an exact type - data sheet link?
Would make a recalculation much simpler than guessing

@woodencase01
Copy link

@KiteLab
Sadly no, but I think calculating with any NTC thermistor would show if the resolution increase or decrease. After, it's just about adjusting the resistor value to the value of the thermistor.

@AnHardt
Copy link
Member

AnHardt commented Jan 22, 2016

@woodencase01 , @EiNSTeiN-
The test results are looking promising.
The implementation of the preheat_time looks reasonable but the MILLISECONDS_PREHEAT_TIME should be adjustable in the Configuration.hs and default to 0.
Same for MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED.
Recheck if target temperature changes by M109 and the menu start the PREHEAT_TIME
Could be more convenient to shift the setup into setTargetHotend()

@AnHardt
Copy link
Member

AnHardt commented Jan 23, 2016

ADSEM Si-N-DO35-455 B=6,600 T25=4.5M (http://www.adsem.com/downloads/AdsemSiHiTempThermistors.pdf) gives a pretty close curve to yours.
Max. resolution at ~220°C 6.6digit/K, 5K difference > 1digit up to 465°C and down to 85°C. 1022 at about 58°C 1023 at ~.46°C.

With 1M parallel to the sensor i calculated:
Max. resolution at 220°C 6.6digit/K, 6K difference > 1 digit up to 456°C and down to 85°C. 0°C -> 1018,
The difference should be barely noticeable but MinTemp and open circuit could be detected. A broken wire between parallel resistor and thermistor would result in 1MOhm -> 1018digit - would not be detectable.

Edit:Messed up a digit in R25 used 45M
Recalculation follows

@AnHardt
Copy link
Member

AnHardt commented Jan 23, 2016

OK, i messed it up.
I could not find a thermistor with a that high R25 but yours have to be in the area of 45M to have the maximum at ~220°C.

@woodencase01
Copy link

The R25 is actually about 4.5MΩ.

Calculating with 0Ω, 1KΩ, 500KΩ and 1MΩ, I get the maximum resolution at 210°C to respectively 5.7, 5.67, 5.70 and 5.70.
ADC values at 20°C are 1 021.98, 1 017.21, 1 021.97 and 1 021.98.
Difference in ADC values between 15°C and 20°C are 0.24, no matter the parallel resistance.

The 1KΩ resistance lowered the ADC value at 20°C, which should be good, but there is actually the same ADC difference with all other alternative, which doesn't improve readings at low temperature.
The problem with a parallel resistor is that if the thermistor lead brokes, there is still 1KΩ going through the circuit, and the firmware will read about 305°C. If the printer was currently printing at higher than this temperature, the heater will stay ON. If the printing temperature was lower, the heater will remain OFF and the temperature will drop.

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

Successfully merging this pull request may close these issues.

6 participants