Compare commits
3 commits
0b8e4d3a5c
...
67c1f0503a
Author | SHA1 | Date | |
---|---|---|---|
67c1f0503a | |||
fc39b3c863 | |||
d846c930d4 |
1 changed files with 41 additions and 18 deletions
|
@ -16,17 +16,16 @@ DallasTemperature sensors(&oneWire); // declare sensors
|
|||
double pidset, watertemp, output;
|
||||
|
||||
// PID adjustment
|
||||
double Kp=2, Ki=5, Kd=1;
|
||||
double Kp=500, Ki=10, Kd=0;
|
||||
PID myPID(&watertemp, &output, &pidset, Kp, Ki, Kd, DIRECT);
|
||||
int WindowSize = 5000;
|
||||
unsigned long windowStartTime;
|
||||
|
||||
// Temp adjustment
|
||||
int tempset;
|
||||
float tempset;
|
||||
int poti;
|
||||
|
||||
// time
|
||||
int onesecond = 1000;
|
||||
unsigned long previousMillis;
|
||||
|
||||
|
||||
|
@ -67,7 +66,26 @@ void setup() {
|
|||
lcd.print("Weckkubator 0.0.1");
|
||||
delay(3000);
|
||||
lcd.clear();
|
||||
|
||||
|
||||
// Setup LCD
|
||||
// Output temperatureset
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("set: ");
|
||||
lcd.print(pidset);
|
||||
lcd.write((byte)0);
|
||||
|
||||
// Output watertemp
|
||||
lcd.setCursor(0, 2);
|
||||
lcd.print("temp: ");
|
||||
lcd.print(watertemp);
|
||||
lcd.write((byte)0);
|
||||
lcd.print("C");
|
||||
|
||||
// output PID
|
||||
lcd.setCursor (0, 3);
|
||||
lcd.print("output: ");
|
||||
lcd.print(output);
|
||||
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
@ -77,11 +95,13 @@ void loop() {
|
|||
|
||||
// update LCD
|
||||
unsigned long currentMillis = millis();
|
||||
if (currentMillis - previousMillis >= onesecond) {
|
||||
if (currentMillis - previousMillis >= 250) {
|
||||
settemp();
|
||||
readtemp();
|
||||
lcdoutput();
|
||||
previousMillis = currentMillis;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
|
@ -89,10 +109,7 @@ void loop() {
|
|||
void pid() {
|
||||
|
||||
myPID.Compute();
|
||||
|
||||
/************************************************
|
||||
* turn the output pin on/off based on pid output
|
||||
************************************************/
|
||||
|
||||
if (millis() - windowStartTime > WindowSize)
|
||||
{ //time to shift the Relay Window
|
||||
windowStartTime += WindowSize;
|
||||
|
@ -117,23 +134,20 @@ void readtemp() {
|
|||
// LCD output
|
||||
void lcdoutput() {
|
||||
// Output temperatureset
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("set: ");
|
||||
lcd.print(tempset);
|
||||
lcd.setCursor(8, 1);
|
||||
lcd.print(pidset);
|
||||
lcd.write((byte)0);
|
||||
lcd.print("C");
|
||||
|
||||
// Output watertemp
|
||||
lcd.setCursor(0, 2);
|
||||
lcd.print("temp: ");
|
||||
lcd.setCursor(8, 2);
|
||||
lcd.print(watertemp);
|
||||
lcd.write((byte)0);
|
||||
lcd.print("C");
|
||||
lcd.print(" ");
|
||||
|
||||
// output PID
|
||||
lcd.setCursor (0, 3);
|
||||
lcd.print("output: ");
|
||||
lcd.setCursor (8, 3);
|
||||
lcd.print(output);
|
||||
lcd.print(" ");
|
||||
|
||||
|
@ -144,6 +158,15 @@ void lcdoutput() {
|
|||
// Read Poti
|
||||
void settemp() {
|
||||
poti = analogRead(A3);
|
||||
tempset = (18+(poti*0.07)); // range between 18°C and 18+1024*0,07 (~89°C)
|
||||
pidset = tempset;
|
||||
tempset = (20+(poti*0.04));
|
||||
|
||||
if (tempset <= 50) {
|
||||
pidset = tempset;
|
||||
}
|
||||
|
||||
if (tempset >= 51) {
|
||||
pidset = (tempset+30);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue