INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 4 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
PID Library
21.02.2016, 20:09
Beitrag #1
PID Library
Hallo Leute, habe folgendes Problem:

Möchte meinen Arduino für die Temperaturregelung eines Brutapparates verwenden.
Jetzt habe ich mir die PID Library heruntergeladen. Bei meinem Versuch die Temperatur so genau als möglich zu regeln scheiterte ich leider. Ich verwende ein SolidStateRelay. Beim aufheizen sehe ich, dass er immer weiter heizt auch wenn die Solltemperatur überschritten wurde (durch LED am Relay).
Solltemperatur 37,8°C --> abschaltung erfolgt meist erst bei 41 oder 42°C

Was mache ich falsch?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2016, 21:09
Beitrag #2
RE: PID Library
(21.02.2016 20:09)stekickenw schrieb:  Hallo Leute, habe folgendes Problem:

Möchte meinen Arduino für die Temperaturregelung eines Brutapparates verwenden.
Jetzt habe ich mir die PID Library heruntergeladen. Bei meinem Versuch die Temperatur so genau als möglich zu regeln scheiterte ich leider. Ich verwende ein SolidStateRelay. Beim aufheizen sehe ich, dass er immer weiter heizt auch wenn die Solltemperatur überschritten wurde (durch LED am Relay).
Solltemperatur 37,8°C --> abschaltung erfolgt meist erst bei 41 oder 42°C

Was mache ich falsch?

Wie sollen wir dir helfen, wenn wir deinen Sketch nicht kennen.
Poste den hier in Code-Tags, (Schaltfläche #)

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 06:44
Beitrag #3
RE: PID Library
Code:
#include <PID_v1.h>

#define PIN_INPUT 3
#define RELAY_PIN 2

//Define Variables we'll be connecting to
double Setpoint, Input, Output;

//Specify the links and initial tuning parameters
double Kp=2, Ki=5, Kd=1;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

int WindowSize = 5000;
unsigned long windowStartTime;

void setup()
{
  windowStartTime = millis();

  //initialize the variables we're linked to
  Setpoint = 202;

  //tell the PID to range between 0 and the full window size
  myPID.SetOutputLimits(0, WindowSize);

  //turn the PID on
  myPID.SetMode(AUTOMATIC);
}

void loop()
{
  Input = analogRead(PIN_INPUT);
  myPID.Compute();

  /************************************************
   * turn the output pin on/off based on pid output
   ************************************************/
  if (millis() - windowStartTime > WindowSize)
  { //time to shift the Relay Window
    windowStartTime += WindowSize;
  }
  if (Output > millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);
  else digitalWrite(RELAY_PIN, LOW);

}

Diesen Code hab ich übernommen von der Beispieldatei der PID Library.
Dieser Code hier ist noch ohne Temperaturausgabe, spielt aber keine Rolle, da der Temperatursensor die Umrechnung (580-Spannung)/10 hat.
Wobei ich diesen auch schon richtig kalibriert habe und auf einem Display ausgeben lasse. Normalerweise wird direkt über den ausgegebenen Wert geregelt, dadurch konnte ich auch sehen, dass über den Setpoint weitergeregelt wird.
Es kann also nur an den Einstellungen der PID Library liegen bzw. am Code der das Relay ansteuert.
(Bin noch sehr grün im Programmieren)[/code]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 10:13
Beitrag #4
RE: PID Library
Am Sketch selber kann ich keinen Fehler erkennen.
Auch das Ein bzw. Ausschalten des Relais sollte funktionieren. Hier musst du mal die einzelnen Werte in den if-Anweisungen debuggen, nur so ist zu erkennen, ob da ein Fehler vorliegt.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 12:47
Beitrag #5
RE: PID Library
(22.02.2016 06:44)stekickenw schrieb:  
Code:
....
void loop()
{
  Input = analogRead(PIN_INPUT);
  myPID.Compute();

  /************************************************
   * turn the output pin on/off based on pid output
   ************************************************/
  if (millis() - windowStartTime > WindowSize)
  { //time to shift the Relay Window
    windowStartTime += WindowSize;
  }
  if (Output > millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);
  else digitalWrite(RELAY_PIN, LOW);

}
....

Hi,
also mal grundsätzlich weiß ich was ein PID Regler ist...damit haben wir mal Autos auf dem Rollenprüfstand rumgejagt...Big Grin
Aber von dieser Library wäre es mal gut zu sehen wie die zu bespassen ist....Anleitung/Link wäre da hilfreich.

Aber was mich an dem Code schon mal voll irritiert ist das in der Zweiten if Abfrage der PID Out wert als Vergleichsparameter zur Zeit verwendet wird...soll das so PWM sein ?
Also ich kenne Digitale Regelsysteme so das z.B. alle 40mS ein Rechenzyklus abgearbeitet wird und da draus die Stellbefehle an die Zielhardware ergehen. Denn wenn du unterschiedlich lange Zykluszeiten hast dann hast du wohl ein Problem die Regelung über die PID Stellgrößen sauber abzugleichen.
Hier würde ich dir mal empfehlen die ganze Regelung auch eine feste Zykluszeit umzubauen und dann schauen das der Output - Wert mit dem Sollwert verglichen wird um das dann als Ansteuerung vom Relais zu verwenden.
Auch muß in dem Fall dem Regler der alte Temperatur - Wert irgendwie mitgegeben werden....daher auch die Frage nach der Beschreibung des Reglers.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2016 14:00 von stekickenw.)
Beitrag #6
RE: PID Library
Das ist der Link zur Library:
https://github.com/br3ttb/Arduino-PID-Library/

Hier ist auch das Beispiel für PID mit Relays zu finden.
Laut der Beschreibung soll es PWM simulieren, nur verstehe ich z.B. den Unterschied zwischen Output und RelayPin nicht...

Ich denke, dass das Zeitfenster einfach genutzt wird um zwischen 0 und 5000ms das Relay einzuschalten. Der Abfragezyklus wird vermutlich immer ausgeführt wenn der Loop fertig ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 14:09
Beitrag #7
RE: PID Library
(22.02.2016 13:48)stekickenw schrieb:  ...nur verstehe ich z.B. den Unterschied zwischen Output und RelayPin nicht...
Output ist eine Variable dessen Wert offensichtlich die "PID-Library" liefert.
Den Inhalt kannst du (wie oben schon beschrieben) dir anzeigen lassen.

RelayPin ist der Anschluss des Arduino, an dem du das Relais (mittels Transistor) anschließen kannst.

Bitte lies dir die Basics des Arduino durch. Grundlagen sind wichtig um solche Dinge zu verstehen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 14:18
Beitrag #8
RE: PID Library
(22.02.2016 14:09)hotsystems schrieb:  
(22.02.2016 13:48)stekickenw schrieb:  ...nur verstehe ich z.B. den Unterschied zwischen Output und RelayPin nicht...
Output ist eine Variable dessen Wert offensichtlich die "PID-Library" liefert.
Den Inhalt kannst du (wie oben schon beschrieben) dir anzeigen lassen.

RelayPin ist der Anschluss des Arduino, an dem du das Relais (mittels Transistor) anschließen kannst.

Bitte lies dir die Basics des Arduino durch. Grundlagen sind wichtig um solche Dinge zu verstehen.

Das mit dem RelayPin verstehe ich schon und wie man diesen anschließt, dachte nur weil es ja ein digitaler Ausgang ist, dass dieser ja nur High oder Low sein kann.
Dachte mir, dass Output möglicherweise das selbe ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Library "TFT_22_ILI9225.h" HaWe 7 1.354 16.12.2014 10:50
Letzter Beitrag: HaWe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste