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
22.02.2016, 14:49 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2016 14:53 von hotsystems.)
Beitrag #9
RE: PID Library
(22.02.2016 14:18)stekickenw schrieb:  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.

Der digitale Ausgang für das Relais kann richtigerweise nur High oder LOW ausgeben. Je nach Beschaltung zieht das angeschlossene Relais oder eben nicht.

Output ist in diesem Fall eine Variable, die je nach Deklaration Werte (Zahlen oder Strings) enthalten kann. Hier ist die Variable als "double" deklariert.
Den Inhalt kannst du per SerialMonitor dir anzeigen lassen. Dann kommst du vermutlich auch darauf, wo der Fehler liegt.

Ich vermute, du hast eine Hysteresis eingebaut und diese nicht berücksichtigt. Diese ist wichtig, damit das Relais nicht um den Schaltpunkt herum flattert.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2016, 13:50 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2016 14:06 von dogger.)
Beitrag #10
RE: PID Library
Der KnackPunkt bei PID sind die drei Werte:
double Kp=2, Ki=5, Kd=1;
Diese Werte musst du einstellen je nachdem wie stark,verzögert oder schnell deine Regelung reagieren soll. Das ist Schaltungsabhängig und musst du selber ermitteln.
Und das habe ich so gemacht:Big Grin

Schau die das an: https://www.youtube.com/watch?v=x0TN9Nle_dk

Dann liest du etwas über die Arduino Plotter Funktion durch:
http://www.heise.de/make/meldung/Mit-ser...69365.html

Und dann plottest du einfach deine entscheiden Werte auf den Plotter-Monitor z.b.:
Serial.print(analogRead(PIN_INPUT) );
Serial.print(millis() - windowStartTime );
Serial.println(Output );
....
Mit ein bisschen rumspielen der drei PID Werte wirst du dann die richtige Einstellung finden.
PS: Habe Tage gebraucht biss ich diesen Weg gefunden habe.Angel

Zu deiner Schaltung:
Kannst du das restliche Programm bisschen genauer erklären ?
Schau dir mal das Thema an könnte interessant sein:
http://forum.arduino.cc/index.php?topic=180102.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2016, 14:13
Beitrag #11
RE: PID Library
Okay, werde ich versuchen und noch genauer berichten.
Aber sollte ein PID Regler nicht nach erreichen der Solltemperatur komplett abschalten?
Überschwinger entstehen durch die Trägheit des Systems bei falschen Parametern, das ist mir klar, aber mein Relay schaltet auch noch über der Solltemperatur. Ist das dann nicht eher ein Programmfehler?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2016, 20:33
Beitrag #12
RE: PID Library
Hallo stekickenw,
du verwendest einen PID-Regler und dann degradiert das Beispiel "PID_RelayOutput.ino" diesen quasi zu einem Zweipunkt Regler (P-Regler).
Damit kannst du nicht erwarten die Temperatur so regeln zu können wie du das gerne hättest.

Der richtige Ansatz wäre das Beispiel "PID_Basic.ino" zu verwenden. Aber die Zeile:
Code:
analogWrite(PIN_OUTPUT, Output);
passt nicht wirklich zu einem SolidStateRelay als Stellglied. Das kann man evtl. besser machen.

Gib mir bitte mal einen Link zum verwendeten SolidStateRelay (Datenblatt).
Sag mir welche Leistung die Heizung hat und wie groß der zu beheizende Raum in dem Brutapparat ist.
Falls der Brutapparat nicht selbst gebaut ist kann auch ein Link zu diesem helfen.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 07:16
Beitrag #13
RE: PID Library
SSR Link: http://www.amazon.de/250V-10A-SSR-10DA-H...ate+relais

Heizung ist angegeben mit 750 Watt: http://de.aliexpress.com/item/PTC-cerami...54d3cd7888

Als Brutapparat verwende ich einen defekten Weinkühler:
http://www.amazon.de/Bomann-KSW-344-Wein...ler+Bomann

Habe auch schon einen Zweipunkt Regler selbst programmiert, dieser hat auch ziemlich genau funktioniert... doch am nächsten Tag war es ein wenig Kälter im Raum, und meine Heizabstände waren zu lang, so dass die Solltemperatur nicht mehr erreicht werden konnte. (Schlechte Isolierung beim Heizelement auf der Hinterseite).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 10:16 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016 10:16 von dogger.)
Beitrag #14
RE: PID Library
Bekommst du dein PID – Regler oder den Plotter-Monitor jetzt ans laufen ?
Kannst ja mal ein Bild von dem Plotter-Monitor hochladen !
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 10:37
Beitrag #15
RE: PID Library
Hallo, bin leider noch nicht dazu gekommen, werde morgen wieder experimentieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 14:19 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016 14:20 von ardu_arne.)
Beitrag #16
RE: PID Library
Hallo und danke für die Infos.
So wie es aussieht hat das SSR keinen eingebauten Nulldurchgangsschalter. Das könnte im Betrieb zu unerwünschten Störungen im Stromnetz führen. Wenn das so ist kannst du die durch Einsatz eines SSR mit Nulldurchgangsschalter reduzieren.

Geregelt wird die Temperatur natürlich an der Stelle an der dein Temperaturfühler sitzt. Hast du einen Lüfter verbaut der die Luft etwas umwälzt und dadurch die Temperaturverteilung gleichmäßiger macht?

Ich habe dein Programm etwas umgebaut:
Code:
/********************************************************
* PID Basic Example
* Reading analog input 0 to control analog Schwingungspaketsteuerung output 2
********************************************************/
#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=1.01, Ki=0.444, Kd=0.0;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

void setup()
{
  //initialize the variables we're linked to
  Setpoint = 202;

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

void loop()
{
  Input = analogRead(PIN_INPUT);
  Input = Input/4;
  myPID.Compute();
  sps(Output);
}

void sps(double hz)
{
//https://de.wikipedia.org/wiki/Schwingungspaketsteuerung

  static unsigned long szl;
  static unsigned long szh;
  unsigned long lzl = 2550 - hz*10;
  unsigned long lzh = hz*10;

  if (!digitalRead(RELAY_PIN) && millis() - szl >= lzl ) {
    szh = millis();
    digitalWrite(RELAY_PIN, HIGH);
  }
  if (digitalRead(RELAY_PIN) && millis() - szh >= lzh ) {
   szl = millis();
   digitalWrite(RELAY_PIN, LOW);
  }
}
Schau mal wie es damit läuft.
Kp und Ki musst du evtl. anpassen um bessere Regelergebnisse zu erhalten. Kd würde ich auf 0 lassen, das brauchst du bei deiner Anwendung nicht wirklich. Ein reiner PI-Regler reicht völlig aus und ist schon schwer genug zu optimieren.

Die Ausgabe des Stellsignals vom Regler arbeitet mit diesem Programm als Schwingungspaketsteuerung. Was bei Wikipedia als Periodendauer beschrieben ist, habe ich im Programm mit 2550mS angesetzt. Das entspricht 255 Halbwellen á 10mS beim Netzwechselstrom. Weil der Regler einen Ausgangswert von 0 bis 255 liefert werden so innerhalb von 2,55 Sekunden 0 bis 255 Halbwellen durchgeschaltet. Das entspricht dann eine Heizleistung von 0 bis 100%.

Berichte mal über die Ergebnisse. Man kann im Programm noch an verschiedenen Stellen optimieren.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
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.358 16.12.2014 10:50
Letzter Beitrag: HaWe

Gehe zu:


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