matsstaff / stc1000p Goto Github PK
View Code? Open in Web Editor NEWProgrammable thermostat firmware and arduino based uploader for the STC-1000 thermostat
License: GNU General Public License v3.0
Programmable thermostat firmware and arduino based uploader for the STC-1000 thermostat
License: GNU General Public License v3.0
Right now, nothing will happen until next step is reached.
I might need to write a function for manual profile update (needed also when starting profile)
Hey Matt,
I'm trying to upload my 2nd controller but with a new Uno clone that I've never used before. When trying to upload the most recent picprog.ino to the uno, I am continually getting the following error message:
Have you ever come across this before?
Thank you again for the software, although I didn't buy a Black Box i still made a donation to the Dana-Farber Cancer Institute in your name, as a gesture of thanks.
Thanks,
Cam
First thank you so much for all that you have done! I have made a few of the dual probe STCs and couldn't be happier with them! One thing though, I find it hard to use them to control overshooting, since fermentation is sometimes more intense than other times. I feel like my biggest concern is making sure temps don't go OVER an upper limit, on either probe. Too high of temps cause off flavors, too low and they drop out, since my profiles are always slowly raising the temp to keep them active longer, I push towards the yeasts upper limit fairly close so I am MUCH more worried about raising the temp of the outside or inside of the carboy too high than I am of the temp being too low. I find myself wishing I could set an upper limit for BOTH probes that would turn off the heater and/or turn on the refrigerator if either probes go over a certain limit. I think Upper and maybe Lower limits for the both probes as a whole would be very useful. I m new here and could not find a way to contact you other than this. Not exactly an issue I guess, just wanted to contact you.
Too short debounce time, sometimes single press registers as double press.
Review order of events during initialization.
0-4 minutes
This would be nice to have. Seems unlikely that it could be done, but I'll keep it in mind.
Hi Matsstaff,
I ordered a couple of STC1000s, with the A400-P chip, from U-Control. On opening the case I noticed that the programming head was missing on the main PCB. I did, however, notice that there is an ISP near the LCD. I wonder is it possible to use this to reprogram the device and is there anyway to detect what each connection is?
Last week I asked "U-Control" if they would confirm if these points correspond to 5V,GND,ICSPCLK(9) etc. but I have had no reply yet.
http://www.aliexpress.com/snapshot/7110112707.html?orderId=71007002417744
See attached pics
Cheers for any advice
D
Ramping is a feature I would like to include at some point. It will be difficult to fit (will probably need to optimize code more) and would likely be somewhat limited. An idea is to use similar interpolation as for A/D LUT.
Hello,
Would it be possible to add global min and max temperature limits, which would set off the alarm and stop both relays when crossed?
I'm planning a custom temperature control solution for my aquaterrarium and having this fail-safe in case something goes awry (the chiller will be Peltier-based), would be perfection (for my use case this is actually the only feature missing from the original firmware, but I only noticed the fixed out-of-rage thresholds after placing the order :-S ).
Thank you and keep up the great work!
Since refactoring menu system, com example sketch was not updated to reflect the change.
Having purchased two stc1000 from ebay and found them to be the version that uses the N96A8211 chip, I decided to do the conversion to PIC 16F1828.
The pin outs are completely different.
The button BTN_PWR and BTN_S and BTN_UP and BTN_DOWN Addresses need to be swapped respectively in the software.
The temperature probe on the N96A8211 operates in the opposite way to the PIC version.
So that has to be changed. It requires a 10K ohm resistor pull down resistor on the input of the pic, with the temp probe connected between the pic (pin 18) input and vcc. (+5)
The conversion can be done on a bit of prototyping board, there is enough space in the case for it.
I’m toying with the idea of getting a small PCBs made that will hold the PIC chip and that can be soldered in place of the N96A8211… I’ll publish the pcb layout and or make the adaptor available if there is any interest.
Possible to implement simple wear EEPROM wear leveling?
Good afternoon, I am emailing you with the request of some aid for flashing my STC-1000. Is there another way that I could contact you and work on this together. I am attempting to combine the STC-1000 with a CoolZone brew jacket to automate the temperature controlling section of brewing.
I have had a STC-1000 for a month or so now and was just trying to flash it this morning. When I removed the case I noticed the the 5 nice neat solder locations for the header pins were absent. There are 5 pins labeled but spread out across the front of the board. (NTC1, NTC2, VCC, RST, GND) Can you tell me what the pin-out is so I can try and flash this one? Also if it helps the info on what looks like the embedded PIC is "HOLTEK HT66F40 B433K0667G3" Any help or insight. Would be awesome. I am in need on a second controller so I just ordered 2 additional units from separate amazon sellers. I will see what version of the hardware I get when they arrive.
It would be really cool if at the end of the profile, you could set next run mode (Pr0-Pr4 + th + off).
That way you could make it run the profile in a loop, run consecutive profiles, run consecutive profiles in a loop or turn thermostat off afterwards. That would be more versatile.
Only question really is how would a duration of '0' be interpreted? Just skipped over? Skip to end of current profile? Gut feeling is it would be best to handled as any other setpoint in the profile (i.e update the thermostat setpoint and directly go to next step)
When in idle, show SP when 'up' pressed and 'th' or profile stats (step & dur) when 'down' pressed
I purchased the stc1000 (a400p) on amazon and I was able to flash it, etc... However it appears that my buttons are reversed (see picture below). The arrow buttons are on the left and the power/esc and selection buttons are on the right.
This isnt really a "defect" in you firmware as much it is as a quality/consistency issue with the hardware itself, since most of the pictures I see of the stc1000 have the buttons oriented differently than mine... but would it be possible to get you to add a fw configuration option to re-map the buttons?
I purchased this stc1000 on amazon after someone else in an HBT thread mentioned that they were a400p's. Once more people catch on to your firmware, and the fact that there is an a400p available via prime on amazon, these are going to be selling like hotcakes. If all of the ones sold in the above amazon link are a400p's, there will be lots and lots of people wanting this feature. You would think it would be easy to get used to having them reversed, but its damn near like driving a car with the steering reversed.
(amazon link: http://www.amazon.com/gp/product/B008KVCPH2?psc=1&redirect=true&ref_=oh_aui_detailpage_o03_s00 )
Set ramping per step instead as a global? Maybe allow negative dh (simplest solution) to indicate ramping in the step.
Sensor alarm goes off if sensor is removed, even if unit is soft powered off.
Would it would be possible to utilze the 16F1828s uart by sacrificing the buzzer(RA0/TX) and a thermistor (RA1/RX) to be able to log temeratures and send new profiles to the stc1000p over an serial console (by adding a bluetooth/wifi module or a plain usb-ttl bridge).
Something about get_device_id. Maybe it needs declaration?
Look into it you lazy sob!
'Soft off' while better than before is still not really good.
I'm thinking this should be a run mode instead.
Maybe have the 'profile LED' blink when running a profile. Constant on when in thermostat mode and off when in off mode.
If updating setpoint in thermostat mode (minute based FW), it won't take effect until power cycle.
I'm going to have run some more tests on this, but it doesn't seem to be switching to thermostat mode when strike temps are reached. Today I came back late, the alarm was beeping, but the temp was up at 75C, (strike was meant to be 69), I don't think my P0 output ratio was too high, it was only 30, and later during first mash, it wasn't even holding heat and I had to raise it to 45%.
Mat
Just set my system up and used the dual probe minute pic. I was under the impression that the duration times were in hours, are they only in minutes in this program? If so it limits each step to ~16.65 hours, am I able to reprogram it to the non-minute dual probe?
Also can you help me out with how you set up your dual probes, I have a good temp reading off both probes, but am not fully understanding how to properly use it to get the most out of it.
Thanks
Stu
Needs refactoring of menu handling.
It would be nice to have the SO (Strike output) parameter separated into two variables. One variable for heating the water to the strike and hot break temperature and the other variable for heating water between mash steps. I have 4000 watts of heating on my 5 gallon system and I find that when heating between mash steps with SO set to 100 percent, it quickly reaches the next mash step before the grain temperature has equalized, so the temperature falls substantially when the system switches to the thermostat mode. Two variables would allow quick heating for strike and hot break and controlled stable heating for the mash steps.
Hey! Do you think you could use spark core to control the pid? (https://www.kickstarter.com/projects/sparkdevices/spark-core-wi-fi-for-everything-arduino-compatible)
I'm having trouble figuring out how to wire up my 12v pump to the STC with the 12v dimmer that's been suggested.
On "Fig 1: Connection terminal of the LED dimmer" - It's not clear where we should be soldering a new connection from the STC to the dimmer. I assume it means the pad near J2?
Later, "The schematic of the dimmer shows, that if you connect this output to the center pin of the potentiometer...". I don't have my dimmer yet, but I assume this involves cracking the dimmer open and directly soldering to the pot, and not using the 4 terminals at the bottom?
Should we be wiring up the dimmer, as per the SSR pump control directions mentioned later?
Also, how many volts can we pass through J2? since it's 12v for a pump and the dimmer is suited to this but it's unclear how to send the current for the pump through the STC to control it.
Thanks for any help and updates that will help me with this.
Currently only max 4 minutes.
Hi Mats, sorry if I'm being lazy and not checking out the code right now, but have you by any chance done any playing with nested control loops for 2 temperature probes (eg. for in-wort measurement while lagering but controlling refrigeration setpoint)? I was just about to get into designing my own "better" stc to do this (among other things), when I came across your project here.
Even though cooling is a manual step, maybe add a step to the program to alert the user when desired pitching temperature has been reached?
For those targets that won't fit both.
Check if it would be possible to not wipe the EEPROM on upload. During initial upload EEPROM will be wiped due to copyprotection, but it would be nice to leave it intact on later uploads to retain settings.
Sensor alarm is now disabled, as it seems to interfere with cooling relay for some reason. I need to investigate and fix this.
If possible and not taking to much ram, an setting/option to disable the heat cycle.
(saw this one on reddit)
I just received 2 of the ITC-1000 Ink Bird dual temp controllers they appear to be identical to the STC-1000. Will your firmware work on that controller?
Regards,
mike
See if it would be possible to show SP even if in constant power mode when running program.
I have a few suggestions that I think will contribute to ease of use of the software.
They are all related to what's on display when running the program.
When first running program and waiting for St to be reached, a press on Up reveals Output Effect (in my case with one heating element: 100.
I think it would be more useful to present St temperature setpoint instead of output. By that I get a verification of what temperature the system is heading at, and can approximate what time is left until there.
When into the different Mashing steps, a press on the arrows displays actual mashing steps and setpoints. Would it be possible to display remaining time instead for example of the name of the step?
For example, a standard 65*C and 60 min would then display 65 when pressing Up and remaining time when pressing DOWN. By that you can figure out how long time is left until next mashing-step and until time to do lautering etc.
The same goes for several other steps, where Output Effect is presented when pressing UP.
Add power off functionality.
This would be nice to have, but IMHO is not essential, as it really does nothing except turns off LED's and not run regulation loop. Maybe MCU could be put to sleep, but really what's the point in that?
Would it be possible to have the Celsius version of the firmware keep the degree C symbol active? I use Fahrenheit on the hot side, and Celsius on the cold side (because I'm a masochist).
Thanks!
(By the way, this firmware has made this controller SO much more useful! Looking forward to automated diacetyl rests on my lagers!)
Check if negative temperatures work with 433MHz code.
Is there any way to slow down display of temperature without incurring overhead?
Hello,
I was really looking forward to using this program on my STC-1000, but unfortunately I got a version with a Holtek processor on it rather than the Microchip part.
However, in looking through the code briefly, I found a potential problem that you might want to take a look at:
static int RANGE(int x, int min, int max){
if(x>max)
return min;
if(x<min)
return max;
return x;
}
If x is greater than the max, then the min is returned!? Seems like the max should be returned. Same kinda deal for x less than min.
New settings menu option "CF", to toggle temperature display: "C" = Celsius; "F" = Fahrenheit.
This will prevent the need to support two firmware versions.
This could help avoid heater kicking on unnecessarily on an undershoot. Or compressor for that matter if fermenting where ambient is below ferm temp.
Thanks Mat for all of your great work. I thoroughly enjoy my brewing day now!!
I think a nice enhancement to the OVBSC code would be to add a whirlpool step after the cooling step that only runs just the pump for a timed interval. Placement of this step after the cooling step would allow brewers to cool the wort below the hop isomerization temperature and then whirlpool their flame-out hops.
Move eeprom defines to header file. Use the defines in page1. Make check_config_value use config address instead (and use define for calc address when calling). Use check_config_value when reading config per default.
Check to see if there is a 'cheap' way to indicate that the unit is in off mode when power is applied, as a black screen could be interpreted as a broken unit.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.