Es hat geklappt.
Dadurch, dass ich den Wärmetauscher umgebaut habe, erübrigt sich eine ausgiebige elektronische Steuerung.
Der Code funktioniert, aber benutzen kann ich ihn nicht.
Das K Modul schwimmt zu stark.
Das schein normal zu sein.
Einen PID REX 100FK02 hatte ich mir zum Testen bestellt.
Den habe ich nur an den Oszi gehängt.
Auch hier schwingt es zwischen LOW und HIGH nur so rum. Solange die Temperatur 2°C vor dem Schaltpunkt und 6° hinter dem Schaltpunkt liegt, schalte er sauber durch. Aber in diesem Bereich ist es eine Katastrophe. Merkwürdigerweise gibt es meinem Metrawatt Thermometer (TYP-K) sowas nicht.
Also warte ich, bis Pollin meinen Kram geschickt hat und baue das mit dem PT1000 auf.
Danke für Eure Anregungen und Tipps!
Achim
Code:#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const int numRows = 2; const int numCols = 16; #include "max6675.h" //Die MAX6675 Bibliothek const int max6675SO = 9; // Serial Output am PIN 8 const int max6675CS = 10; // Chip Select am PIN 9 const int max6675CLK = 13; // Serial Clock am PIN 10 // Initialisierung der MAX6675 Bibliothek mit // den Werten der PINs MAX6675 ktc(max6675CLK, max6675CS, max6675SO); const double x1 = A1; //Prog 105 Ausgänge über Transistor const double x2 = A2; //Prog 106 zum Umrichter const double x3 = A3; //Prog 108 const double x4 = A4; //Prog 112 const double x6 = 6; //Abgastemperatur const float Temp1 = 30;//über 150° const float Temp2 = 28;//145°-150° const float Temp3 = 26;//140°-145° const float Temp4 = 24;//unter 140° const long oneSecond = 1000; const long oneMinute = oneSecond * 60; void setup() { lcd.begin(numCols, numRows);//Start Serial.begin(9600); // Begin der Seriellen Kommunikation mit 9600 Baud delay(500); // eine kleine Pause damit der Sensor sich kalibriert pinMode(x1, OUTPUT); //Programm 105 Ausgang pinMode(x2, OUTPUT);//Programm 106 pinMode(x3, OUTPUT); pinMode(x4, OUTPUT);//Programm 108 pinMode(x6, OUTPUT);//FWD=Start } void loop() { lcd.setCursor(0, 0); //1. Reihe 1.Zeichen lcd.print("Abgastemperatur"); //Schreibt das Wort lcd.setCursor(10, 1); //2. Reihe lcd.print("Grad"); lcd.setCursor(2, 1); //2. Reihe 4.Zeichen lcd.print(ktc.readCelsius()); //Schreibt den Wert digitalWrite(x6, HIGH);//Startet den Umrichter // Lesen des Temperaturwertes in Grad Celsius double temperatur = ktc.readCelsius(); if (temperatur > Temp1) //über 155°C { digitalWrite(x1, HIGH);//Ist Programm 105 soll auf 40HZ } else { digitalWrite(x1, LOW); } if ((temperatur < Temp2) || (temperatur > Temp1)) //über 145°, aber //unter 150° { digitalWrite(x2, LOW);// Programm 106, ca 43 HZ } else { digitalWrite(x2, HIGH); } if ((temperatur < Temp3) || (temperatur > Temp2)) //über 140°, aber //unter 145° { digitalWrite(x3, LOW);// Programm 106, ca 46 HZ } else { digitalWrite(x3, HIGH); } if ((temperatur < Temp4) || (temperatur > Temp3)) //über 135°, aber //unter 140° { digitalWrite(x4, LOW);// Programm 106, ca 50 HZ } else { digitalWrite(x4, HIGH); } if (temperatur < Temp4) // unter 135° { digitalWrite(x4, HIGH);//Programm 108,weniger als 25HZ } else { digitalWrite(x4, LOW); } Serial.print(temperatur); Serial.println("C"); // 500ms Pause bis zum nächsten Durchlauf delay(1000); }







Zitieren

Lesezeichen