Gast
#320463
Hallo zusammen!! Habe einen mega8, mein Programm läuft auch prima soweit, es soll jedoch eine Temperaturregelung implementiert werden. Diese soll wie folgt ablaufen: Einlesen des Sollwertes (Poti am ADC) Einlesen des Istwertes ( Temp.-Fühler am ADC) Regelung (PI-Regler) Stellgröße = PWM-Signal für Lüfter Im Prinzip läuft die Regelung auch, hier mal der Code-Auszug: W = Getadc(2) Kp = 18 Ki = 60 Ta = 0.01 X = Getadc(0) E = W - X 'Vergleich Esum = Esum + E 'Integration I-Anteil If Esum < -400 Then Esum = -400 End If 'Begrenzung I -anteil If Esum > 400 Then Esum = 400 End If Y = Kp * E Z = 0.6 * Esum Y = Y + Z 'Reglergleichung If Y < 0 Then Y = 0 'Begrenzung Stellgröße End If If Y > 750 Then Y = 750 End If Pwm1a = Y So, Problem ist nun: das ganze läuft irgendwie nicht, der Lüfter müsste ja bei Y = 750 sehr langsam laufen (macht er auch wenn ich es "manuell" vorgebe z.B.), bei Y = 0 auf "volle Pulle", aber das will irgendwie nicht so ganz?!?! Wo liegt der Fehler? Danke schonmal für eure Hilfe!!