CO2 Gassensor Testen

Fertige Geräte mit Bilden, Schaltungen, Programmen vorstellen.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

CO2 Gassensor Testen

Beitrag von Admin »

Hallo Gemeinde.
Ich muss ein bischen ausholen und zu erklären worum es mir geht. Ich brauche es eigentlich immer sehr warm. Das heißt 23-25 Grad muss mein Zimmer haben. Ich weiß, man soll nicht in so warmen Räumen schlafen. Ich würde GERNE mit jedem tauschen der bei 20 Grad oder weniger schlafen kann. Aber ich habe auch bei 25 Grad mir DREI Lagen Stoff als Schlafkleidung noch extreme Kälteschmerzen. Also bitte nur Antworten zur Frage.

Ich möchte ein Kippfenster, dass sich neben dem Bett befindet, automatisch öffnen, um so oft wie möglich / nötig, wieder mal in der Nacht frische Luft herein zu lassen. Ich möchte dafür die vorhandene Luft auf Verbrauch von Sauerstoff und andere wichtige Punkte testen. um nur dann, wenn nötig, das Kippfenster zu öffnen, und nur so lange wie nötig. Kalte Luft geht nach unten, das heißt, die Luft die dann rein kommt geht zügig nach unten, dort befindet sich mein Schlafapnoe - Atemluft Gerät, dass mich mit etwas Druck über einen Schlauch und eine Maske mit normaler Luft versorgt. Dieses Gerät bekommt ziehmlich zügig nach dem öffnen des Kippfensters, diese rel. frische / kalte Luft und saugt dann auch diese Luft ein.

Also, ich möchte Aussentemperatur / Innentemperatur / Und alles was es zur Bestimmung gesunder Luftversorgung braucht an einen Arduino anschließen, und nur die dazu möglichst sinnvolle Öffnung des Fensters zu steuern. Also ich muss innen am Bett mindestens mehr als 22 Grad einhalten. Das Gerät zur Versorgung der Atemmaske ist direkt an der Wand unter dem Fenster. Bekommt als garantiert als erstes diese "frische Luft" vom Fenster. Die Bodenheizung bringt die Raumtemperatur dann wieder auf 23-24 Grad wenn das Fenster schließt, weil es am Bett zu kalt wird.

Der Winter kommt, und ich habe jetzt schon jede Nacht meinen Kampf mit Luft ja, Kälte nein. Da verbringe ich dann viel Zeit in der Nacht damit, warm eingepackt am Balkon zu sitzen und wieder frische Luft zu tanken. Und nein, es funktioniert nicht, mich immer noch mehr zuzudecken und weniger zu heizen. Das habe ich alles schon durch. Und warum komme ich jetzt erst mit dem Problem? Weil es von Jahr zu Jahr schlimmer wird.

Ich hoffe, ich konnte verständlich rüberbringen worum es geht.

Ich habe mir dafür diesen Sensor bestellt.
Ich bin am Donnerstag wieder aus der Klinik zurück, dann mache ich erste Gehversuche mit diesem Ding. Leider habe ich schon in einem anderen Forum was gelesen, dass diese CO2 Sensor nicht soooo erfolgversprechend sind. Ich bin gespannt und hoffe das der, den ich bestellt habe, bessere Ergebnisse bringt. :O:
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gas - Sensor Testen

Beitrag von Admin »

Hier habe ich mal ein Programm zum Testen gefunden. Damit werde ich es mal probieren. Das ist wohl die Version, die PWM Daten ausgibt. Ob es funktioniert wird sich am Donnerstag zeigen :(o): Ich habe mir das Programm von hier geholt, und die Anzeige bischen angepasst.

Hier das Programm:

Code: Alles auswählen

// Arduino CO2 Sensor - MH-Z19 Beispiel und Sketch
// https://iotspace.dev/arduino-co2-sensor-mh-z19-beispiel-und-sketch
/*
bis 400		frische Außenluft
bis 800		hohe Raumluftqualität
bis 1000	akzeptabel „Pettenkoferzahl“
1000–2000	Hygienisch auffällig
über 2000	Hygienisch inakzeptabel
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int DataPin = 6;
int ppmrange = 5000;
unsigned long pwmtime;

int PPM = 0;
float pulsepercent = 0;


void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.setCursor (0, 0);
  lcd.print (F(" CO2 Sensor Abfrage "));
  lcd.setCursor (0, 1);
  lcd.print (F(" ------------------ "));
  pinMode(DataPin, INPUT);
  Serial.begin(152000);
}

void loop() {
  pwmtime = pulseIn(DataPin, HIGH, 2000000) / 1000;
  float pulsepercent = pwmtime / 1004.0;
  PPM = ppmrange * pulsepercent;
  Serial.print("CO2 Konzentration in der Luft in PPM: ");
  Serial.println(PPM);
  lcd.setCursor (0, 3);
  lcd.print (F(" CO2 in PPM = "));
  lcd.setCursor (14, 3);
  lcd.print (F("     "));
  lcd.setCursor (14, 3);
  lcd.print (PPM);
  delay(5000);
}
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

Bin inzwischen wieder Zuhause, einen Tag eher als gedacht, und habe natürlich gleich den CO2 Sensor in Betrieb genommen. Als erstes er reagiert recht langamm. Er braucht schon mal einige Zeit, bis er auf den derzeitigen Wert kommt. Gefühlt vielleicht 15 Min. Aber ich veranstalte ja kein Rennen. Ich habe ihn in meine Ecke unters Fenster gestellt, da hat er sich bei etwa 1300 ppm eingependelt, und das Termometer (Noch ein externes das daneben steht, sagte 24,2 Grad. Dann habe ich das Fenster ganz geöffnet, nicht nur gekippt, dass der Luftaustausch schneller geht, und der ppm Wert ging runter bis unterhalb von 800, bei 22,9 Grad. Das werden so 10 Minuten gewesen sein. Dann das Fenster wieder zu. Jetzt, wieder 20 Min. später bin ich bei 1040ppm und 23,4 Grad. Das mache ich naürlich alles noch genauer, nicht nur Schätzungen sondern Nachvollziehbare Werte. Ich wollte jetzt nur mal die Reaktionen des CO2 Sensors ein bischen austesten. Und ob das meinen Erwartungen entsprechen kann.
Ich bin inzwischen mit meinen Vorstellungen ein bischen weiter. Ob das gut oder schlecht ist, wer weiß das schon. :grinning: :stuck_out_tongue_winking_eye: Ich denke jetzt an ein Holzbrett, das ich genau in den Fensterrahmen einpassen kann, wenn das Fenster geöffnet ist. Dann kommt unten rechts, oberhalb meines Atemgerätes ein 100mm Rohr mit einem Axiallüfter und einen Verschußschieber, beides vom Arduino gesteuert. Aussen am Brett TemperaturMessung und LuftfeuchteMessung. Innen unterhalb des Fensters auch Temperatur und Luftfeuchte plus CO2.
Der Axiallüfter, wenn überhaupt nur sehr lagsamm drehend, das Ende des Schlauches am Einlass des Schlafapnoe - Atemgerätes. Ja und dann Testen, Testen, Testen. Mal schaun. Das Brett bleibt natürlich kein Brett, das ist nur die "BetaVersion". :(o): Später Denke ich an zwei Kuststoffscheiben mit einen dünnen Holtzrahmen dazwischen. Anstelle der Holzplatte. Mal schauen, jetzt erst mal was womit ich testen kann.

Hier noch ein Bild vom ersten Test heute:
.
CO2_Sensor_Test_01_kleiner.jpg
CO2_Sensor_Test_01_kleiner.jpg (330.52 KiB) 1908 mal betrachtet
Hier mal noch ein Bild von einer Messung am Balkon draussen. Dieser Wert kann offenbar bis 400ppm oder auch noch weniger runter gehen. Die Luft ist besser, je kleiner der Wert, wobei 400ppm ein seeeehr guter Wert ist. Man kann offenbar sagen 400 - 1000ppm ist sehr gute Luftquallität. 1000-2000 ist noch akzeptabel, darüber wirds unterirdisch. Meine Vorstellung von den ersten Testläufen ist, Bei 1400-1500ppm frische Luft Marsch, runter bis etwa 700-800ppm, soweit es die Raumtemperatur hergibt, dann wieder Luftzufuhr Stopp, bis es wieder oben bei 1400-1500ppm ist. Dann alles wieder von neuen, aber immer auch die Raumtemperatur im Auge behalten. Das ist jetzt mal meine Vorstellung der ersten ProgrammVersion für den BetaTest. Dann eben ein paar Anpassungen je nach Ergebnis des Testlaufes.
.
CO2_Sensor_Test_02_Aussenmessung.jpg
CO2_Sensor_Test_02_Aussenmessung.jpg (239.01 KiB) 1908 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

Ist schon gewaltig, wie schnell sich die Luftquallität wieder verschlechtert nachdem man sehr gut gelüftet hat.
Heute bischen vor 24:00 Uhr habe ich die Balkontüre voll aufgerissen weil der Wert bei 2600ppm war.
Nach 5-10 Minuten war der Wert wieder auf unter 800ppm.
Dann bin ich in die Kiste.
Heute Morgen um 07:30 Uhr dann wieder gemessen.
2500ppm und 24,2 Grad
Wieder Balkon-Türe voll auf und gewartet bis der Wert bei 780ppm und 21,8 Grad war.
Eine Stunde später 900ppm und 23,1 Grad
Noch 15 Min. später. 1015ppm und 23,3 Grad
Noch 45 Min. später. 1260ppm und 23,4 Grad
Noch 45 Min. später. 1500ppm und 23,6 Grad
Ich würde mal sagen bis 1500ppm ist es ein sehr guter Wert. Darüber könnte man wieder mal kontrolliert Lüften.
Ich bin jetzt um 10:24 Uhr bei 1593ppm und 23,7 Grad, und habe die Balkontüre wieder voll auf zum Lüften.
Um 10:30 Uhr Türe wieder zu, 600ppm und 23,1 Grad. Der Unterschied zu dem Lüften vorher, die Zimmertüre war offen. Deshalb wohl der sehr schnelle schnelle Luftaustausch. Der ppm Wert geht aber auch sehr schnell wieder hoch, weil die Luft jetzt natürlich auch durch die offene Zimmertüre ins Haus strömen kann. In der Nacht ist diese Türe zu und hält dadurch die erneuerte Luft besser in meinem Raum.
Ich habe jetzt um 10:40 Uhr, also nach 10 Minuten, schon wieder 950ppm :eek:


Ich bin hier in einem Raum, 21qm groß, 2,5 Meter hoch, also rund 52 qm³ Luftraum. Wenn ich mal den Luftraum abziehe den die Schränke belegen, werden es wohl noch so um die 45qm³ sein. In dem die Zimmertüre übernacht geschlossen ist, übertags offen.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

So, der Messwert meines CO2 Sensors hat sich die letzten, etwa 8 Stunden nur immer ein wenig nach unten und oben bewegt. Wenn ich im Raum war (nur so einen Meter weg vom Sensor), wurde der Wert schlechter, also nach oben und wenn ich nicht da war ging er wieder auf um die 700ppm, oder auch mal ein wenig darunter. er war sogar mal auf 650ppm. Also dauernd OHNE Lüften mit Aussenluft. Nur mit offener Zimmertüre ins Haus. Jetzt bin ich seit weniger als einer halben Stunde im Raum bei geschlossener Türe, und der Wert klettert. Jetzt schon 811ppm. Wenn der Wert jetzt wieder wie in der letzen Nacht so schnell und hoch steigt, dann liegt das wohl nur daran, dass ich die Zimmertüre auch Nachts offen lassen muss.

Aber das ist jetzt egal. Ich baue das Geräte auf jeden Fall weiter, auch wenn meine Lösung jetzt vielleicht sein wird, die Zimmertüre offen zu lassen. Das Material bekomme ich ja am Wochenende, dann mache ich jetzt auch weiter.

Der Wert steigt übrigens in der Zeit die ich jetzt da schreibe ganz hurtig weiter. Inzwischen auf 866. Also ich bin mir sehr sicher, das die schnelle Verschlechterung durch den geschlossenen Raum kommt, also die geschlossenen Zimmertüre.

Ich berichte dann nochmal später, wie sich der Wert entwickelt.

Bin aber trotzdem weiter dran. Wenn ich damit dann auch bei geschlossener Türe Gute Luft für meine "Luftpumpe" ohne zu starke Abkühlung des Raumes bekomme, ist das ja auch eine gute Idee.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

Ich habe jetzt mal zum Spass eine CO2 Ampel gemacht, weil ich die anderen Sensoren für Luftfeuchte und Temperatur noch nicht habe. :oo:
Grüne LED (wie im Bild) bis 1000PPM
Gelbe LED 1000-2000PPM
Rote LED über 2000PPM

Code: Alles auswählen

// Arduino CO2 Sensor - MH-Z19 Beispiel und Sketch
// https://iotspace.dev/arduino-co2-sensor-mh-z19-beispiel-und-sketch
/*
  bis 400   frische Außenluft
  bis 800   hohe Raumluftqualität
  bis 1000  akzeptabel „Pettenkoferzahl“
  1000–2000 Hygienisch auffällig
  über 2000 Hygienisch inakzeptabel
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

int DataPin = 6;
int ppmrange = 5000;
unsigned long pwmtime;
int PPM = 0;
float pulsepercent = 0;

//-----------------------AusgangPIN7-------------------------------------
const byte Ausgang01 = 7;          // Pin 7 LED1 grün
byte Ausgangsstatus01 = 0;
//-----------------------AusgangPIN8-------------------------------------
const byte Ausgang02 = 8;          // Pin 8 LED2 gelb
byte Ausgangsstatus02 = 0;
//-----------------------AusgangPIN9-------------------------------------
const byte Ausgang03 = 9;          // Pin 9 LED3 rot
byte Ausgangsstatus03 = 0;
//-------------------------Tonausgabe PIN 17-----------------------------
const byte tonPin = 17;
const int frequenz = 1000;
unsigned long tonZeit = 50;
//----------------------------------------------------------------------------
void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.setCursor (0, 0);
  lcd.print (F(" CO2 Sensor Abfrage "));
  lcd.setCursor (0, 1);
  lcd.print (F(" ------------------ "));
  pinMode(DataPin, INPUT);
  Serial.begin(152000);

  //-----------Ausgänge einrichten--------------------------------------
  Ausgangsstatus01 = 0;                       // Status auf HIGH
  pinMode(Ausgang01, OUTPUT);
  Ausgangsstatus02 = 0;                       // Status auf HIGH
  pinMode(Ausgang02, OUTPUT);
  Ausgangsstatus03 = 0;                       // Status auf HIGH
  pinMode(Ausgang03, OUTPUT);
}
//--------------------------------------------------------------
void loop() {
  pwmtime = pulseIn(DataPin, HIGH, 2000000) / 1000;
  float pulsepercent = pwmtime / 1004.0;
  PPM = ppmrange * pulsepercent;
  Serial.print("CO2 Konzentration in der Luft in PPM: ");
  Serial.println(PPM);
  lcd.setCursor (0, 3);
  lcd.print (F(" CO2 in PPM = "));
  lcd.setCursor (14, 3);
  lcd.print (F("     "));
  lcd.setCursor (14, 3);
  lcd.print (PPM);
  if (PPM <= 1000)
  {
    Ausgangsstatus01 = 1;
    Ausgangsstatus02 = 0;
    Ausgangsstatus03 = 0;
  }
  if ((PPM > 1000) && (PPM < 2000))
  {
    Ausgangsstatus01 = 0;
    Ausgangsstatus02 = 1;
    Ausgangsstatus03 = 0;
  }
  if (PPM > 2000)
  {
    Ausgangsstatus01 = 0;
    Ausgangsstatus02 = 0;
    Ausgangsstatus03 = 1;
    tone(tonPin, frequenz, tonZeit);
  }
  //-------------LED01 schalten-------------------------------------------
  digitalWrite (Ausgang01, Ausgangsstatus01);     // Ausgang01 LED Grün umschalten


  //-------------LED02 schalten-------------------------------------------
  digitalWrite (Ausgang02, Ausgangsstatus02);     // Ausgang02 LED Gelb umschalten

  //-------------LED03 schalten-------------------------------------------
  digitalWrite (Ausgang03, Ausgangsstatus03);     // Ausgang03 LED Rot (Blau) umschalten

  delay(5000);
}
CO2_Sensor_Ampel.jpg
CO2_Sensor_Ampel.jpg (231.49 KiB) 1869 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

So, jetzt habe ich die Luftfeuchte- und Temp. Sensoren bekommen und natürlich gleich eiligst eingebaut :(oo): auf der TestConsole. Am Donnerstag bekomme ich den Stellmotor fürs Kippfenster und das Netzteil dafür. Dann gehts an den Endsprurt. Ich habe mir eine Befestigung überlegt, wie ich den Stellmotor ans Fenster bringe ohne sichtbare Verletzung des Fensters. Aber dazu mehr, wenn ich das Zeug installiert habe.

Hier mal ein Bild mit den komplette Messwerten, die ich jetzt zur Steuerung heranziehen werde.
Das ist Luftfeuchte draussen, Temperatur draussen.
Das ist Luftfeuchte innen, Temperatur innen.
CO2 Wert innen.
Innen heißt Unterhalb des Fensters, wo das Atemluftgerät steht.
.
CO2_Lüftungssteuerung_V02.jpg
CO2_Lüftungssteuerung_V02.jpg (403.09 KiB) 1852 mal betrachtet
Hier noch das Programm wie es im Moment ist:

Code: Alles auswählen

// Arduino CO2 Sensor - MH-Z19 Beispiel und Sketch
// https://iotspace.dev/arduino-co2-sensor-mh-z19-beispiel-und-sketch
/*
  bis 400   frische Außenluft
  bis 800   hohe Raumluftqualität
  bis 1000  akzeptabel „Pettenkoferzahl“
  1000–2000 Hygienisch auffällig
  über 2000 Hygienisch inakzeptabel
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

#include "DHT.h"
#define DHTPIN1  2         // Hier die Pin Nummer eintragen wo der Sensor1 angeschlossen ist
#define DHTPIN2  3         // Hier die Pin Nummer eintragen wo der Sensor2 angeschlossen ist
#define DHTTYPE DHT22     // Hier wird definiert was für ein Sensor DHT11 oder DHT22 !!
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
int DataPin = 6; // Pin für CO2 Sensor
int ppmrange = 5000;
unsigned long pwmtime;
int PPM = 0;
float pulsepercent = 0;

//-----------------------AusgangPIN7-------------------------------------
const byte Ausgang01 = 7;          // Pin 7 LED1
byte Ausgangsstatus01 = 0;
//-----------------------AusgangPIN8-------------------------------------
const byte Ausgang02 = 8;          // Pin 8 LED2
byte Ausgangsstatus02 = 0;
//-----------------------AusgangPIN9-------------------------------------
const byte Ausgang03 = 9;          // Pin 9 LED3
byte Ausgangsstatus03 = 0;
//-------------------------Tonausgabe PIN 17-----------------------------
const byte tonPin = 17;
const int frequenz = 1000;
unsigned long tonZeit = 50;
//--------------------------------------------------------------
void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.setCursor (0, 0);
  lcd.print (F(" - CO2  Bel""\xF5""ftung -"));
  pinMode(DataPin, INPUT);
  Serial.begin(9600);
  // Luftfeuchte und Temperatur Sensoren
  dht1.begin();
  dht2.begin();
  //-----------Ausgänge einrichten--------------------------------------
  Ausgangsstatus01 = 0;                       // Status auf HIGH
  pinMode(Ausgang01, OUTPUT);
  Ausgangsstatus02 = 0;                       // Status auf HIGH
  pinMode(Ausgang02, OUTPUT);
  Ausgangsstatus03 = 0;                       // Status auf HIGH
  pinMode(Ausgang03, OUTPUT);
}
//--------------------------------------------------------------
void loop() {
  pwmtime = pulseIn(DataPin, HIGH, 2000000) / 1000;
  float pulsepercent = pwmtime / 1004.0;
  PPM = ppmrange * pulsepercent;
  lcd.setCursor (0, 3);
  lcd.print (F(" CO2 in PPM = "));
  lcd.setCursor (14, 3);
  lcd.print (F("     "));
  lcd.setCursor (14, 3);
  lcd.print (PPM);

  float h1 = dht1.readHumidity();    // Lesen der Luftfeuchtigkeit1 und speichern in die Variable h1
  float t1 = dht1.readTemperature(); // Lesen der Temperatur in °C1 und speichern in die Variable t1
  float h2 = dht2.readHumidity();    // Lesen der Luftfeuchtigkeit2 und speichern in die Variable h2
  float t2 = dht2.readTemperature(); // Lesen der Temperatur in °C2 und speichern in die Variable t2
  lcd.setCursor (0, 1);
  lcd.print (F(" L1 "));
  lcd.print (h1);
  lcd.print (F("  T1 "));
  lcd.print (t1);
  lcd.setCursor (0, 2);
  lcd.print (F(" L2 "));
  lcd.print (h2);
  lcd.print (F("  T2 "));
  lcd.print (t2);
  if (PPM <= 1000)
  {
    Ausgangsstatus01 = 1;
    Ausgangsstatus02 = 0;
    Ausgangsstatus03 = 0;
  }
  if ((PPM > 1000) && (PPM < 2000))
  {
    Ausgangsstatus01 = 0;
    Ausgangsstatus02 = 1;
    Ausgangsstatus03 = 0;
  }
  if (PPM > 2000)
  {
    Ausgangsstatus01 = 0;
    Ausgangsstatus02 = 0;
    Ausgangsstatus03 = 1;
    tone(tonPin, frequenz, tonZeit);
  }
  //-------------LED01 schalten-------------------------------------------
  digitalWrite (Ausgang01, Ausgangsstatus01);     // Ausgang01 LED Grün umschalten

  //-------------LED02 schalten-------------------------------------------
  digitalWrite (Ausgang02, Ausgangsstatus02);     // Ausgang02 LED Gelb umschalten

  //-------------LED03 schalten-------------------------------------------
  digitalWrite (Ausgang03, Ausgangsstatus03);     // Ausgang03 LED Rot (Blau) umschalten

  delay(5000);
}
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

Soooo, da morgen der FensterSteller kommt, jedenfalls ist es so angekündigt, :???: habe ich schon mal den Aussensensor auch Aussen montiert. Ich habe einfach ein ungeschirmtes flaches Telefonkabel verwendet. Die Datenübertragung scheint nicht störanfällig zu sein. Das geht wie ne Eins. Die Temperaturanzeige auf meinem Wecker scheint nicht so toll zu sein. Aussen 0,8 Grad mehr, innen 0,6 Grad weniger. Aber ich vertraue in diesem Fall meinem Arduino mehr, weil der mit allen anderen Geräten die ich hier so habe, eigentlich recht indentische Werte zeigt.

Hier mal das Bild vom aktuellen Aufbau:
.
CO2_Lüftungssteuerung_V03.jpg
CO2_Lüftungssteuerung_V03.jpg (457.68 KiB) 1833 mal betrachtet
Ich habe jetzt mal die Bedingung zum öffnen des Kippfenster eingefügt.
if ((t1 > 22)&&(PPM >900))
und die Bedingung zum wieder schließen des Kippfenster auch eingefügt.
if ((t1 < 20)||(PPM <430))
Also ist die Innentemperatur größer 22 Grad und der PPM Wert der Luft größer 900, geht das Fenster auf. Bei 900ppm ist die Luft zwar noch sehr gut, aber sie soll ja auch gar nicht erst schlecht werden. Ich dachte Anfangs an Fenster öffnen bei 1500ppm, aber ich denke inzwischen, da soll sie gar nicht erst hin kommem.
Und ist die Innentemperatur kleiner 20 Grad oder der PPM Wert der Luft kleiner 430, geht das Fenster wieder zu. 20 Grad ist mir deutlich zu kalt, aber das ist ja eine rel. kurze Zeit. Dann geht das Fenster wieder zu und die Temperatur steigt wieder an. Es ist auch nur ein anfangswert. Wo ich dann hinkomme wenn ich das ein paar Tage beobachte, wird sich zeigen.

Und das aktuelle Programm:

Code: Alles auswählen

// Arduino CO2 Sensor - MH-Z19 Beispiel und Sketch
// https://iotspace.dev/arduino-co2-sensor-mh-z19-beispiel-und-sketch
/*
  bis 400   frische Außenluft
  bis 800   hohe Raumluftqualität
  bis 1000  akzeptabel „Pettenkoferzahl“
  1000–2000 Hygienisch auffällig
  über 2000 Hygienisch inakzeptabel
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

#include "DHT.h"
#define DHTPIN1  2         // Hier die Pin Nummer eintragen wo der Sensor1 angeschlossen ist
#define DHTPIN2  3         // Hier die Pin Nummer eintragen wo der Sensor2 angeschlossen ist
#define DHTTYPE DHT22     // Hier wird definiert was für ein Sensor DHT11 oder DHT22 !!
DHT dht1(DHTPIN1, DHTTYPE); //Sensor1 einrichten
DHT dht2(DHTPIN2, DHTTYPE); //Sensor2 einrichten
int DataPin = 6; // Pin für CO2 Sensor
int ppmrange = 5000;
unsigned long pwmtime;
int PPM = 0;
float pulsepercent = 0;
byte lueftung = 0;

//-----------------------AusgangPIN7-------------------------------------
const byte Ausgang01 = 7;          // Pin 7 LED1
byte Ausgangsstatus01 = 0;
//-----------------------AusgangPIN8-------------------------------------
const byte Ausgang02 = 8;          // Pin 8 LED2
byte Ausgangsstatus02 = 0;
//-----------------------AusgangPIN9-------------------------------------
const byte Ausgang03 = 9;          // Pin 9 LED3
byte Ausgangsstatus03 = 0;
//-------------------------Tonausgabe PIN 17-----------------------------
const byte tonPin = 17;
const int frequenz = 1000;
unsigned long tonZeit = 50;
//--------------------------------------------------------------
void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.setCursor (0, 0);
  lcd.print (F(" - CO2  Bel""\xF5""ftung -"));
  pinMode(DataPin, INPUT);
  Serial.begin(9600);
  // Luftfeuchte und Temperatur Sensoren
  dht1.begin(); // Sensor1 starten
  dht2.begin(); // Sensor2 starten
  //-----------Ausgänge einrichten--------------------------------------
  Ausgangsstatus01 = 0;                       // Status auf HIGH
  pinMode(Ausgang01, OUTPUT);
  Ausgangsstatus02 = 0;                       // Status auf HIGH
  pinMode(Ausgang02, OUTPUT);
  Ausgangsstatus03 = 0;                       // Status auf HIGH
  pinMode(Ausgang03, OUTPUT);
}
//--------------------------------------------------------------
void loop() {
  pwmtime = pulseIn(DataPin, HIGH, 2000000) / 1000;
  float pulsepercent = pwmtime / 1004.0;
  PPM = ppmrange * pulsepercent;
  lcd.setCursor (0, 3);
  lcd.print (F(" CO2 in PPM = "));
  lcd.setCursor (14, 3);
  lcd.print (F("     "));
  lcd.setCursor (14, 3);
  lcd.print (PPM);

  float h1 = dht1.readHumidity();    // Lesen der Luftfeuchtigkeit1 und speichern in die Variable h1
  float t1 = dht1.readTemperature(); // Lesen der Temperatur in °C1 und speichern in die Variable t1
  float h2 = dht2.readHumidity();    // Lesen der Luftfeuchtigkeit2 und speichern in die Variable h2
  float t2 = dht2.readTemperature(); // Lesen der Temperatur in °C2 und speichern in die Variable t2
//--------------------------
  lcd.setCursor (18, 1);
  lcd.print (F(" "));
  lcd.setCursor (0, 1);
  lcd.print (F(" L1 "));
  lcd.print (h1);
  lcd.print (F("% T1 "));
  lcd.setCursor (14, 1);
  lcd.print (t1);
  if (t1 < 10)
  {
    lcd.setCursor (14, 1);
    lcd.print (F(" "));
    lcd.print (t1);
  }
  //------------------------
  lcd.setCursor (18, 2);
  lcd.print (F(" "));
  lcd.setCursor (0, 2);
  lcd.print (F(" L2 "));
  lcd.print (h2);
  lcd.print (F("% T2 "));
  lcd.setCursor (14, 2);
  lcd.print (t2);
   if (t2 < 10)
  {
    lcd.setCursor (14, 2);
    lcd.print (F(" "));
    lcd.print (t2);
  }
  //-----------------------
  if (PPM <= 1000)
  {
    Ausgangsstatus01 = 1;
    Ausgangsstatus02 = 0;
  }
  if ((PPM > 1000) && (PPM < 2000))
  {
    Ausgangsstatus01 = 0;
    Ausgangsstatus02 = 1;
  }
  if (PPM > 2000)
  {
    Ausgangsstatus01 = 0;
    Ausgangsstatus02 = 0;
    tone(tonPin, frequenz, tonZeit);
  }
  //----------------------
  //---Lüftung Einschaltbedingung-----
  if (lueftung == 0)
  {
  if ((t1 > 22)&&(PPM >900))
  {
  lueftung=1;
  Ausgangsstatus03 = 1; //Fenster öffnen
  Serial.print(F("Lüftung = 1"));
  }
  }
  //---Lüftung Ausschaltbedingung-----
 if (lueftung == 1)
  {
  if ((t1 < 20)||(PPM <430))
  {
  lueftung=0;
  Ausgangsstatus03 = 0; //Fenster zu
  Serial.print(F("Lüftung = 0"));
  }
  }
  
  //-------------LED01 schalten-------------------------------------------
  digitalWrite (Ausgang01, Ausgangsstatus01);     // Ausgang01 LED Grün umschalten

  //-------------LED02 schalten-------------------------------------------
  digitalWrite (Ausgang02, Ausgangsstatus02);     // Ausgang02 LED Gelb umschalten

  //-------------LED03 schalten-------------------------------------------
  digitalWrite (Ausgang03, Ausgangsstatus03);     // Ausgang03 LED Rot (Blau) umschalten

  delay(5000);
}
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

Ich habe mal wieder Mist gebaut :(o):
Ich habe gestern die ganze Elektronik in das Pultgehäuse gebaut, und musste beim Motortreiber ein Befestigungsloch etwas weiter machen, dass ich die Schraube durch bekomme, womit das Gehäuse zusammengebaut wird. Ja, dann habe ich den Fenstermotor betätigen wollen, aber der geht jetzt nur noch in eine Richtung. Also das Umpolen geht nicht mehr :(o): Der neue Treiber kommt erst Ende kommende Wochen. Bin ich nicht toll? :) Vielleicht sollte mich meine Frau doch lieber zu den Rindfviechern auf die Weide stellen :evil: :evil:

Aber heute kann ich endlich meinen Fensterstell Motor montieren, ich musste noch ein bischen überlegen wie ich den an der Wand befestige ohne auch noch den Rolokasten überm Fenster KO zu bohren. Franzelchen und Bohrmaschiene, die sind offenbar manchmal nicht soooo kompatibel :(o): :(o):
.
CO2_Lüftungssteuerung_V04.jpg
CO2_Lüftungssteuerung_V04.jpg (346.4 KiB) 1829 mal betrachtet
Hier ist das Bild vom "Endprodukt, naja zumindest auf dem Weg zum Endprodukt. Der Bedienteil Display und Schalter kommen in eine Aluplatte, die in den Rechteckigen Ausschnitt auf der Pultabdeckung montiert wird. Die Sensoren werden Hinten, Aussen ans Gehäuse kommen, das wird am Schluss enschieden. Oder ich mache Zu- und Abluft ins Gehäuse, und da auch die Sensoren dazwischen. Man wird sehen.

Hier noch das aktuelle Programm, das in der Motoransteuerung noch nicht fertig ist. Weil ja leider der Treiber Rechts oben im Gehäuse, durch meine dämlichkeit gehimmelt ist. :O:

Ich bräuchte noch eine Alublende auf mein Pultgehäuse mit den Massen hier:
Alublende Pultgehäuse.jpg
Alublende Pultgehäuse.jpg (269.63 KiB) 1820 mal betrachtet
Könnte dir (bzw. mir :(iii): ) dein Bekannter das machen mit 1-2 mm Alu? Wenn nicht kein Problem dann gehe ich zum Ugler in Penzberg. Der macht solche Arbeiten auch recht preiswert. Ich könnte gleich zwei davon brauchen, weil ich mir gleich zwei von den Pultgehäusen geholt habe.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: CO2 Gassensor Testen

Beitrag von Admin »

Sagst du mir nur bitte bald bescheid, wenn es bei deinem Bekannten nicht geht. Dass ich dann möglichst bald zum Ugler gehen kann, mit meinem Zettel :) Am kommenden Wochenende würde ich gerne das ganze zusammenbauen. Das wird wohl ein bischen kurzfristig. Also wenn das nicht so toll ist, dann einfach sagen dass das nicht geht. Ist überhaupt kein Problem, wenn es nicht geht.

Gute Nacht
Franz :(V):
Antworten

Zurück zu „Fertige Projekte Vorstellen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste