#include
#include
#define ONE_WIRE_BUS 4
#define RELAY_PIN 5
double Setpoint = 25.0; // 目標溫度
double Input, Output;
double Kp = 2.0, Ki = 0.5, Kd = 1.0;
double errSum = 0, lastErr = 0;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
Input = sensors.getTempCByIndex(0);
double error = Setpoint - Input;
errSum += error;
double dErr = error - lastErr;
Output = Kp*error + Ki*errSum + Kd*dErr;
// 控制繼電器(加熱器)
if (Output > 0) {
digitalWrite(RELAY_PIN, HIGH);
} else {
digitalWrite(RELAY_PIN, LOW);
}
lastErr = error;
Serial.print("Temp: "); Serial.print(Input);
Serial.print(" Output: "); Serial.println(Output);
delay(1000);
}
嗨☺️請問大大可以mail分享PID手調試算表的Excel檔嗎?謝謝🙏
當然可以!
請email到我的信箱"brian.huang2598@gmail.com",分享可以收到的email address給我。
謝謝!
Brian