Stc-1000+

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
What should each of the steps for the profiles look like?

Stairstepwise:
Set Temperature for Step > Set Duration (hours) of Step >
Set Temperature for Step > Set Duration (hours) of Step > ... etc.

Or can we define slope, ramp up or down x Degrees over y Time?
 
I'm realizing just how bad I STILL am at trying to solder. Gave up on that for now, and am trying to hot glue each wire down to each point.

I don't get it -- I've watched soldering videos a thousand times and always follow proper form, yet it never works out for me. Most of the time I just never get the solder to melt unless I use direct contact, or else I'll end up burning something.
 
I don't get it -- I've watched soldering videos a thousand times and always follow proper form, yet it never works out for me. Most of the time I just never get the solder to melt unless I use direct contact, or else I'll end up burning something.

What is the problem you keep running into? Make sure you clean the tip of your soldering iron with sandpaper and wipe off any excess solder with a wet paper towel. Don't forget to use flux and use isopropyl alcohol to clean it up when you're done.
 
What is the problem you keep running into? Make sure you clean the tip of your soldering iron with sandpaper and wipe off any excess solder with a wet paper towel. Don't forget to use flux and use isopropyl alcohol to clean it up when you're done.

Man, I dunno what I've done wrong here. I finally got the balls to actually do the soldering and here's the job. Yeah, it ain't pretty, but it powers on the controller, and from what I can tell, it SHOULD be able to communicate with it.

I connected everything according to the diagram in the pictures on page 2 of this thread, but it simply doesn't find the STC-1000.

Steps I took:

1. Solder and connect everything
2. Open the program, compile/verify, and upload to the programmer (I tried both usb interfaces)
3. ctrl-shift-m, select 115200 baud, no line ending, and type d, press send
4. STC-1000 not found, check wiring.

Also, when it says it can't detect it, I can hear a very faint clicking noise, and the controller resets. What's going on there?!?!

It's frustrating as hell because I hate soldering, and I feel pretty damn sure that i got it done right, esp considering it's powering up and registering 17.2C which is the temp inside the house right now.

Thoughts?

RhCC7hx.jpg


P.S. I've made sure that none of those wires are crossing each other or touching, so I don't think there's an issue there. I'm baffled. And yeah, I know -- the colors of the wires makes no sense, but I don't really care. They're one-time use, and are what came with the Arduino starter kit I got.
 
FIXED!

The picture on page 2 is STILL incorrect. He updated the readme, but not the image on page 2.



Rely on this:
k970o7.jpg


All is well! Thank God. I was getting so pissed, lol. Also, be sure to recalibrate your thermometers!
 
OK, I know I've got a lot of posts here, but it's late and I'm wide awake cuz I'm super excited about the fact that I got this thing flashed, config'd, and up and running! I thought it would be end of the weekend or later til I'd get it going, but I lucked out.

So anyways, there's all the notes I put in the previous 2 posts that are worth reading, but in this post, I'd like to comment on the new system.

The learning curve is steep at first, and it seems like it was programmed by an insane person. But you slowly start to realize that there's not much better way to code it, and that it's actually done pretty well. However, I've got some suggestions that I'd like to run by:

1. Temperature polling -- this is probably not as big a deal in Celsius, but in Fahrenheit, the screen is going nuts, due to the slightest change in temp. So, for example, my IPA is currently fluctuating at 67.9-68.0, and the screen is going crazy showing it. Is there a way to get it to slow down the polling a bit, to say, maybe every 2-3 secs? It looks like it's doing it multiple times per second. I'm guessing if I look in the code, I'll find it somewhere, but I thought it's worth mentioning.

2. Profiles -- I'd like to trim the number of profiles down a bit, as 9 is excessive. Again, I'm guessing this is relatively easy to find in code, but if you know and can quickly point it out, that'd be great.

3. Thermostat mode -- can you explain this a little bit better? So when the profile that's current active (by choosing "rn" to a profile via the "set" menu) expires, what does thermostat mode do?

4. Hysteresis setting -- so is this the exact same as the temp swing setting? I know it's a swing setting, but I guess my question is, if hysteresis is set to 2F on a 75 setpoint, at 77.1, it will cut on and run to......75?? I just want to make sure that it does indeed run back to setpoint. One interesting feature that would be cool to customize is to tell it to NOT go all the way quite back to setpoint, as our freezers/chambers typically overshoot their target temp. It'd be cool to tell it to cut off a tad early, but that might present issues or just be a hassle with guessing.

That's all I've got for now. Man, alphaomega, I gotta give it to you -- this is some serious kickass software you've made for this controller. I don't think people really realize what they're getting into until they've actually installed it. I know I sure as hell didn't. I encourage all of you to install this, and read the User Manual VERY carefully!
 
Oh, nickmv... I completely forgot about those. I'm so sorry for that. I removed the images from page 2 also.
And don't feel bad about the soldering. I've been into hobby electronics for 20 years and I also have trouble with soldering. It is an art and a science.
I'm really glad you got it working though, please report issues and I'll try to fix them as soon as I can (I already know of a few).

@IslandLizard: That is correct temperaturen x1 for y1 hours, ..., x8 for y8 hours, x9 indefinitly.
Ramping would be nice, but I am afraid that it might not be possible.
 
Good news!
A guy in a swedish forum is the first to successfully flash his!

That is me ;) Happy to be Nr2.. Hope to get some more time to test this today!
So much fun and I really like that it is in a such nice package and now we can
make it do whatever we want! (almost).

Cheers!!
 
OK, I know I've got a lot of posts here, but it's late and I'm wide awake cuz I'm super excited about the fact that I got this thing flashed, config'd, and up and running! I thought it would be end of the weekend or later til I'd get it going, but I lucked out.

So anyways, there's all the notes I put in the previous 2 posts that are worth reading, but in this post, I'd like to comment on the new system.

The learning curve is steep at first, and it seems like it was programmed by an insane person. But you slowly start to realize that there's not much better way to code it, and that it's actually done pretty well. However, I've got some suggestions that I'd like to run by:

1. Temperature polling -- this is probably not as big a deal in Celsius, but in Fahrenheit, the screen is going nuts, due to the slightest change in temp. So, for example, my IPA is currently fluctuating at 67.9-68.0, and the screen is going crazy showing it. Is there a way to get it to slow down the polling a bit, to say, maybe every 2-3 secs? It looks like it's doing it multiple times per second. I'm guessing if I look in the code, I'll find it somewhere, but I thought it's worth mentioning.

2. Profiles -- I'd like to trim the number of profiles down a bit, as 9 is excessive. Again, I'm guessing this is relatively easy to find in code, but if you know and can quickly point it out, that'd be great.

3. Thermostat mode -- can you explain this a little bit better? So when the profile that's current active (by choosing "rn" to a profile via the "set" menu) expires, what does thermostat mode do?

4. Hysteresis setting -- so is this the exact same as the temp swing setting? I know it's a swing setting, but I guess my question is, if hysteresis is set to 2F on a 75 setpoint, at 77.1, it will cut on and run to......75?? I just want to make sure that it does indeed run back to setpoint. One interesting feature that would be cool to customize is to tell it to NOT go all the way quite back to setpoint, as our freezers/chambers typically overshoot their target temp. It'd be cool to tell it to cut off a tad early, but that might present issues or just be a hassle with guessing.

That's all I've got for now. Man, alphaomega, I gotta give it to you -- this is some serious kickass software you've made for this controller. I don't think people really realize what they're getting into until they've actually installed it. I know I sure as hell didn't. I encourage all of you to install this, and read the User Manual VERY carefully!

Thanks for some excellent feedback! Please don't hesitate to report any issues. I don't think I'm insane, but if I was would I know it? :)
You are correct in that there are not a whole lot of ways to this, and yeah (not to toot my own horn) I kind of also think I done a pretty decent job, with the resources at hand. Documentation still is suffering. The user manual is a rush job... Hopefully I can work on that at some point as well.

1. Oh no, it jitters a lot in celsius as well. That is a good point, I'll see if I can fix that at some point, but the issue is really only cosmetic. Bottom line is that, sampling buttons, sampling temperature and running regulation runs off a very carefully selected timer. The timer needs to be fast enough so sampling buttons is responsive, but not to fast to overflow the 1 hour counter. Running counters needs static variables, that eats away at very precious RAM, So, while the thermostat runs at 1 sec (well almost, 960ms) intervals, display runs at full speed (16.6ms). I don't want to add a counter just for display, and I cant run display until buttons are checked.
This is technical stuff... But know that there is a reason. If I can rearrange code, so I can slow down display without it costing RAM, I might get it fixed. Excellent point though. I'll look into it.
EDIT: Ok, I have refactored. Display now updates every second instead.

2. There are actually 6 profiles (0-5), but with ten temperature steps each. That is what fits in EEPROM. Setting profiles is frustrating with keypad, so I'd rather have a few, so you could program the 'usual suspects' only once.

3. From technical point of view, thermostat is really all there is, profiles just sets the setpoint for the thermostat at given times. The last step in each profile (or the first step with a 0 duration), will just set a flag in the EEPROM that profile is not active and setpoint won't be updated automatically anymore.
In the code, profile and thermostat could theoretically be separated, but they do run from the same counter (millisx60), saving RAM.
I don't know if you have noticed, but the 'set' LED on the display is lit when a profile is active.

4. Yes, that is right. Temp swing might have been a better name. It does run back to setpoint, then cuts out, when setpoint + or - hysteresis (or temp swing) is exceeded heating or cooling starts (if delay since last cooling/heating cycle has passed).

Hope, that helps.
And please, do continue the suggestions and observations. I'll keep working on it, but I do have work and family obligations as well... So please have patience :)

There probably a bug also when trying to set temperature < -99.9 or > 99.9, you will still increment in 0.1 steps even though decimals needs to be dropped from display.
 
There probably a bug also when trying to set temperature < -99.9 or > 99.9, you will still increment in 0.1 steps even though decimals needs to be dropped from display.

Quite the ego to quote myself, but it was actually worse than I thought. There also was a bug in displaying temperatures over 99.9 or under -99.9. I think I've fixed it now though.

I've also added ability to upload EEPROM data. I think I will leave it at that for now.
I still need to add the actual default values to the code.
Edit: I added some defaults. But not very good ones for profiles, but at least data in EEPROM should be valid.
 
Quite the ego to quote myself, but it was actually worse than I thought. There also was a bug in displaying temperatures over 99.9 or under -99.9. I think I've fixed it now though.

I've also added ability to upload EEPROM data. I think I will leave it at that for now.
I still need to add the actual default values to the code.
Edit: I added some defaults. But not very good ones for profiles, but at least data in EEPROM should be valid.

Uploading EEPROM via a customizable document where you set your profiles on the computer -- that would be VERY good! It's a tad bit annoying setting the temps from 0.0 to something like 70 degress, by increments of 0.1, but once it's done it's done.

Considering that it sounds like I'm going to be reflashing this when I get home for the screen polling changes (I kept the wires attached, and used a Dremel tool to file down the back casing to fit them out the back), it'd be nice to not have to set everything via the controller itself, instead configuring a file and uploading.
 
Might it be possible to link End-Of-Profile-N to Beg-Of-Profile-N+1, thereby essentially making more steps to a profile? I'm thinking of ramping. I mean, as it stands you have already essentially provided a way to make 10 changes like a degree a day over 10 days. Maybe even go 1 profile, 60 steps instead of 6 with 10. And it looks like you've already looked at ramping since the code has "PROFILE_RAMPING" populating a profile, but I'm just skimming the code at this point, itching for the device to arrive to start playing.
 
I am going to give this a shot this weekend. I already had a spare STC-1000 and an Uno laying around anyway.

Are the numbers in parenthesis on the picture of the STC-1000 header the corresponding pins on the Arduino?
 
Are the numbers in parenthesis on the picture of the STC-1000 header the corresponding pins on the Arduino?

Correct.


Also, alphaomega, can you compile a list of current bugs you know of? And better yet, is there anything that's keeping this from actually being used to ferment a batch? As in, critical bugs in normal operation that will either reset the device, or incorrectly manage the temperature?

I'd like to get a batch of beer brewed with it in use soon.
 
I actually have a spare dorm fridge that I was going to build this STC-1000 into (the original thermostat failed).

If we can come up with a decent testing protocol, I'll be happy to implement it on this fridge.

I can come up with something to log the temps independently, which probably means I need to go ahead and throw my BrewPi together this weekend.

Any ideas? Should I start with a fixed temp in thermostat mode and see if it can hold it for a week? Then start with steps?
 
Regarding testing.
I'm quite sure if it can hold a temp for a day it should be able to hold it for weeks.

One of the biggest bugs I can foresee is the STC not resuming where it left off after a power outage or brief power glitch and going to some arbitrary or off-kilter default setting.

I don't think it's that hard to program a ramp and won't take that much data storage. Again it should resume the correct setting (or program) and point in ramp after a power glitch.

A ramp can exist of a start point (given t, T, or both), a T rise over t hours until a given end point (t, T, or both) and hold there. Intermediate tracking data (for resume purposes) can be stored in a small EEPROM location.

Application of ramp/program:
Typically after some steady temp fermentation time we raise the temps gradually from say 68°F to 76°F over 2-3 days, then hold there for a period of time (say a week), followed by a fast as possible cold crash and held there for a few days, until pulled.

For lagers it is a bit more complex. Not my beer of expertise.

Being able to upload updated or customized firmware easily is a definite plus. Maybe a modified USB socket can be used. It has 4 prongs plus the ground shield.
 
Might it be possible to link End-Of-Profile-N to Beg-Of-Profile-N+1, thereby essentially making more steps to a profile? I'm thinking of ramping. I mean, as it stands you have already essentially provided a way to make 10 changes like a degree a day over 10 days. Maybe even go 1 profile, 60 steps instead of 6 with 10. And it looks like you've already looked at ramping since the code has "PROFILE_RAMPING" populating a profile, but I'm just skimming the code at this point, itching for the device to arrive to start playing.

Yeah, I would very much like to have ramping between steps. But I don't know if it is at all possible. The resources are extremely limited.
It would certainly not be impossible to have one profile with many steps instead. For me, I'd rather have a few profiles, that I don't need to change a lot. Ten steps is plenty for me. I'd like to start coldish, raise to fermentation temp, raise to diacetyl rest, then cold crash. This leaves enough room to actually have a few inbetween steps.
Look at it this way, having the thermostat setting the temp 10 times for you, is at least 10 times better than stock firmware.
The reason for exactly ten steps is because of the display. If I were not to make this project public, I might have gone 16 and used hex. And 6 profiles is what fits in the EEPROM at 10 steps.

Correct.


Also, alphaomega, can you compile a list of current bugs you know of? And better yet, is there anything that's keeping this from actually being used to ferment a batch? As in, critical bugs in normal operation that will either reset the device, or incorrectly manage the temperature?

I'd like to get a batch of beer brewed with it in use soon.

The issues I have to work with now are mainly improvements, I know of no critical bugs, but there probably ARE bugs, and they may be critical. I have no idea if it even works :) During development I don't even power feed the relays, so...
I'd be happier if it could be tested at least a few days (I mean try running a few profile steps at least) over a period of at least a few hours each...
I dont know if timers are correct or stack overflow can occur...
I mean, I'd hate to see you ruin a perfectly good batch of beer over this. Could you try a 'dry' run possibly?
 
Great work, this would be perfect for ramping up/down temperatures automatically!

Is there by any chance a serial interface on the PIC, and could the firmware be written small enough to use it?
 
I'd be happier if it could be tested at least a few days (I mean try running a few profile steps at least) over a period of at least a few hours each...
I dont know if timers are correct or stack overflow can occur...
I mean, I'd hate to see you ruin a perfectly good batch of beer over this. Could you try a 'dry' run possibly?

Yeah, I'm looking into how I'd do this, since just putting water in there isn't going to generate heat that requires control, like a fermentation does. I could possibly add hot water to a vessel to slowly drive temp up and test it.

At this moment, my IPA is sitting at home, running on Profile 1, Step 1, 72.5F, with a 2F hysteresis, and it's doing nothing --- as I want it to.

My controller does not have heating hooked up, due to the climate I am in. I only use cold, which works well for me, so when it turns heat on, nothing happens. I have my top outlet wired to cold, and the bottom wired to always on for my fans.

But anyways, yeah, I'll see what I can do this weekend, and possibly give it a go. I can atleast test to ensure that the setpoint-over-time logic works correctly, so that I don't have to worry about issues there. I'll do some testing.....keep at 70F, then after 1 hr, cool to 65, then after 2 hrs , to 60, etc.

That all being said, I do have the balls to brew a batch and use it. This firmware doesn't scare me so far, and I've got some brews I've GOT to make over the next couple weeks. Since I work so close to home, I have the luxury of keeping a close eye on them. I'd probably just set all the steps in a profile to the same temp, in order to keep it from crashing (if that potential was there), in order to ensure a good brew.
 
I would love to dry run it ASAP with my temp datalogger--just waiting on the unit and device to flash it.
 
This is insanely cool. I'm just about to start a 3 chamber fermenter and I was considering whether it would be worth getting three brewpi's. This solution is exactly what I need! Thank you so much for your work on this!
 
If you really want to support a temperature schedule, you are going to need a better
way to specify a temperature ramp.

Here is a typical lager profile

1. ferment at 52 for 8 days
2. ferment at 67 for 1 day (diacetyl rest)
3. ramp down to 40 over 14 days (2 deg/day)
4. lager at 40 for 28 days.

If you made a profile with a tuple of (temp, time, #steps) then you could specify profiles
that are flat, steps and complex (like the lager above).

The 3rd parameter is the number of steps to repeat. I.e.
when steps is >0, the temp is a delta temp to apply to the current temp level.
Then wait the # hours specified.
Repeat until steps is zero.

If you implement this, the typical profiles get one more argument instead of the current
two (temp,time). The complex profile would use 12 arguments:
(52, 192, 0) [192 hrs is 8 days]
(67, 24, 0)
(-2, 24 14) [ramp down 2 degrees per day over 14 days]
(40, 224, 0)

Thus your submenus would have support for 6 steps with 2 left over (for maybe a final (temp, time) setting)

Thoughts ?
 
Wow, Fella's !

Still, all Greek to me, ( 'cept for the soldering part), but it's bad ass to see this taking off so, and the brainstorming and networking going on to customize the profiles, and to work out all the bugs.

Amazing!........The help and knowledge available to this hobby's community!
 
This is insanely cool. I'm just about to start a 3 chamber fermenter and I was considering whether it would be worth getting three brewpi's. This solution is exactly what I need! Thank you so much for your work on this!

So to be clear, you're gonna get 3 STC-1000's, not just 1?

Just want to make sure. If so, I think you're gonna find that you're gonna save a TON of money! This is a great project to get involved with, and I think it's about to really take off.
 
If you really want to support a temperature schedule, you are going to need a better
way to specify a temperature ramp.

Here is a typical lager profile

1. ferment at 52 for 8 days
2. ferment at 67 for 1 day (diacetyl rest)
3. ramp down to 40 over 14 days (2 deg/day)
4. lager at 40 for 28 days.

If you made a profile with a tuple of (temp, time, #steps) then you could specify profiles
that are flat, steps and complex (like the lager above).

The 3rd parameter is the number of steps to repeat. I.e.
when steps is >0, the temp is a delta temp to apply to the current temp level.
Then wait the # hours specified.
Repeat until steps is zero.

If you implement this, the typical profiles get one more argument instead of the current
two (temp,time). The complex profile would use 12 arguments:
(52, 192, 0) [192 hrs is 8 days]
(67, 24, 0)
(-2, 24 14) [ramp down 2 degrees per day over 14 days]
(40, 224, 0)

Thus your submenus would have support for 6 steps with 2 left over (for maybe a final (temp, time) setting)

Thoughts ?

That is not a bad idea at all, something simpler like this could work.
Right now, I'd be glad to get the current functionality working, but I would consider something like this for future improvement.
In fact I could go so far as to only use delta temperatures to keep it simple, you'd prolly have to plan it out on paper before programming, but personally I could live with that.
As I've said before, there are extremely limited resources to work with. So keeping things simple is not only key to success, there just is no other way to do it...
 
These are all great ideas, which is a great thing for this project.

Perhaps multiple versions can be created here? That would be ideal.


alphaomega, I've shared your project with both my local brewclub mailing list, as well as posted it to Reddit under /r/homebrewing, with all credit due to you of course.
 
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, as I've found that it appears that there's no way to turn the device on or off. It's jut on when plugged in, an==of mj

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.
 
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!
 
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.

This is all way over my head and I really don't know if this helps but here is a lookup table we use on some equipment in our lab. It on pg 26 of this manual.
It varies from the Vishay one you posted a little bit. To calibrate the probe, the monitor allows you to adjust the resistance using a multiplier to dial in the proper temp (pg 41).
 
Ya know, it's possible we could email Elitech, saying we're an engineer, and ask them what probe/thermister is used in the STC-1000. It's a shot in the dark, but surely wouldn't hurt.

We need to be careful not to link them in any way to the project, should they happen to get irritated at it.

Unfortunately, the big issue is trying to figure out WHERE to send an email. My searches for Elitech so far have not yielded the company that I think manufactures this controller. Theres http://www.elitechgroup.com/ but I don't think that's them.
 
This is all way over my head and I really don't know if this helps but here is a lookup table we use on some equipment in our lab. It on pg 26 of this manual.
It varies from the Vishay one you posted a little bit. To calibrate the probe, the monitor allows you to adjust the resistance using a multiplier to dial in the proper temp (pg 41).

While that table has numbers that seem pretty close, by my calculations, they would put the test nickmv did at around 36F, so even more off. Without data for the actual probe, it is pretty much guesswork.
 
Huh...
I just found this
Which temperature probes work with ATC800+
, where they mention the probe is a 'thermistor type NTC (10K / 3435)'. Googling for that I found a table that at least initially looks promising.
I'll check it out more this evening at home, would be cool it I could find verified data on the probe :)
 
Huh...
I just found this
Which temperature probes work with ATC800+
, where they mention the probe is a 'thermistor type NTC (10K / 3435)'. Googling for that I found a table that at least initially looks promising.
I'll check it out more this evening at home, would be cool it I could find verified data on the probe :)

Solid. I look forward to hearing about it.
 
You're speaking Greek (Swedish?) to me with the firmware stuff, but I would pay for one of these!
 
You're speaking Greek (Swedish?) to me with the firmware stuff, but I would pay for one of these!

It's not really THAT difficult to actually get one of these flashed. Now, understanding the code and design that goes into -- that's the mind blowing stuff.

First, there's the Arduino board -- it's a basic beginner's project programming board, that allows you to do all kinds of cool stuff with it. It's highly expandable, and the limits are practically endless with what you can do. The Raspberry Pi, for example, has a project on HBT that allows you to display digitally what's on tap on your keezer, as well as add flow meters to display how much of your beer is left in the keg. Again, endless possibilities.

Then you've got the STC controller. THis is obviously what you're working on. You're going to be doing some soldering, which, to a beginner and even some very experienced folks, is the hardest part. I dread soldering and I've done it several times before.

Once you've got your wires soldered to the controller, you're simply hooking it up the Arduino, then hooking the Arduino up to your computer. You then launch a program that the author included, you press compile, you press Upload (to send to the Arduino), then you open up a window, type d, then type a or f.

It's that simple. Really not a ton of stuff to do. You've just gotta have some patience and work carefully at it.
 
Ok. I'm in.

I just bought 2 STC-1000s off of ebay. Shipping from China so should be here in a couple of weeks and I can help test code.

My background is in Electrical Engineering and I've written assembler code, PHP and javascript. I downloaded the pic data sheet from here and have started reading through it.

Just finished converting a side-by-side refrigerator to a combo fermentation chamber/keezer. I used two controllers similar to the STC-1000, but with single relays and displays in F. Want to convert at least one of them to a dual relay STC-1000 so I can run heating and cooling (I can only run heat OR cooling now, but not automatically switch).

My plan for my current build was to get a Raspberry Pi and make it into a temperature monitor using the GPIO and a couple of thermistor probes. Then take the collected data and display it via web server from the R PI running linux. I was planning to do three (or maybe four) temperature probes. One each for the fermentation chamber/keezer ambient temps, plus a couple of probes to directly measure the carboy/wort temps. Then also monitor the compressor and circulation fan on/off status.

You guys are doing great work and I don't want to hijack this thread, so can start a new one if needed.

What do you think about interfacing the R Pi to the STC-1000 to create a controller to make the step/profile changes dynamically, controlled from a web page? This might solve the limited memory issues you're facing trying to cram all that code and variables into a couple of bytes of RAM.

-gary
 
Subbed... I've also played around a little with MPLAB and Pic's I think I'll order a non-production STC-1000 and play a little before implementing this in the brewery - Looks like great work though!
 
So far it's been running great for me, however I must admit, I have NOT yet tried the stepped functionality. Instead I've been leaving it on a profile that has the first step at well over 100hrs, to simply keep it on the same setpoint.
 

Latest posts

Back
Top