So I just got done flashing the latest code, and I decided to calibrate my thermometer, since I didn't get a chance last night. A couple things:
1. I was surprised to find that my probe appears to be off by more than it used to be when I ran the stock software. AlphaOmega, does this make any sense? Perhaps the look up table you created isn't 100% accurate, and requires calibration for all users? It would make sense if you created that table from scratch. My setting was always -0.6C on the old setup, and now it looks like it's reading 34.8 when both of my Thermoworks thermometers read 31.8 in a glass of crushed ice + water (the standard test). 0.6 C is just over 1 degree of adjustment in fahrenheit, so I was a bit surprised to find ~ 3F difference. Either way, I'm adjusting it since I can only rely on what the device says, so I'm not THAT worried about it, especially if my theory about the lookup tables is correct.
2. Under the settings menu, how does the setpoint and other settings work,in relation to profile? Are those specifically for "Th" thermostat mode only, or what? It's a bit confusing, so I always use a profile, and run that profile, instead of messing with setpoints within the settings menu.
3. You reworking the screen refresh rate helped greatly. My SS Brew Bucket is now pretty stable at 68.0, and occasionally goes to 68.2, but no seizure-inducing back-and-forth flashing anymore.
4. Last thing -- does the power button not work to turn the controller on or off? It doesn't appear to serve this purpose anymore.
One last thing -- what's your actual name? I feel better calling you by your name. Is it Mats? I'm not good with Swedish names, but just going by your github ID.
Yet more constructive feedback nickmv! It is really appreciated! Thanks!
I'll try to answer as best I can.
1. It is very possible that the lookup table is a bit off. After I had the LED display working, what I did was write some code to simply display the raw AD value on the display. I then used my glass thermometer (that I usually use for brewing and is pretty much the only one I got at this point as I have managed break the digital ones) and put both in icy water and slowly raised temperature to about 70 deg C, noting both values along the way.
From the AD values I assumed that the NTC was connected as a voltage divider that is centered at 25degC. I calculated the resistance at different temperatures and went online to try and find if I could match this to some known type.
I eventually found this
Vishay NTC 10K that seemed to match my data.
I then went the other way and used that table to calculate AD values for the different temperatures. I needed to interpolate a little where the AD values didn't exactly match the values needed for the lookup table. I then also made the conversion to Fahrenheit.
This was the best that I could do.
Now, there are a lot of possible sources of error here. I've made a few assumptions (like I don't know of that table REALLY matches the actual probe, but it at least seemed correct over the range I tested 0-70 deg C) and I
may have made mistakes along the way. And even if all that is correct, I am no expert in thermistors, I don't really know what deviations you'd might expect from one to another.
Finally, measuring accurate temperature is not all that easy. I'd say that the
resolution is sufficient in this application (i.e there are enough bits in the AD conversion that actually hold data), but to achieve
accuracy is another thing. Even with a perfectly calibrated lookup table, I would suspect that 0.1 degree (in deg C) accuracy is not going to happen, best thing you can do is calibrate around your working point. Even the STC-1000 manual states 0.1 deg C resolution 1 deg C accuracy (that would be ~2 deg F).
Sorry for the painfully long answer, in short. Yes, it is
very likely that there could be improvements to the lookup table that would improve accuracy. If you can provide data, that would be helpful (temp vs resistance) or even if you have insights to the specs of the actual probe. But we also need to be realistic as to what can actually be achieved.
2. Setpoint will always be what the thermostat strives for. You
can set the setpoint even during a profile, and it will change. Only, once the profile reaches a step, it will be overwritten with the new value from the profile. The best way to think about it is as I have described it previously. There really only is thermostat mode and it uses setpoint. Profiles are built on top of that, to automatically set the setpoint at given times (instead of having to actually punch it in yourself). I realise it is not so easy to know how it works, as documentation is so lacking. If the firmware reaches something that we all can feel is good enough (you know, the infamous version 1.0) I hope to be able to spend some time improving documentation. In the meantime please bear with me and don't give up
3. I'm glad to hear! I've been pondering moving the millisx60 counter to the main loop, and maybe split the code up a bit more, so it will be easier to both read and maintain. Right now I'm not really happy with the solution, but at least it seems to work.
Also, one of the features I would
really like to add is oversampling and at least averaging the AD value, that would also aid stability. I would want filtering, but let me tell you, I cant even get averaging working at the moment since it adds 2 more bytes of RAM. That is how close to the limits of the hardware that we are...
4. No right now it only functions as back/cancel in the menu. I do want to add the functionality (for v1.0), but I don't feel it is a show stopper, as I said before, power off does not actually power off... It pretty much just clears the display and disables relays. To power really off, you'd need to cut power.
Again thanks for the work you do! Please keep it up!