Check the README.md for more info
Versatile temperature controller, supporting up to 8 sensors. The original project idea is to use the controller for beer fermentation
The current code has the following features:
- +-0.5deg celsius accuracy from -10deg to +85deg without calibration (Higher accuracy is possible through calibration) (DS18B20)
- Relative humidity sensing with DHT22 sensor
- Interactive menu to modify sensor/temperature control parameters
- Monitoring of temperature for each sensor on 7-segment displays, regardless of user input
- CoolOn/CoolOff and HeatOn/HeatOff thresholds offer hysteresis-like temperature control for each sensor
- Offset calibration for each sensor, stored in the DS18B20's EEPROM (each sensor will store the calibration data)
- Storage of settings in Arduino's EEPROM
- Sensor CRC and presence checking (no wrong read-outs)
- Temperature display in celsius/fahrenheit
Would love feedback and feature requests. Enjoy!!! :)
- *Arduino Mega 2560* or similar (depending on how many fermenters are needed)
- LCD keypad shield (1) (https://www.dfrobot.com/product-51.html)
- *DS18B20* digital temperature sensor with OneWire interface (as many as needed)
- 7-segment displays (as many as needed) (based on TM1637 controller)
- 5v Relays (as many as needed)
All user input/interaction is displayed on the LCD, and user input is possible by using the keypad. The 7-segment displays monitor the temperature of each sensor. This is regardless of what mode the program is in. Temperature updates every second (actually a bit faster, around 900ms)
On the main screen temperature is displayed for the current selected sensor (default sensor 0). Using the UP/DOWN arrows selects a different sensor. Pressing LEFT/RIGHT buttons will toggle temperature/humidity display (for sensors that support it)
While on the main screen, if the SEL key is pressed the program will enter configuration mode for the given sensor. The first configuration screen the 'CoolOn' threshold can be modified. Use LEFT/RIGHT arrows to change the temperature above which the relay for cooling will be activated. Then press SEL. The next screen modifies the 'CoolOff' threshold, also set it with LEFT/RIGHT arrows. If the temperature falls below this threshold the MCU will deactivate the respective relay. The next screen is accessed by pressing SEL again.
The next two screens are dedicated to the heating part of the controller. 'HeatOn' will turn on the heating relay if temperature falls below this threshold. When you are done press SEL to continue. 'HeatOff' will turn off the heating relay when temperature rises above said threshold. Press SEL after this to continue to the offset calibration.
This screen allows to modify the offset of the temperature reading of the sensor. This gives the possibility to calibrate the sensor to a known reference temperature. By pressing SEL once more, all settings are saved and the program returns to the main screen.
NOTE: If heating and cooling parts of the controller overlap, cooling will take precedence.
Source code is released under GPLv3, please read LICENSE for more information
PD: The project is called 'fresca' in reference to Argentinian slang word used to describe a cold beer! :)*