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; | ||||
| 
 | ||||
| 
 | ||||
|  | @ -68,6 +67,25 @@ void setup() { | |||
|   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; | ||||
|   } | ||||
|    | ||||
| } | ||||
| 
 | ||||
| //------------------------------------------
 | ||||
|  | @ -90,9 +110,6 @@ 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue