Arduino-PID-Library icon indicating copy to clipboard operation
Arduino-PID-Library copied to clipboard

Error in PID_RelayOutput Example

Open kdws opened this issue 9 years ago • 1 comments

On line 58, there is a an error which makes the program useless.

Line 58: if (Output < millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);

The output should be greater than not less than millis() - windowStartTime.

When warming up to the SetPoint, the output is 5000, which is the whole windowTime, so the relay would never turn on.

kdws avatar Oct 12 '15 04:10 kdws

+1.

It depends on whether the relay is on when input is HIGH or when input is LOW. Indeed the example is unclear. Assuming that HIGH turns the relay on, then the code should check when output is greater than the current window, and set HIGH when it is. Think about it as "What percentage of time should the relay be on?"

As stated here, this means that the comparison would be incorrect in PID_RelayOutput.ino when HIGH turns the relay on. It should be:

  if (Output > millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);
  else digitalWrite(RELAY_PIN, LOW);

This is a duplicate of #10.

rduplain avatar Nov 15 '16 21:11 rduplain