Some improvements...
- Update circuitdiagramm to v1.x - Improve code to ship v1.1.0
This commit is contained in:
parent
a19463b3a1
commit
b888c26b8a
2 changed files with 950 additions and 3405 deletions
|
@ -1,12 +1,13 @@
|
|||
/* Weckkubator - Weck(topf)-(In)kubator
|
||||
*
|
||||
* Version 0.1.0
|
||||
* Version 1.1.0
|
||||
*
|
||||
* Fliegerjohn - 06.05.2024
|
||||
*
|
||||
* Have fun!
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <Wire.h> // Support for I2C --> LCD
|
||||
#include <LiquidCrystal_I2C.h> // Support for PCF8574 --> LCD
|
||||
#include <OneWire.h> // 1-Wiresupport for DS18B20
|
||||
|
@ -14,8 +15,8 @@
|
|||
#include <PID_v1.h> // PID-Controller
|
||||
|
||||
#define ONE_WIRE_BUS 10 // Enable 1-Wirebus on digital 10 (PB2 - Pin16)
|
||||
#define fan 8
|
||||
#define wecktopf 9
|
||||
#define fan 8 // Fan for cooling the Triac
|
||||
#define wecktopf 9 // Triac for wecktopf
|
||||
|
||||
LiquidCrystal_I2C lcd(0x3F,20,4); // declare LCD
|
||||
OneWire oneWire(ONE_WIRE_BUS); // declare 1-Wirebus
|
||||
|
@ -33,6 +34,8 @@ unsigned long windowStartTime;
|
|||
// Temp adjustment
|
||||
float tempset;
|
||||
int poti;
|
||||
int potiold;
|
||||
int poticlean;
|
||||
|
||||
// time
|
||||
unsigned long previousMillis;
|
||||
|
@ -73,7 +76,7 @@ void setup() {
|
|||
myPID.SetMode(AUTOMATIC); //turn on the PID
|
||||
|
||||
// Greetings
|
||||
lcd.print("Weckkubator 0.1.0");
|
||||
lcd.print("Weckkubator 1.1.0");
|
||||
delay(3000);
|
||||
|
||||
|
||||
|
@ -84,14 +87,16 @@ void setup() {
|
|||
|
||||
void loop() {
|
||||
|
||||
// read temp
|
||||
readtemp();
|
||||
|
||||
// run pid
|
||||
pid();
|
||||
|
||||
// update LCD
|
||||
// update LCD all 250ms
|
||||
unsigned long currentMillis = millis();
|
||||
if (currentMillis - previousMillis >= 250) {
|
||||
settemp();
|
||||
readtemp();
|
||||
lcdoutput();
|
||||
previousMillis = currentMillis;
|
||||
}
|
||||
|
@ -102,6 +107,7 @@ void loop() {
|
|||
else digitalWrite(fan, LOW);
|
||||
previousMillisFan = currentMillis;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
|
@ -128,13 +134,14 @@ void readtemp() {
|
|||
sensors.requestTemperatures();
|
||||
watertemp = sensors.getTempCByIndex(0);
|
||||
|
||||
if (watertemp == -127.00) missingsensor();
|
||||
if (watertemp == -127.00) missingsensor(); // print error if temp -127 (sensor not detected)
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
// LCD output
|
||||
void lcdoutput() {
|
||||
|
||||
// Output temperatureset
|
||||
lcd.setCursor(8, 1);
|
||||
lcd.print(pidset);
|
||||
|
@ -157,11 +164,15 @@ void lcdoutput() {
|
|||
|
||||
|
||||
//------------------------------------------
|
||||
// Read Poti
|
||||
// Read Poti and calculate the settemp
|
||||
void settemp() {
|
||||
|
||||
poti = analogRead(A3);
|
||||
tempset = (20+(poti*0.04));
|
||||
poticlean = ((potiold+poti)/2); // Make average with last value so the tempset will not jump to much
|
||||
tempset = (20+(poticlean*0.04));
|
||||
potiold = poti;
|
||||
|
||||
// jump to 80 degrees if tempset above 51 degrees.
|
||||
if (tempset <= 50) {
|
||||
pidset = tempset;
|
||||
}
|
||||
|
@ -175,22 +186,28 @@ void settemp() {
|
|||
//------------------------------------------
|
||||
// Missing Sensor
|
||||
void missingsensor() {
|
||||
// turn of all output
|
||||
|
||||
// turn of all output to stop heating
|
||||
digitalWrite(wecktopf, LOW);
|
||||
digitalWrite(fan, LOW);
|
||||
|
||||
// Clear LCD
|
||||
lcd.clear();
|
||||
lcd.clear();
|
||||
|
||||
// keep in loop until it reads a valid temp
|
||||
do {
|
||||
// print errormessage
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print("Error:");
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("Missing Sensor");
|
||||
// read sensor
|
||||
sensors.requestTemperatures();
|
||||
watertemp = sensors.getTempCByIndex(0);
|
||||
|
||||
} while (watertemp == -127.00);
|
||||
|
||||
// set back the display
|
||||
setupdisplay();
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue