Hej joeytribbiani,
den enkleste FIR-filter er et gennemsnit af n værdier.
TempLong = 0;
for (i = 0; i < 100; i++)
TempLong += thermocouple.readCelsius();
i stedet for:
//TempLong = thermocouple.readCelsius()*100;
Min PID's setpoint er omkring 115 grader celsius. Når udfaldene opstår, så er TC forstærkerens output ofte 0,0 grader eller det halve af det forgående output, 56 grader C. Andre gang er det er dobbelt så højt, 230 grader C. Udfaldene varer kun et split sekund og derefter kommer der et normalt output igen.
Det er ikke normal og jeg er med Jan at søge efter fejlen i hardwaren.
Og det forstår jeg ikke:
if ((millis() > Last_input + 20000)){
PID_Input = TempCalFloat; }
if ((TempCalFloat < PID_Input + 5) || (TempCalFloat > PID_Input - 5) ){
PID_Input = TempCalFloat;
Last_input = millis();
}
else {
//her kunne man evt skrive en besked i lcd og putte pid'en i Off? Så maskinen skal slukkes og tændes for at varme igen
}
Jeg tror det er bedre at skrive bare:
PID_Input = TempCalFloat;
gerd