Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

Alles zum Thema Brauanlagen-Selbstbau. Für Steuerung und Automatisierung bitte das Unterforum "Automatisierung" nehmen.
Antworten
chrs1978
Posting Junior
Posting Junior
Beiträge: 88
Registriert: Samstag 20. März 2021, 13:15

Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#1

Beitrag von chrs1978 »

Hallo zusammen,

ich bin hier schon fleissig am bauen und basteln. Die Steuerung funktioniert soweit. Sie ist recht universell ausgelegt um entweder 12V Relais oder SSRs anzusteuern. Ich schalte 12V über einen BC337 Transistor, der wiederum von den GPIOs des PIs geschalten wird. Das ganze habe ich 3x. Ein Ausgang ist fürs Rührwerk auch über ein 12V Relais. Es sind Relais aus einer defekten USV samt Z-Dioden.

Also Steuerung funktioniert vom PI aus.

Ich habe hier jetzt die Relais bis 16A und ein SSR 10A.

Jetzt die Frage zur Regelung. Ich wollte eigentlich eine PID Regelung realisieren. Hier wurde aber auch irgendwo geschrieben, dass man das gar nicht braucht und sogar schlecht für die Heizung meines Einkochers sein kann. Da ich 12V verwende, schalten SSRs jedenfalls sicher komplett durch.

Bei meinem Einkocher ist es leider so, dass man den nicht einfach vom Netz nehmen kann, der ist dann wieder aus und muss über die Tasten wieder eingeschaltet werden. Also werde ich egal ob PID oder Zweipunkt, die Heizung direkt anschliessen müssen und die Elektronik per Schalter wegschalten.
So kann die Elektronik nicht beschädigt werden, wenn die Spannung von der Heizung kommt und nicht andersrum. Der Pott hat ein Mosfet um die Heizung zu schalten und das möchte ich nicht unbedingt killen. Der Topf soll per Schalter auch mal zum Knödelkochen verwendbar sein....Ohne PI :-)

Als Software kommt CBPI3 (später 4) zum Einsatz.

Ich gehe mal davon aus, wenn die Temperatur mal um 2 Grad schwankt, dass dann das Bier nicht kaputt ist. Bier ist viel älter als alle Regelungen zusammen und vor 500 Jahren hatte man nur den Finger um die Temperatur zu checken :-)

Was kann man so empfehlen ? PID mit SSR oder doch lieber einfaches Bang-Bang mit normalem Relais und Hysterse ?
Benutzeravatar
jbrand
Posting Senior
Posting Senior
Beiträge: 423
Registriert: Dienstag 13. August 2019, 08:32
Wohnort: Ludwigsau

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#2

Beitrag von jbrand »

Ich habe einige Male versucht, meinen Einkocher mit 2 Punkt - Regelung in den Griff zu bekommen, es war aussichtslos. Überschwingungen von mehr als 3 Grad waren an der Tagesordnung. Und das macht dann schon etwas aus, insbesondere weil die Abkühlung der überhöhten Temperatur teilweise länger dauerte als die Rast. Ich habe dann das PID Plug-in für Craftbeerpi ausprobiert, und nachdem ich die passenden Parameter gefunden hatte, beschränken sich die Überschwinger jetzt auf 0,5 Grad, damit kann ich sehr gut leben.

Ich kann daher nur eine PID Regelung empfehlen. Da mein Einkocher schon sehr alt ist, und außer einem analogen Thermostat keine Elektronik enthält, brauche ich darauf natürlich keine Rücksicht zu nehmen.
Viele Grüße

Jens
DonPaulus
Posting Junior
Posting Junior
Beiträge: 14
Registriert: Donnerstag 21. Januar 2021, 21:18
Wohnort: Umgebung Rostock

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#3

Beitrag von DonPaulus »

Moin moin,
ich verwende einen Bielmeier Einkocher. Für die Automatisierung verwende ich einen DS18B20 Sensor in einer Edelstahltauchsonde, den ich an einen ESP32 Controller(RasPi geht auch) angeschlossen habe. Als Relais habe ich nur SSDs ich glaube mit 25A, die ich direkt mit den 3,3V aus dem Controller ansteuere. Die Relais habe ich direkt mit Einbausteckdosen verbunden.

Ich habe auch lange überlegt wie ich die Temperatursteuerung ausführe. Ich habe mich gegen die PID Steuerung entschieden, da ich das Finden der PID konstanten zu aufwendig empfinde.
Ich habe es jetzt so gelöst, dass ich einen Temperaturgradienten K/min ermittele und den mit einem konstanten Dämpfungsfaktor multipliziere.

Beispiel: in der Aufheizphase des Einkochers hast du ungefähr einen Gradienten von 1K/min * k-Faktor (bei mir 1,5), d.h. er schaltet 1,5 K vor Zieltemperatur ab. So konnte ich das Überschwingen auf +1K begrenzen.

Wenn du Fragen zur Umsetzung bzw. Programmierung hast, bin ich dir gerne behilflich.

https://hobbybrauer.de/forum/viewtopic. ... ng#p267771
dieser Eintrag war meine Ausgangsbasis und so ähnlich sieht auch mein Kasten aus, nur das ich nur einen kleiner Display zum Ablesen habe und die Steuerung über einen gehosteten Webserver läuft

Beste Grüße
Paul
Benutzeravatar
hiasl
Posting Freak
Posting Freak
Beiträge: 1943
Registriert: Samstag 9. Juni 2007, 12:03
Wohnort: Kulmbach
Kontaktdaten:

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#4

Beitrag von hiasl »

Ich verwende eine Regelung mit festen Tastverhältnissen bei meinem Einkocher. Überschwinger habe ich i.d.R. < 1 K und quasi keine Unterschwinger.
Sieht aktuell so aus, dass der Einkocher pauschal 2 K unter Soll-Temperatur in ein Tastverhältnis wechselt, welches in Abhängigkeit der Soll-Temperatur eingestellt ist. Kann man noch ein bissl feiner tunen...
Ich habe nach dem Einmaischen weniger als 2 K Differenz zum Soll der ersten Rast gehabt und deswegen manuell übersteuert. Leider war ich dann abgelenkt und habe zu spät wieder auf die Automatik gewechselt. Daher ist hier der Überschwinger etwas größer gewesen.
Diagramm.jpg
Mein Code stammt ursprünglich vom PIDBoil Plugin. Musste erst mal lernen, wie diese CBPi Plugins funktionieren. Ich habe ihn - wenn auch nicht korrekt - als PWMBoil bezeichnet. Ist ja aber auch wurscht.

Code: Alles auswählen

import logging
import time

from modules import cbpi
from modules.core.controller import KettleController
from modules.core.props import Property

@cbpi.controller
class PWMBoil(KettleController):
    
    d_max_out = Property.Number("max. output %", True, 100, description="Power which is set above boil threshold")
    e_boil = Property.Number("Boil Threshold", True, 80, description="Temperatre for Boil threshold. Full power mode!")
    heat_off = Property.Number("Heizung aus unter Ziel in K", True, 2, description="
    Intervall = Property.Number("Zeitintervall Puls in s", True, 10, description="Zeitintervall eines Pulsdurchgangs")
    Grad60 = Property.Number("Pulsweite bis 60 Grad", True, 33, description="Anteil Heizzeit am Puls")
    Grad70 = Property.Number("Pulsweite bis 70 Grad", True, 44, description="Anteil Heizzeit am Puls-Intervall")
    Grad80 = Property.Number("Pulsweite bis 80 Grad", True, 50, description="Anteil Heizzeit am Puls-Intervall")

    def stop(self):
        '''
        Invoked when the automatic is stopped.
        Normally you switch off the actors and clean up everything
        :return: None
        '''
        super(KettleController, self).stop()
        self.heater_off()


    def run(self):

        sampleTime = self.Intervall
        wait_time = 10
        maxout = float(self.d_max_out)

        while self.is_running():
			
			temp_dif = float(self.get_target_temp() - self.get_temp())
			
			if self.get_target_temp() >= float(self.e_boil):
				self.heater_on(100)
				self.sleep(1)
			elif float(temp_dif) > 2:
				self.heater_on(100)
				self.sleep(1)
			elif float(temp_dif) <= 0:
				self.heater_off()
				self.sleep(1)
			else:
				if float(self.get_target_temp()) <= 60:
					heat_percent = float(self.Grad60)
				elif float(self.get_target_temp()) > 60 and float(self.get_target_temp()) <= 70:
					heat_percent = float(self.Grad70)
				elif float(self.get_target_temp()) > 70 and float(self.get_target_temp()) < 80:
					heat_percent = float(self.Grad80)
				heating_time = sampleTime * heat_percent / 100
				wait_time = sampleTime - heating_time
				self.heater_on(100)
				self.sleep(heating_time)
				self.heater_off()
				self.sleep(wait_time)
Gruß
Matthias
-----------------------------------------------------------------------------------------
Mehr vom Bier wissen, heißt: Mehr vom Bier haben!
DonPaulus
Posting Junior
Posting Junior
Beiträge: 14
Registriert: Donnerstag 21. Januar 2021, 21:18
Wohnort: Umgebung Rostock

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#5

Beitrag von DonPaulus »

hiasl hat geschrieben: Donnerstag 15. April 2021, 10:10 Ich verwende eine Regelung mit festen Tastverhältnissen bei meinem Einkocher. Überschwinger habe ich i.d.R. < 1 K und quasi keine Unterschwinger.
Sieht aktuell so aus, dass der Einkocher pauschal 2 K unter Soll-Temperatur in ein Tastverhältnis wechselt, welches in Abhängigkeit der Soll-Temperatur eingestellt ist. Kann man noch ein bissl feiner tunen...
Ich habe nach dem Einmaischen weniger als 2 K Differenz zum Soll der ersten Rast gehabt und deswegen manuell übersteuert. Leider war ich dann abgelenkt und habe zu spät wieder auf die Automatik gewechselt. Daher ist hier der Überschwinger etwas größer gewesen.

Diagramm.jpg

Mein Code stammt ursprünglich vom PIDBoil Plugin. Musste erst mal lernen, wie diese CBPi Plugins funktionieren. Ich habe ihn - wenn auch nicht korrekt - als PWMBoil bezeichnet. Ist ja aber auch wurscht.

Code: Alles auswählen

import logging
import time

from modules import cbpi
from modules.core.controller import KettleController
from modules.core.props import Property

@cbpi.controller
class PWMBoil(KettleController):
    
    d_max_out = Property.Number("max. output %", True, 100, description="Power which is set above boil threshold")
    e_boil = Property.Number("Boil Threshold", True, 80, description="Temperatre for Boil threshold. Full power mode!")
    heat_off = Property.Number("Heizung aus unter Ziel in K", True, 2, description="
    Intervall = Property.Number("Zeitintervall Puls in s", True, 10, description="Zeitintervall eines Pulsdurchgangs")
    Grad60 = Property.Number("Pulsweite bis 60 Grad", True, 33, description="Anteil Heizzeit am Puls")
    Grad70 = Property.Number("Pulsweite bis 70 Grad", True, 44, description="Anteil Heizzeit am Puls-Intervall")
    Grad80 = Property.Number("Pulsweite bis 80 Grad", True, 50, description="Anteil Heizzeit am Puls-Intervall")

    def stop(self):
        '''
        Invoked when the automatic is stopped.
        Normally you switch off the actors and clean up everything
        :return: None
        '''
        super(KettleController, self).stop()
        self.heater_off()


    def run(self):

        sampleTime = self.Intervall
        wait_time = 10
        maxout = float(self.d_max_out)

        while self.is_running():
			
			temp_dif = float(self.get_target_temp() - self.get_temp())
			
			if self.get_target_temp() >= float(self.e_boil):
				self.heater_on(100)
				self.sleep(1)
			elif float(temp_dif) > 2:
				self.heater_on(100)
				self.sleep(1)
			elif float(temp_dif) <= 0:
				self.heater_off()
				self.sleep(1)
			else:
				if float(self.get_target_temp()) <= 60:
					heat_percent = float(self.Grad60)
				elif float(self.get_target_temp()) > 60 and float(self.get_target_temp()) <= 70:
					heat_percent = float(self.Grad70)
				elif float(self.get_target_temp()) > 70 and float(self.get_target_temp()) < 80:
					heat_percent = float(self.Grad80)
				heating_time = sampleTime * heat_percent / 100
				wait_time = sampleTime - heating_time
				self.heater_on(100)
				self.sleep(heating_time)
				self.heater_off()
				self.sleep(wait_time)

Gute Idee,
Ich sehe nur den Nachteil im ständigen an und aus pulsen des Einkochers.
Der Code pulst doch je nach Temperatur für so und so Prozent Anteil des Zeitintervalls den Einkocher an oder? :puzz
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#6

Beitrag von JackFrost »

Die Zeitkonstanten von einem Einkocher sind so lange das eine Wellenpaketsteuerung mit 0,1 Hz vollkommen ausreicht de sauber zu regeln. Bei 0,1 Hz kann man theoretisch die Leitung auf 0,1% genau einstellen, da das genau eine Halbwelle ist

Phaseanschnitt ist nach TAB in der Leitungsklasse verboten und ohne Sync zum Netz eh scheisse.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
chrs1978
Posting Junior
Posting Junior
Beiträge: 88
Registriert: Samstag 20. März 2021, 13:15

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#7

Beitrag von chrs1978 »

Ich hätte hier sogar einen Thyristorsteller rumliegen, der aus einer Industriesteuerung stammt. Aber ich habe den eigentlich auch gar nicht in Erwägung gezogen, weil ich mir ungern noch zusätzlich Gedanken über die Kompensation machen möchte. Das würde den Rahmen für den Betriebs eines Einkochers wirklich sprengen.

Das SSR, welches ich hier habe, ist glücklicherweise kein Amazon Chinesen Müll. Es ist Nulldurchgangsschaltend. Damit kann man auf jeden Fall eine PID Regelung aufbauen. Also "unser" PID was im CBPI vorhanden ist und das ist im Endeffekt kein PID sondern eine Wellenpaketsteuerung. Weil stetig ist da nix. Es ist eher ein schnelleres Bang_Bang.

Ob das PID im 3D Drucker mit Ramps ein echtes PID ist, weiß ich jetzt nicht. Aber ich glaube auch, dass es einfach ein schnelles Ein / Aus ist. Die Regelung ist dort natürlich viel einfacher, weil sich die Parameter nicht ändern. Also keine geänderte Füllmenge und die Umgebungstemperatur ist beim isolierten Hotend auf die kleine Fläche auch egal.
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#8

Beitrag von JackFrost »

PID hat nichts mit einem Steuerglied zu tun. Ein PID Regler ermittelt den Stellgrad über die drei Arten. Ob das Schaltglied dann ein Relais oder SSR oder etwas stetigähnlich ist ist egal.

Der Stellgrad zusammen mit der Zykluszeit gibt den Tastgrad und das kann von einem P oder PI oder PD oder PID ermittelt worden sein.

Auch eine Wellenpaket mit 60s Zykluszeit kann von einem PID ermittelt werden und 50% Stellgrad sind dann halt 30/30. Ist aber alles in einem PID

Es gibt für Heizungen ( ohmsche Last) kein stetiges Glied es ist alles nur „eine“ PWM. Selbst Phansenanschnitt ist nur eine PWM mit 10 ms Zykluszeit.

Man muss nur vom Thermostat unterscheiden das nur 2 Schaltpunkte hat und keine Parameter hat. Und hier ist die Schwingung weil absichtlich drüber geheizt wird.

Selbst ein FU arbeite mit PWM und nur über die Spule vom Motor kommt der Sinus raus.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
Benutzeravatar
hiasl
Posting Freak
Posting Freak
Beiträge: 1943
Registriert: Samstag 9. Juni 2007, 12:03
Wohnort: Kulmbach
Kontaktdaten:

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#9

Beitrag von hiasl »

DonPaulus hat geschrieben: Donnerstag 15. April 2021, 11:01 Gute Idee,
Ich sehe nur den Nachteil im ständigen an und aus pulsen des Einkochers.
Der Code pulst doch je nach Temperatur für so und so Prozent Anteil des Zeitintervalls den Einkocher an oder? :puzz
Ich pulse ein Intervall von 10 Sekunden. 50 % Tastverhältnis bedeutet, dass 5 Sekunden an und 5 Sekunden aus sind. Der Einkocher ist so träge - daher auch die riesigen Überschwinger -, dass das zur Regelung völlig ausreicht. Da braucht man keine 0,1 Hz genaue Regelung :Wink
Ich hatte mit dem PID das Problem, dass ich die Überschwinger überhaupt nicht in den Griff bekommen habe. Die Regelung danach war allerdings top! Allerdings verwende ich zum Schalten auch ein Relais, da waren mir die Schaltzyklen des PID etwas zu schnell. Daher habe ich meine eigene Regelung entworfen.
Gruß
Matthias
-----------------------------------------------------------------------------------------
Mehr vom Bier wissen, heißt: Mehr vom Bier haben!
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#10

Beitrag von JackFrost »

0,1Hz sind 10 Sekunden Zykluszeit :Smile

Wenn mit dem PID starke Überschwinger sind muss man die Parameter anpassen. Zusammen mit dem Stellgrad kann man meist die Parameter gut anpassen.

Immer nur einen Parameter anpassen. Periodische Schwingung um den Sollwert ist meist in zu starker I. Je nach PID muss man den Wert anheben ( Standard der Industrie ) oder absenken ( ArduinoPID) um ihn schwächer zu haben. Ruhig den Wert halbieren und wieder den Verlauf anschauen.

Ich hab die Werte für meine Steuerung so empirisch ermittelt. Normale Hauptgussmenge und 50% der üblichen Schüttung als Wasser.

Zur Not mal einen Verlauf poste dann kann man schauen was man tun kann.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
chrs1978
Posting Junior
Posting Junior
Beiträge: 88
Registriert: Samstag 20. März 2021, 13:15

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#11

Beitrag von chrs1978 »

@JackFrost, welche Steurung verwendest Du ? CBPI3 mit PIDBoil. Vorher mit PIDAutotune die Werte ermitteln ? Das ganze an einem GPIOSimple, weil GPIO PWM irgendwie gar nicht funktioniert. Das geht einmal gut und beim nächsten Einschalten flacket das SSR ganz willkürlich ohne irgendeine Taktung.
Benutzeravatar
hiasl
Posting Freak
Posting Freak
Beiträge: 1943
Registriert: Samstag 9. Juni 2007, 12:03
Wohnort: Kulmbach
Kontaktdaten:

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#12

Beitrag von hiasl »

JackFrost hat geschrieben: Donnerstag 15. April 2021, 13:47 0,1Hz sind 10 Sekunden Zykluszeit :Smile

Wenn mit dem PID starke Überschwinger sind muss man die Parameter anpassen. Zusammen mit dem Stellgrad kann man meist die Parameter gut anpassen.

Immer nur einen Parameter anpassen. Periodische Schwingung um den Sollwert ist meist in zu starker I. Je nach PID muss man den Wert anheben ( Standard der Industrie ) oder absenken ( ArduinoPID) um ihn schwächer zu haben. Ruhig den Wert halbieren und wieder den Verlauf anschauen.

Ich hab die Werte für meine Steuerung so empirisch ermittelt. Normale Hauptgussmenge und 50% der üblichen Schüttung als Wasser.

Zur Not mal einen Verlauf poste dann kann man schauen was man tun kann.

Gruß JackFrost
:Ahh Klar. Mein Fehler! Da hatte ich jetzt irgendwie so was wie 0,1 s im Kopf. :puzz
Mir fehlt leider das exakte technische Verständnis eines PID. Daher habe ich immer nur das Autotune genutzt. Wie schon gesagt, der PID hat gut funktioniert, nur nicht in den Aufheizphasen. Zudem habe ich zum Schalten des SSR ein Relais im Einsatz (weil eh vorhanden), da hat mir der PID immer zu viele Schaltvorgänge gemacht. Danke aber für dein Angebot. Nutzt du einen Einkocher?
Gruß
Matthias
-----------------------------------------------------------------------------------------
Mehr vom Bier wissen, heißt: Mehr vom Bier haben!
Benutzeravatar
hiasl
Posting Freak
Posting Freak
Beiträge: 1943
Registriert: Samstag 9. Juni 2007, 12:03
Wohnort: Kulmbach
Kontaktdaten:

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#13

Beitrag von hiasl »

chrs1978 hat geschrieben: Donnerstag 15. April 2021, 14:14 Das ganze an einem GPIOSimple, weil GPIO PWM irgendwie gar nicht funktioniert. Das geht einmal gut und beim nächsten Einschalten flacket das SSR ganz willkürlich ohne irgendeine Taktung.
GPIOSimple ist ja auch korrekt. PIDBoil schaltet an oder aus. Die zeitlichen Abstände (also an und aus) eines Zyklusdurchgangs werden vom PID berechnet.
Gruß
Matthias
-----------------------------------------------------------------------------------------
Mehr vom Bier wissen, heißt: Mehr vom Bier haben!
chrs1978
Posting Junior
Posting Junior
Beiträge: 88
Registriert: Samstag 20. März 2021, 13:15

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#14

Beitrag von chrs1978 »

Gerade mit SSR und PID getestet. Hab es aber wieder abgebrochen, weil das SSR echt gut warm wird.Selbst mit Kühlkörper.
Werde es erstmal mit Zweipunkt Regler und Hysterese am Relais probieren. 0,8 OFF und 0,9 ON laufen gerade.
Das Relais kann man besser verbauen und ich muss es nicht kühlen. Wenn der Pott dann noch eine Isomatte bekommt, hat das Relais wohl gar nicht soviel zu tun.

Ich denke mal, wenn ich die Maischtemperatur auf +-1 Grad erwische, dann wird es auch schmecken. Wie schon gesagt, Bier ist älter als jegliche Elektronik :-D
JackFrost
Posting Freak
Posting Freak
Beiträge: 2983
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#15

Beitrag von JackFrost »

hiasl hat geschrieben: Donnerstag 15. April 2021, 14:21
:Ahh Klar. Mein Fehler! Da hatte ich jetzt irgendwie so was wie 0,1 s im Kopf. :puzz
Mir fehlt leider das exakte technische Verständnis eines PID. Daher habe ich immer nur das Autotune genutzt. Wie schon gesagt, der PID hat gut funktioniert, nur nicht in den Aufheizphasen. Zudem habe ich zum Schalten des SSR ein Relais im Einsatz (weil eh vorhanden), da hat mir der PID immer zu viele Schaltvorgänge gemacht. Danke aber für dein Angebot. Nutzt du einen Einkocher?
Ich selber hab keinen Einkocher mehr, ich wollte meinen Weck automatisieren, aber die Heizspirale hatte in der Garantie einen Erdschluss und ich hab mir dann eine IDS2 gekauft. Ich braue aber immer noch in der 20l Klasse

Eine Induktonsplatte mit Topf (20 l Klasse) ist vergleichbar mit einem Einkocher, beide haben eine ähnliche thermische Masse.
Zum heizen braucht man einen hohen Stellgrad, damit man schnell auf die Zieltemperatur kommt und dann einen kleinen Stellgrad um die Temperatur zu halten, da hier nur der Verlust ausgeglichen werden muss. Damit braucht der Regler einen großes P und ein kleines I. Ich hab bei meiner Steuerung den D so klein das dieser nicht wirkt. Ich nutze also nur eine PI Regler.


Schauen wir uns die beiden Parameter mal näher an :

Regelabweichung : Differenz von Soll- und Istwert
Stellgrad : Ausgangsleistung (Mittelwert bei PWM )

P-Regler :

Die Regelabweichung wird mit dem Verstärkung Kp multipliziert und ergibt damit den Stellgrad.
Beispiel :

Sollwert : 64 °C
Istwert : 60 °C
Regelabweichung 4 K
Kp : 10

ergibt einen Stellgrad von 40 %. Das Stellglied gibt also 40 % Energie auf die Heizung.
Bei 0 K Regelabweichung ist der Stellgrad 0%, daher hat ein reiner P immer eine Regelabweichung.

I-Regler :

Der Stellgrad wird so lange erhöht bis der Istwert den Sollwert erreicht hat. Wenn der Istwert größer als er Sollwert ist wird so lange Stellgrad abgebaut bis der Istwert den Sollwert erreicht hat. Der Regler verändert den Stellgrad um die Regelabweichung innerhalb der Nachstellzeit Tn.

Beispiel :

Sollwert : 64 °C
Istwert : 60 °C
Regelabweichung 4 K
Tn : 100 s
Summierter I-Stellgrad (Zeitpunkt t0) : 10 %

Nach 100 s ( t0 + Tn ) hat der Stellgrad 14 %. Jede Sekunde wird der Stellgrad um 0,04% erhöht. Nach 200 s wäre der Stellgrad bei 18 % , wenn die Regelabweichung bei 4 k bleiben würde. Mit jedem Durchlauf vom PID wird die Regelabweichung neu berechnet und auch die Steigung. Daher nimmt das zum Ende hin ab und der Regler kann die Temperatur halten, braucht aber sehr lange.

Mit steigendem Tn braucht der Regler länger um den Stellgrad aufzubauen -> I wird schwächer. Der ArduinoPID, welcher vermutlich auch bei CBPi drinnen ist arbeitet anders. Steigender Wert ist ein stärkeres I.
Der I-Regler erreicht seinen Sollwert , ist aber deutlich langsamer als der P Regler.

Der D-Anteil schaut im Gegensatz zu den anderen nicht auf die Regelabweichung sondern auf die Änderung des Istwertes und wirkt dem entgegen.
Steigt der Istwert bremst der D fällt der Istwert erhöht der D den Stellgrad. Das aber immer nur wenn eine Veränderung stattfindet.


PI-Regler:

Hier wird der P mit dem I vereint. Mit dem P wird schneller an den Soll geregelt und der I regelt dann die Regelabweichung vom P aus.

Grob aus dem Bauchraus würde ich sagen wenn der Einkocher 2 K überheizt würde ich den P auf 25 stellen. Damit wird bis 4K an den Sollwert mit 100 % geheizt und dann dynamisch langsamer geheizt. Der I muss langsam sein als Tn würde ich für den ersten Test 150s nehmen. Beim CBPI muss man mit kleinen Werten anfangen, da ich hier die Mathematik nicht kenne ist das schwer die 150s in einen Wert dafür umzurechnen.

Dann mit der normalen Hauptgussmenge und 50 % der normalen Schüttung als Wasser auf 64 °C aufheizen und sich den Verlauf anschauen. Wenn er überheizt dann ist der P zu groß, kann dann gut auf 20 reduziert werden. Hier mach ich meistens auch große Schritte. Wenn er vor dem Ziel langsamer wird ist meist der I zu schwach. Da nehm ich oft den doppelten oder halben Wert und taste mich dann ran.
Wenn ich Werte gefunden habe die gut passen, gehe ich auf die nächsten beiden Temperaturen und schau mir die Werte an. Wenn es passt, dann nochmal von vorne um das anheizen zu testen.

Sonst einfach mal melden mit ein paar verschiedenen Verläufen, so das man die Werte besser abschätzen kann.
chrs1978 hat geschrieben: Donnerstag 15. April 2021, 18:47 Gerade mit SSR und PID getestet. Hab es aber wieder abgebrochen, weil das SSR echt gut warm wird.Selbst mit Kühlkörper.
Werde es erstmal mit Zweipunkt Regler und Hysterese am Relais probieren. 0,8 OFF und 0,9 ON laufen gerade.
Das Relais kann man besser verbauen und ich muss es nicht kühlen. Wenn der Pott dann noch eine Isomatte bekommt, hat das Relais wohl gar nicht soviel zu tun.

Ich denke mal, wenn ich die Maischtemperatur auf +-1 Grad erwische, dann wird es auch schmecken. Wie schon gesagt, Bier ist älter als jegliche Elektronik :-D
Die Triacs in den SSRs haben einen Spannungeverlust von 1,5 - 2 V. Bei den ~8,7A bei 2kW sind das dann 17W die abgeführt werden wollen. Mit einer 20W Halogenbirne und einen Temperaturfühler im Gehäuse kann man schnell prüfen wie warm es drinnen wird. Bei höheren Temperaturen dürfen die SSRs dann nicht mehr voll belastet werden, da sie sonst zu heiss werten und durchlegieren. Das ist leider der Nachteil der SSRs.

Relais und Schütze sollten eine Zykluszeit von 20s oder höher haben, damit sie nicht zu schnell mechanisch ausfallen.
chrs1978 hat geschrieben: Donnerstag 15. April 2021, 14:14 @JackFrost, welche Steurung verwendest Du ? CBPI3 mit PIDBoil. Vorher mit PIDAutotune die Werte ermitteln ? Das ganze an einem GPIOSimple, weil GPIO PWM irgendwie gar nicht funktioniert. Das geht einmal gut und beim nächsten Einschalten flacket das SSR ganz willkürlich ohne irgendeine Taktung.
Ich hab mir eine eigene Steuerung gebaut und auch den PID selber geschrieben. Die IDS2 hat 5 Leistungsstufen und zwischen denen schalte ich hin und her. Ein Zyklus ist hier 5 Minuten. Damit ist jede % Stufe mindestens 15s lang und die Platte kann die Leistung wirklich umsetzen. 50% Leistung sind also 2:30 60 % und 2:30 40 %, bezogen auf 3,3 kW. Beim Temperaturhalten bin ich so bei 450 - 600 W im Mittel und kann damit die Temperatur auf +/- 0,3 K halten. Bei einem Stellgrad unter 10% wird nicht geheizt. Wenn ich also 10 % Stellgrad hab wird 2:30 mit 900 W geheizt und 2:30 nicht geheizt. Und selbst damit schaffe ich diese Stabilität.

Gruß JackFrost
Meine Hardware:
eManometer
IDS2 ohne CBPi
Magnetrührer
Ss-Brewtech 10 Gal Topf
IDS2 Induktionsplatte
train1811
Posting Klettermax
Posting Klettermax
Beiträge: 255
Registriert: Sonntag 8. Mai 2016, 14:06

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#16

Beitrag von train1811 »

Ich selber hatte meinen Einkocher jahrelang mit dem CBPi2 und der Overshoot Logik betrieben. Das hat hervorragend funktioniert
Hansi137
Posting Junior
Posting Junior
Beiträge: 13
Registriert: Sonntag 17. Januar 2016, 20:16

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#17

Beitrag von Hansi137 »

train1811 hat geschrieben: Freitag 16. April 2021, 08:37 Ich selber hatte meinen Einkocher jahrelang mit dem CBPi2 und der Overshoot Logik betrieben. Das hat hervorragend funktioniert
Gibt's die Overshoot Logik nichtmehr bzw. lässt sich diese nicht in CBPI4 auch wieder irgendwie integrieren?
Benutzeravatar
hiasl
Posting Freak
Posting Freak
Beiträge: 1943
Registriert: Samstag 9. Juni 2007, 12:03
Wohnort: Kulmbach
Kontaktdaten:

Re: Einkocher regeln - PID, Zweipunkt - Bang_Bang - was jetzt ? :-)

#18

Beitrag von hiasl »

Hansi137 hat geschrieben: Donnerstag 17. März 2022, 09:52
train1811 hat geschrieben: Freitag 16. April 2021, 08:37 Ich selber hatte meinen Einkocher jahrelang mit dem CBPi2 und der Overshoot Logik betrieben. Das hat hervorragend funktioniert
Gibt's die Overshoot Logik nichtmehr bzw. lässt sich diese nicht in CBPI4 auch wieder irgendwie integrieren?
Overshoot hat halt den Nachteil, dass er relativ starr ist. Das Erreichen der Endtemperatur hängt vom ΔT zur Umgebungstemperatur ab. Das wird mit steigender Maischetemperatur halt größer. Daher ist der Overshoot bei 45 °C z.B. größer (die Nachheizenergie reicht länger), weil der Wäremverlust des Kessels kleiner ist. Bei 78 °C ist er deutlich kleiner, da der Wärmeverlust des Kessels größer ist und ein größerer Anteil der Nachwärme diesen kompensieren muss. Da die Overshoot Logik ja analog zu einer Art Hysterese funktioniert, sollte es einfach sein, diese von CBPi3 nach 4 zu portieren (auch ohne erweiterte Programmierkenntnisse). Die Module sind ja alle auf Github einsehbar.
Gruß
Matthias
-----------------------------------------------------------------------------------------
Mehr vom Bier wissen, heißt: Mehr vom Bier haben!
Antworten