mikrocontroller.net

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


Autor: Kai Neugebauer (Firma: ATM GmbH) (oersted)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
  #define I_BEGR      30
  #define TA      1

        float Kp = 0.4;
        float Ki = 0.85;
  float pAnteil = 0;    
  static float iAnteil = 0;
  float e = 0;    
  static float esum = 0;  
  char outputPower = 0;       // in %
  float Ta = TA;         // In Sek.
  
  e = (float) (presetTemp - currentTemp);

  // P-Anteil
  pAnteil = (e * Kp);

  if (pAnteil > 100)  { pAnteil = 100; }
  else if (pAnteil < 0)  { pAnteil = 0; }
  
  if (TIMER_REGLER >= (char) (10*Ta))
  {
    // I-Anteil
    esum = esum + (e * Ta);
    if (esum > I_BEGR)  { esum = I_BEGR; }
    else if (esum < 0)  { esum = 0; }
    
    iAnteil = esum * Ki;
    
    TIMER_REGLER = 0;
  }
            
  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!

Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit 2 x Ta statt 10 x Ta ?

Autor: Roland (Gast)
Datum:

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

Autor: Kai Neugebauer (Firma: ATM GmbH) (oersted)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.