Taming the 500c Pico Thermistor

852 views
Skip to first unread message

Branden Coates

unread,
May 1, 2015, 1:00:37 AM5/1/15
to pico-s...@googlegroups.com
So a while back I noticed the v1.1 Pico thermistor table only went up to 350c. I found this while trying to work out how I could apply the Steinhart Hart coefficients to the thermistor to get nice results using my Smoothie board(smoothie either works off the beta or preferably the Steinhart Hart coefficients).

I set out to help improve upon this feeling that the data was incomplete for everyone and decided to data log a full real world value temp table. There may be some math that has to be done to the table to work with Repetier(its pretty much drop in for Marlin) but that should be easy enough for anyone using Repetier. I also intend to sort out the Steinhart Hart coefficient for Smoothie users soon. I just finished my work logging all the data for the Arduino based temp table and am posting that now to get the information out there.

As with any highly scientific process, heres how I dun it:

I set up an Arduino Mega with two 4.7k ohm resistors for sensing the same as pretty much all boards use. I also added an Adafruit MAX31855 thermocouple amplifier(http://www.adafruit.com/products/269) and K type thermocouple as my accurate reference temp. I mostly used the code from Adafruits examples for reading a thermistor and the MAX31855 and jammed them together until they started gathering the ADC values for me. The code essentially monitors the thermocouple till it hits predetermined values(every 5c from 20 to 515). When one of those values is hit it samples 2 thermistors at the same time, 100 times each with a 5ms delay between each reading. It averages the 100 readings out per thermistor and sends it back over serial console for me to log.
I milled a steel block to fit a 8mm 100w AC heater cartridge into length wise, from there the thermocouple was mounted in the middle of the block and 1 hole on either side of the thermocouple to hold the 2 thermistors being measured.
For those who like pictures I have included one for reference as long as nobody talks about the super cool fire hazard materials surrounding the test area :P

I tested across 4 of the 500c thermistors and gathered values across a minimum of 5 separate heating cycles. In the end by my math it more or less works out to 500 samples per temp per thermistor with the end average being a total of about 2000 temp samples at each temperature to get to the results I am including in this post. Once I had all the readings averaged out I switched out of my custom heat block over to using a standard Pico body. The nozzle was removed and the same thermocouple was threaded in its place. I then ran the temps and compared the output to ensure the results were consistent between heat blocks. After this reinforced my results I filled out a temp table and compiled Marlin using it. The spreadsheet all this info is logged in is attached to this post.

In all these pics you might notice that the shrink tube was removed from the end of the strain relief spring. This was to prevent the tube from trying to shrink and squish the softened wire insulation on the leads together and potentially leading to a short. This was just a precaution, no clue if its actually necessary.


I then set up an arduino ramps 1.4 configuration and ran the same tests to ensure that an actual real world printer board would also return the same consistent data from the table in relation to what the thermocouple was reading. Everything was golden there as well, as such I deem the temp table to be ready for consumption and hope it can replace the current 500c temp table v1.1.

As a fair fore warning there is 1 caveat to the v2.1 temp table I am offering attached to this post and have not been able to really supply a good solution to:
The thermistor has a pretty high resistance at around 20 to 25c. High enough that an arduino ADC reads it at or extremely close to 1023(infinite resistance in terms of what the arduino understands) in conjunction with the 4.7k ohm sense resistor. It will be a bit of a pain to deal with on a cold printer since(at least in my house) the nozzle will sit somewhere around 18 to 21c. So unless someone warms the nozzle by hand a bit first or centers it over the heated bed and let the heated bed warm it up a tad to get it at or above about 25c the firmware will constantly try to shut down the nozzle but once it is above 25c the firmware will properly detect a disconnected/fully failed thermistor and shut down the nozzle heat as expected(since if the thermistor fails fully or is disconnected the ADC will read 1023, show 0c and trigger the mintemp value). I guess if anything that added safety and minor bit of frustration at cold temps is better than a runaway nozzle.

As far as printing at or near 500c temps with these thermistors they seem to be more than adequate. I nabbed another pic of the test setup and in that pic it is at 517c and has a very nice glow. The thermocouple and thermistor are representing the values accurately and match up nicely. At around 510 the ADC still has a fair bit of resolution before it reads a value of 1 or 0 so even handling some level of overshoot before settling on 500c should be fine. I was able to run the Pico body up to 520 easily using the 24v heater cartridge and the thermistor read values along the way both accurately and without any hiccups but I would guess that the thermistor its self would probably cap out readings wise at close to 550c.

Like I said I still have to test it with Smoothie where the Steinhart Hart coefficient would be used, that is next on the list of things to do. I have a Smoothie on my primary printer so I should be able to wire it in as a "second hotend" to check how the temps compare output wise there. When I have this information I will either edit this post or comment on the post with the relevant info.
500c-Temp-Table-v2.1.txt
Pico 500c Thermistor.gsheet

Christian L.

unread,
May 5, 2015, 9:19:41 AM5/5/15
to pico-s...@googlegroups.com
Hi Branden,
I've copied your thermistor table to Marlin, I have to remove the last entry

{  1023.00*OVERSAMPLENR ,   0 },

because I was getting a MINTEMP error, the readings was sometimes jumping from 25° to 0°C.

The readings also jump from 25° to as high as 28°C at room temperature.

With the "official" table, there is no such behavior.

I've got my thermistors from the Kickstarter campaign.

Branden Coates

unread,
May 5, 2015, 10:15:15 AM5/5/15
to pico-s...@googlegroups.com
Hi Christian,

Thanks for the feedback, I was hoping someone might give it a try aside from myself. Yes to an extent that is expected behavior. I covered some of that concern towards the end of the post(after the pics of the thermistors) but did not go into much depth with the explanation. I was hoping someone else might be able to help with that problem to gain a better solution.

The issue comes in with the ADC on an arduino having only a 10-bit analog to digital converter(except for the Due I think is 12). This means that it will map input voltages between 0 and 5 volts into integer values between 0 and 1023(0 and 4095 on the Due). There are no decimals with what the arduino can see, just whole numbers between 0 and 1023(0 meaning no resistance, and 1023 being infinite resistance in this case). This brings some level of inconsistency at the low end of the temp range up to around 40c where the resistance starts to drop more with the thermistor and the ADC values gain a better degree of separation. The only real reason why the decimals work in our cases has to do with the code based oversampling that firmwares like marlin perform. It takes multiple readings and averages them out so inevitably decimals will be had and a couple decimals will help to make things a bit more accurate.

Below I included the snippet where the biggest issues are had; between 0 and 35. I covered reasons for why the 0c reading is retained for safety and the ability for the firmware to detect a failed or disconnected thermistor. That is to help prevent a runaway hotend situation, and as with anything I have to say remove that value at your own risk. The other 3 values 25, 30, and 35 are all within the 1022 value so while cold you may see the temp fluctuate around a fair bit and jump between 0 and 25c frequently. A lot of this has to do with the decimal results from averaging down in that temp range not having a great deal of separation(remember that without the averaging the arduino will bounce between 1023 and 1022 only).

  {  1022.00*OVERSAMPLENR ,  35 },
  {  1022.28*OVERSAMPLENR ,  30 }, 
  {  1022.98*OVERSAMPLENR ,  25 },
  {  1023.00*OVERSAMPLENR ,   0 },

I chose to allow for this inconsistency down in this low temp range since I do not think anyone would be printing at sub 50c temperatures and realistically there is little that can be done to fix it without changing the sensing resistor on your printer board to gain better high resistance ADC resolution(which doing so could compromise the range at the opposite end of the spectrum where we really care about the values). Accuracy for the thermistor is great around 40 or 45c and higher as it stands.

A fair trade off may be to copy the values up to 40c from the original temp table(v1.1) and replace what I have in mine with that, though remember that doing so will still circumvent the disconnected/failed thermistor protection. I am including those lines below for reference to anyone else reading along:

{  1021.1802909627*OVERSAMPLENR ,  35 },
{  1021.58459281248*OVERSAMPLENR ,  30 },
{  1021.90701441192*OVERSAMPLENR ,  25 },
{  1022.16215103698*OVERSAMPLENR ,  25 },
{  1022.36275529549*OVERSAMPLENR ,  25 },
{  1022.51930392497*OVERSAMPLENR ,  25 },
{  1022.64051573734*OVERSAMPLENR ,  25 },
{  1022.73355805611*OVERSAMPLENR ,  25 }, //safety

In regard to the thermistors from the kickstarter campaign I suspect they are the same otherwise there would be 2 "official" temp tables so I do not think there is much concern there.

Christian L.

unread,
May 7, 2015, 12:45:23 PM5/7/15
to pico-s...@googlegroups.com
Branden,
Thanks for the explanations and solution (that was fast)!

I've set the lower values to 25°C. Manually heating the hotend is not a practical option (not for me at least) to prevent a MINTEMP error.

There is a temperature runaway protection in Marlin, now enabled by default (1.0.3 dev) that I just tried, and got the "Heating failed" message when heating start, so this part of the protection seems to work.

There is a bug (or something else) that removes the Marlin thermal protection when temperature is reached and a thermistor malfunction (disconnected wires or detach from block) arises. I'm looking with Marlin coders to fix the issue so we can have full thermal protection.

Thanks again for your work!

Branden Coates

unread,
May 7, 2015, 1:31:21 PM5/7/15
to pico-s...@googlegroups.com
Hey Christian,

No problem, glad to hear that worked for you. I have a ramps setup but its not something I actually use on my printer its just kinda a remnant so I really only can use it for basic testing.

I appreciate the feedback and help rounding out the details, particularly knowing that the newer firmwares have other methods of detecting disconnect/complete thermistor failure aside from reading the ADC at 1023. Knowing that I suppose it would be safe to let the B3 guys know to update the table online with the original low end values to prevent wonky temp bouncing up to about 40c(Ill likely truncate them to 2 decimals though since more is relatively pointless) knowing how the ADC reads.

It looks like the issue https://github.com/MarlinFirmware/Marlin/issues/2025 is what your talking about? I gave that a quick read through and it definitely sounds like the developers are grasping the issue and have some good ideas on where to run with it. Hopefully it will work out and benefit everyone using marlin with better thermistor failure sensing.

To anyone following along, I have attached the 500c temp table v2.2 to this post. Please only use it currently if you are willing to accept that there are some issues with thermistor failure sensing in the current marlin firmware, otherwise wait till the issue posted in the paragraph above is resolved.
500c-Temp-Table-v2.2.txt

Jeff DeMaagd

unread,
May 11, 2015, 8:22:36 PM5/11/15
to pico-s...@googlegroups.com
Thanks for doing this.

Branden Coates

unread,
May 12, 2015, 12:53:34 AM5/12/15
to pico-s...@googlegroups.com
Hey Jeff,

No problem, I learned a great deal along the way and am pretty pleased with the results. Have you tried putting it to use? Just curious to get more feedback on how its working for those who might have given it a go.

Jeff DeMaagd

unread,
May 12, 2015, 1:09:59 AM5/12/15
to pico-s...@googlegroups.com
I have not used a material that needs the high temps yet. I've run empty Picos pretty hot, not sure how hot as I coudn't independently measure it. I haven't run anything more exotic than HIPS through the nozzle yet, and that's not even near the bounds of the stock thermistor.

I'm waiting to hear back on such an opportunity that supposedly needs 380C.

Branden Coates

unread,
May 12, 2015, 1:05:29 PM5/12/15
to pico-s...@googlegroups.com
Ooh 380C? Now your talking, post some pics of your higher heat print stuff if you have time. It would be neat to see some stuff that was considered hotter than typical PLA, ABS, Nylon temp ranges.

pico...@gmail.com

unread,
May 13, 2015, 1:43:43 PM5/13/15
to pico-s...@googlegroups.com
to use the 500degree thermistor with a smoothie:

I rearranged and used the formula R1/((1023/a)-1) = R2 , a being the value from the ADC, R1 being 4700ohms and R2 being the resistance of the thermistor to calculate the resistance to put in to the smoothie setup line: temperature_control.hotend.rt_curve

For me, I got and used:
temperature_control.hotend.rt_curve 25,4400000,200,9264.9,350,570.73

which seems to work OK.

Branden Coates

unread,
May 13, 2015, 2:25:22 PM5/13/15
to pico-s...@googlegroups.com
Thats good to hear, thank you picofrogs. I looked at what your using and it seems your still basing the curve off the original temp table though since your high end measurement is at 350. Based on the updated table that pushes to 510c and some math breaking down the coefficients I was going to try out:

temperature_control.hotend.coefficients 0.0006800996284, 0.0001577647007, 0.0000000350019968304201

But I have not had the opportunity to do so. In checking the temperature results for the mid points between the temps it seems that there could be some variance though up to around 15c which I dont really care much for(this was done mathematically not real world).
I based the points off the resistance values in the spreadsheet at 30, 270, and 510. I then looked at the resistance values half way between those points and used the calculations to see what based on the coefficients what would result using http://www.rusefi.com/Steinhart-Hart.html 

I chose to use the low temp of 30 because it was the first of the values that I meaured that did not end up with a 1023 ADC value in any of the averaged readings so it should arguably be the most accurate of the resistance values to base off of. The ADC values at 20c and 25c are soely to keep things happy in respect to having a temp displayed down that low and not triggering any low temp alarms. The temp below about 35c is quite inaccurate due to the resolution of the ADC with this thermistor in general though I did find using 35c instead of 30 created more inaccuracy than not. Worst case I may have to make a manual resistance measurement of each of the thermistors at 0c to average out and then change the temps to 0, 255, 510 and see how that affects the coefficient results.

At 150c the resistance value in the table shows 26,184.98 ohms, but the coefficeints returns 157.5c mathematically.
At 405c the resistance value in the table shows 181.47 ohms, but the coefficeints returns 391c mathematically.

Its not terrible, but steinhart hart does result with a bit of variance between the 3 measured points while establishing the curve. Below the mid point of 270c temps could show as up to around 8c higher(the closer to 150c you get) than they really are, and above 270c temps could show up to 14c lower(the closer to 405c you get) than they really are.
Its kinda like a double bell curve of inaccuracy. The closer to the measured points of 30, 270, and 510 you are the more accurate you are, but the further between the measured points you get the less accurate. To some extent I suppose that is expected when using coefficients, yet just the same its less optimal than I would prefer.
I still have some tweaking to do with the measured number points to see how this affects the curve accuracy at the furthest points between the measured values along with actually hook the stuff up to the smoothie and see how the mathematically calculated coefficients work in relation to real world tests. Generally though it seems you want the highest, lowest and as close to middle as possible for the most accurate coefficients based on what I have read and experimented with thus far. Possibly calculating with 30, 275, 510 may help lower the inaccuracy at the 405/410c midway point, but at the expense of increased inaccuracy around 150c range.

More info for those reading along related to smoothie and the steinhart hart coefficients:

pico...@gmail.com

unread,
May 13, 2015, 3:27:52 PM5/13/15
to pico-s...@googlegroups.com
your steinheart coefficients don't work for me. I get 999degrees. Your resistance values from the table that you calculated seem to work better than mine though. Defiantly more accurate.

Branden Coates

unread,
May 13, 2015, 3:51:47 PM5/13/15
to pico-s...@googlegroups.com
I just looked at what I had, and the smoothie website uses a 20 digit decimal, where one of my values exceeded that. Maby give below a try and see if that works?

temperature_control.hotend.coefficients 0.0006800996284, 0.0001577647007, 0.000000035001996830

I have yet to actually try using any of the values on the smoothie still so I have no clue if they will actually work out. Doing the resistance/temp line as 

temperature_control.hotend.rt_curve 30,6810354.29,270,1441.96,510,43.42

is more or less the same, it just has the smoothie do the coefficient calculation for you instead. More than likely it probably does make it more readable and understandable in the long run to use the rt_curve instead of the coefficients. You can also execute the following line through pronterface:

calc_thermistor 30,6810354.29,270,1441.96,510,43.42

Which should also give you the coefficients as well to use with the coefficients setting at the top of the post. I would be interested to see if the calc_thermistor command returns the same coefficients as what I was going to try out prior(minus my excess decimals). Ill have to give that a go later tonight. Ive been slacking on finishing up the testing on the smoothie since I had a few contract prints come through to get done.

pico...@gmail.com

unread,
May 13, 2015, 4:10:47 PM5/13/15
to pico-s...@googlegroups.com
I in-putted the calc_thermistor through pronterface and received these coefficients:

I0.000680099939927459 J0.000157764647156000 K0.000000035002173604

I inputted them into the printer with the M305 code, and saved it with M500. After a restart the temp, which was just cooling, went from 175deg to 174deg. pretty similar!

Branden Coates

unread,
May 13, 2015, 4:49:17 PM5/13/15
to pico-s...@googlegroups.com
Very interesting, I compared them to what I had earlier and they are very close, it looks mostly like result of decimal length cutoff/rounding affected it more than anything. Ill have to give them a try and see how it looks using a thermocouple to monitor the difference but its good to hear that the temp change was minimal in that range. For now though it sounds like that is probably going to be a fairly good setup to stick with.

stac...@gmail.com

unread,
Aug 29, 2015, 1:53:58 AM8/29/15
to B3 Innovations - Pico Support
Can someone give me direction on how to program my Lulzbot Taz 5 with this table? After Install I'm getting a "min temp error". Thanks in advance for any help.

Branden Coates

unread,
Aug 31, 2015, 7:40:58 PM8/31/15
to B3 Innovations - Pico Support
So the process to add the temp table to marlin can be fun. I am not heavily familiar with the firmware Lulzbot uses specifically, but it looks like they have a copy they use available here: http://download.lulzbot.com/TAZ/5.0/software/2015Q1/firmware/Marlin_2015Q1_TAZ5/ so I will reference the files from that to give you instructions.

If I explain poorly let me know and I will try to clarify, I may make this far more complicated than it needs to be wording wise.

In a nut shell you will want to take the text from the temp table here https://b3innovations.com/wp-content/uploads/2015/05/500c-Temp-Table-v2.2.txt and copy it into the "thermistortables.h" file for the lulzbot Taz 5 firmware. From there you will edit the "Configuration.h" file to use the thermistor number 65 for the thermistor you are replacing.

Heres the long explanation:

In thermistortables.h scroll to the bottom till you find the last table that looks similar to the one you are adding. For the most part look for the line that looks like this:

#endif


#define _TT_NAME(_N) temptable_ ## _N

In the spaces between the #endif and the #define is where you would paste all the text from 500c-Temp-Table-v2.2.txt that you can download from B3I. Realistically you could just go to the bottom of the file and paste it just above the #endif //THERMISTORTABLES_H_ too but I am picky and I like to keep things orderly and the file structured consistently. Anyway, for the most part just make sure you do not stuff it into the middle of a different table, errors will happen and that is no fun. Do not forget to save the file when you are done editing it.

Next up open up the Configuration.h file, scroll down to the Thermal Settings section. If you want to add the definition to the list so you know in the future what the number stands for, find the "// 60 is 100k Maker's Tool Works Kapton Bed Thermister"  and underneath it, add something like "// 65 is B3 Innovations 500c thermistor", then find the lines underneath:

#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 5

update the proper sensor from value 5 to 65. I would expect it to be sensor 0 for most but do not quote me since sensor 1 is usually for a second hot end on a dual head printer but Lulz might do it differently. It may be best to ask someone with a Taz5 to be sure though, I hear their support is pretty good too so possibly poke there? Realistically if you get it wrong though you should notice some fairly funny temp readings at room temp(the B3I 500c thermistor would read about 100c at room temp if you left it using the Taz thermistor value if I compared the tables relatively closely). Save this file when you are done editing it as well.

From here you will need to compile the firmware and upload it to the Taz 5 as usual. That process is a separate thing in its self and a bit far outside the scope of this instructional though.

To make life easy on you I modified the thermistortables.h file and a Configuration.h files and attached them to this post as well.

NOTES: I did not explicitly change the Configuration.h to use the new thermistor number, I only added the comment to reference that thermistor number 65 is the one you would want. You will still be responsible for setting the proper number for the temp sensor you want.

I also removed the reference to the 3rd thermistor in the thermistortable structure since none of the others seemed to have the reference. It should prevent any other possible issues or errors, but I do not think it would have created any.

Any other changes you may have made to the Configuration.h that are not the "stock/default" settings for the Taz 5 you will want to make sure are consistently copied over to the Configuration.h file I supplied here if you do chose to download that and replace your existing file(!!make sure you make a backup of this file or copy it elsewhere before you replace it!!).
If you are confident that you have made no changes, or if you have never downloaded or modified the firmware previously it should be safe to download the files and drop them in place of the ones downloaded directly from lulzbots archive file http://download.lulzbot.com/TAZ/5.0/software/2015Q1/firmware/Marlin_2015Q1_TAZ5.tar.gz If you are using Windows over linux or Mac, I would largely suggest downloading 7Zip to open that archive.

Like I said prior, I probably made this overly complicated, if something is not clear let me know and I will do my best to clarify and walk you through it further.
thermistortables.h
Configuration.h

micha....@googlemail.com

unread,
Jan 28, 2016, 4:12:14 PM1/28/16
to B3 Innovations - Pico Support
Hey Branden Coates,
I just tried out your config parameters for my pico the first time. The problem is that is shows -25 °C instead of 20°C in Pronterface. Any ideas on what i did wrong

regards
Micah

Branden Coates

unread,
Jan 28, 2016, 7:25:37 PM1/28/16
to B3 Innovations - Pico Support
Hi Micah,

If I were to guess quickly you are still running the thermistor 5 temp table(100K thermistor - ATC Semitec 104GT-2 ) in firmware while connecting the 500c thermistor. My reasoning is below if you are talking about the instructions I made just above your post, that was for a Lulzbot specifically.

If so, did you update the configuration.h file to use the proper 500c thermistor in place of the default lulzbot one? I only added the line defining it but did not actually set the config file to use it. Due to the difference in ADC values it would definitely come back far colder at room temperature using temp table 5 on the 500c thermistor.

If you did update the config file, could you attach a copy of your configuration.h file and the thermistortables.h file for me to take a peek at? Also, which controller board are you running marlin on? The temp table was built around using a 4.7k ohm pull up resistors for the thermistor connections(standard on most controllers but not necessarily all) If you are not entirely sure on the pullup resistor value just let me know the board and where you bought it and Ill see if I can find out the details.

Branden


micha....@googlemail.com

unread,
Jan 31, 2016, 6:28:45 AM1/31/16
to B3 Innovations - Pico Support
Hey Branden Coates,
thanks for your quick response. I guess I forgot to mention that I was using a smoothieboard with the following config parameters:

temperature_control.hotend.coefficients 0.0006800996284, 0.0001577647007, 0.000000035001996830
temperature_control.hotend.rt_curve 30,6810354.29,270,1441.96,510,43.42

Sorry for being not precise enough about my problem.

regards
Micah

Branden Coates

unread,
Feb 1, 2016, 10:36:30 PM2/1/16
to B3 Innovations - Pico Support
Hi Micah,

Sorry for the delay, I was doing a little research and checking in with the smoothie devs on a few things. You may want to double check your wiring just in case of a short circuit but the following should yield the best results configuration wise. I have also tested this to confirm on my smoothie as well:

First make sure that you either remove or comment out the line that starts with the following:

temperature_control.hotend.thermistor

Then you can choose to add either of the next two lines. Both lines are un-necessary and in the end they do the same thing

temperature_control.hotend.coefficients      0.000680099939927459,0.000157764647156000,0.000000035002173604
temperature_control.hotend.rt_curve           30,6810354.29,270,1441.96,510,43.42

And finally this is a setting I was unaware needed to be set until earlier today. I discovered it when hooking up my own 500c thermistor and having it return nil for a temp setting and also why my response was delayed to this.

temperature_control.hotend.r0                3750000

What that setting does is sets the cutoff for what smoothie determines is an out of range resistance for the thermistor. By default it is set to 100,000, the firmware multiplies whatever the value is set to by 8. Since the 500c thermistor has such a wide resistance range at the very low end of the scale you may run into the smoothie cutting values off with any resistance over 800,000 by default. In our case the resistance can range all the way up to just south of 30,000,000 ohms so divided by 8 we set that to 3,750,000

That being said, just to be doubly sure I tested these settings on 2 separate smoothies and can confirm they work.

One final note: Because the resistance dropoff is so great below 30c there is a good potential you will see the temps fluctuate quite a bit at room temps or generally anything 30c and below. Once the temperature is above 30c though the temps will be accurate and stable. I tend to look at it as an acceptable tradeoff with the broad range the thermistor is capable of while still being accurate in the higher temps.

Since I tend to swap between thermistors somewhat regularly depending on what I am doing, I set up my config file like the following:

#Pico 300c thermistor
#temperature_control.hotend.thermistor        EPCOS100K        # see http://smoothieware.org/temperaturecontrol#toc5
#Pico 500c thermistor
temperature_control.hotend.coefficients      0.000680099939927459,0.000157764647156000,0.000000035002173604
temperature_control.hotend.r0                3575000

Then depending on what thermistor I am using at the time all I need to do is comment/uncomment the different config values and reset the board.

Branden

Branden Coates

unread,
Feb 2, 2016, 10:44:17 AM2/2/16
to B3 Innovations - Pico Support
Looks like I forgot to update my r0 in the config snippet. I had been testing with a lower resistance value closer to the actual 25c resistance value but later increased it to give a bit more margin for error.  Heres what the config snippet should look like in the end:

#Pico 300c thermistor
#temperature_control.hotend.thermistor        EPCOS100K        # see http://smoothieware.org/temperaturecontrol#toc5
#Pico 500c thermistor
temperature_control.hotend.coefficients      0.000680099939927459,0.000157764647156000,0.000000035002173604
temperature_control.hotend.r0                3750000

Sorry about that. The previous would work just fine as well, but there is a possibility that going below 25c by a great deal(say 15c) may cause the smoothie to cut off the reading and instead of showing a temp it would show "inf" as a value instead of an actual temp. Likely wont cause a huge issue but I did not test if smoothie would still attempt to heat a hotend while reading "inf" instead of a temperature or consider that an error state.

I would have just edited the above post to correct the minor mistake but it seems we cannot.

Branden

micha....@googlemail.com

unread,
Feb 4, 2016, 3:09:17 PM2/4/16
to B3 Innovations - Pico Support
Hey Branden Coates,
thanks for your very detailed replay.
I hope I will find some time in the next couple of days to test your configuration. I will report back in case I don't get my problem solved.

regards
Micah

rys...@gmail.com

unread,
Apr 11, 2016, 11:49:38 PM4/11/16
to B3 Innovations - Pico Support
Hey Brandon,

I have used your latest constants for the Steinhart and checked the temperature with a K-type thermocouple. I am reading 250 C on the smoothieboard, however my thermocouple is reading 211 C. Just wondering if it is my thermocouple that is possibly placed wrong? Also I was wondering if you have checked your pico with a thermocouple? Thanks a ton for doing all of this work, you are awesome!!

Cheers,

Ryan

Willem Reek

unread,
Apr 13, 2016, 7:37:13 AM4/13/16
to B3 Innovations - Pico Support
Hi,

I use Repetier Firmware 0.92 for programming my Arduino DUE with RADDS 1.5 shield.
I connected the 500 deg Celsius thermistor delivered with my PICO hotend and use 24V (heater cartridge delivered is also 24v).
I downloaded the Thermistor table from your support page and implemented it in several ways:
- Temp x8 and Oversamplenr = 4 implemented in Repetier firmware generator;
- Temp x8 and Oversamplenr = 4 directly in configuration.h;
- Temp x1 and Oversamplenr = 4 implemented in Repetier firmware generator;
- Temp x1 and Oversamplenr = 4 directly in configuration.h;

The temperature readout on my RADDS display is always 0,0.
When I measure the thermistor itself it gives about 5000 ohm cold and decreases with increasing temperature (heatgun).
When I connect to the 3.3Volt thermistor connector on my RADDS board it gives 395000 ohm as readout cold and decreasing with increased temperature.
Now what is broken or how should I change the table/settings in configuration.h? Please help because it is taking too much of my business time.

Branden Coates

unread,
Apr 13, 2016, 12:02:29 PM4/13/16
to B3 Innovations - Pico Support
Hi Ryan,

I double checked the coefficients I have on my smoothie they still seem to be what I have posted above:

#Pico 500c thermistor
temperature_control.hotend.coefficients      0.000680099939927459,0.000157764647156000,0.000000035002173604
temperature_control.hotend.r0                3750000

Make sure that you define the .r0 line thought, it does make a difference.

When I had verified the results from the thermistor in the Pico I actually removed the nozzle and used a threaded K type thermocouple and threaded into the body directly. The tip of the thermocouple seated on the chamfer for where the nozzle usually seals against the body. The testing stand generated the temp tables separately from the Pico, but I did verify the temp table was giving correct readings mounted in the Pico after using that method.

Possibly double check the config settings, if they look good still the next thing I would suggest is to try putting the thermistor in a situation where you can verify the temp using a themocouple. From there take a resistance reading of the thermistor with a multimeter and compare it to the resistance table at the corresponding thermocouple temp here:


So if the thermocouple reads 35c you should measure a resistance of around 4,707,275.12 ohms on the multimeter. If you can run the temps up a bit more, I would suggest possibly testing at water boiling temp just be careful not to burn yourself or short out the thermistor/thermocouple doing that. I say this in case somehow you happened to have a faulty thermistor. A temp gap of 211c actual to 250c read is pretty massive. I could see possibly a 10-15c difference in different circumstances but nearly 40c there may be something else going on.

Branden Coates

unread,
Apr 13, 2016, 12:03:31 PM4/13/16
to B3 Innovations - Pico Support
Hi Willem,

I responded to the thread you opened here:

Reply all
Reply to author
Forward
0 new messages