Mostfun

Hier die versprochene Software als eigenes Kapitel.

Die Software ist hier herunterladbar: (Heizkoffer1_2_0.zip)

 

Um die Software in der IDE laufen lassen zu können benötigt man noch folgende externe Libraries:

  • OneWire.h
  • DallasTemperature.h
  • PID_v1.h
  • LiquidCyrstal.h

Um die Sucherei im Internet zu ersparen, und weil es verschiedene Versionen gibt, die nicht laufen und seltsame Fehlermeldungen produzieren, habe ich die Libraries hier noch einmal gezippt: (Libs4Heizkoffer.zip)

Das Programm stammt ursprünglich von Chris Barnes, der ein Sketch für eine Lüftersteuerung veröffentlicht hatte. Dieses Programm habe ich erweitert und modifiziert. Der Code steht damit unter der MIT-License.

Für alle die es Interessiert hier noch ein paar Anmerkungen zum Programm:

 

//Definitions...

Hier sind die Pinbelegungen hinterlegt, damit die Software "weiss" wo was dran hängt. Außerdem ist hier das obere Limit für die Temperatur hinterlegt.

Variablen:

volatile unsigned int encoder0Pos = 0;  //Encoder value for ISR ->Wert für den Encoder
volatile unsigned int HeaterOnOff = 1; //Heatfunction-switch 0=off, 1=on ->Schaltet die Heizung ab.
volatile unsigned char DisplayPage = 0; //Normal Display -> Sagt, was auf dem Display angezeigt werden soll
volatile float Energy = 0;//Energycounter-> das Ding erfasst den "Stromverbrauch"
volatile int EEATadress = 0; //Address for the EEProm EEATemperature->In diese EEProm-Speicherzelle wird die Wunschtemperatur geschrieben.

Der Anschluß des LCDs wird hiermit der Library kund getan:

LiquidCrystal lcd(12, 11, 13, 5,6,7);  //set up LCD Das sin

Der PID-Regler ist so parametriert: Kp=85, Ki=20, Kd=0.5

Was bedeutet das? Das bedeutet, dass je größer die Diskrepanz zwischen der Wunschtemperatur und der realen Temperatur (Ist-Wert) ist, der proportionale Anteil des Reglers richtig kräftig zulangt. In der Praxis bedeutet das, dass der Regler bis kurz vor erreichen der Wunschtemperatur "voll" heizt.

Der Ki-Anteil ist so bemessen, dass kleine Differenzen zwischen der eingestellten und der realen Temperatur schnell ausgeglichen werden - und zwar mit kleinstem Fehler.

Kd ist dazu da, schnell auf einen Temperaturabfall (offener Koffer) reagieren zu können - leider ist das die Komponente, die zum Schwingen neigt. Da der Koffer heizen und nicht schwingen soll, habe ich diese Komponente klein gewählt.