Forum: Mikrocontroller und Digitale Elektronik Temperaturregelung (ja, sry, schon wieder ;o) mit PIC


von Kai N. (Firma: ATM GmbH) (oersted)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich bin ein ziemlicher Neuling auf dem Gebiet der dig. Regelungstechnik, 
habe mich aber trotzdem an einer Temperaturregelung eines sehr langsamen 
Systems versucht.
Folgendes Stück Code ist dabei raugekommen:
1
  #define I_BEGR      30
2
  #define TA      1
3
4
        float Kp = 0.4;
5
        float Ki = 0.85;
6
  float pAnteil = 0;    
7
  static float iAnteil = 0;
8
  float e = 0;    
9
  static float esum = 0;  
10
  char outputPower = 0;       // in %
11
  float Ta = TA;         // In Sek.
12
  
13
  e = (float) (presetTemp - currentTemp);
14
15
  // P-Anteil
16
  pAnteil = (e * Kp);
17
18
  if (pAnteil > 100)  { pAnteil = 100; }
19
  else if (pAnteil < 0)  { pAnteil = 0; }
20
  
21
  if (TIMER_REGLER >= (char) (10*Ta))
22
  {
23
    // I-Anteil
24
    esum = esum + (e * Ta);
25
    if (esum > I_BEGR)  { esum = I_BEGR; }
26
    else if (esum < 0)  { esum = 0; }
27
    
28
    iAnteil = esum * Ki;
29
    
30
    TIMER_REGLER = 0;
31
  }
32
            
33
  outputPower = (int) (pAnteil + iAnteil);

Heraus kommt die geregelte Temp.kurve im Anhang.
Die Einheit der X-Achse ist Minuten.

Meine Frage jetzt: Wie bekomme ich das Schwingen weg?

Vielleicht sind die Parameter jenseits von Gut und Böse dimensioniert. 
Vielleicht ist auch im Code ein grundlegender Fehler...

Vielen Dank schonmal im Voraus!

von test (Gast)


Lesenswert?

Wie wäre es mit 2 x Ta statt 10 x Ta ?

von Roland (Gast)


Lesenswert?

Du solltest es mal mit PWM versuchen, wenn das, was du ansteuerst eine 
Heizung ist.

von Kai N. (Firma: ATM GmbH) (oersted)


Lesenswert?

Hallo!

Ach so, der Timer wird alle 100ms aufgerufen, deshalb muss er bis 10*Ta 
laufen um auf die Einheit Sek. zu kommen.

Das, was ich ansteuere ist eine Heizung. Die Regelung gibt mir eine 
Ausgangsleistung von 0 bis 100% raus, was per PWM an die Heizung gegeben 
wird. Das hat also an dieser Stelle mit der Regelung nichts zu tun.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.