Neukalibrieren des CO2 Sensors

In diesem Projekt wird gezeigt, wie der CO2-Sensor der senseBox neu kalibriert werden kann, falls die Werte des Sensors unrealistisch erscheinen. Der Code kommt von einem Mitglied der senseBox-Community, der uns den Code netterweise zur Verfügung gestellt hat, danke dir, Philipp!

Schritt 1: Aufbau

Wenn ihr eine CO2-Ampel habt, müsst ihr am Aufbau der Ampel nichts mehr ändern. Wollt ihr nur den Sensor kalibrieren, solltet ihr diesen und ein Display an die Box anschließen, wie im Bild gezeigt.

/images/projects/co2-kalib/setup.png - Logo

Schritt 2: Code

Jetzt kann der Kalibrierungscode auf die senseBox übertragen werden. Nutzt dazu diese .bin-Datei und ladet sie über den Datenträgermodus auf die senseBox hoch (Doppelklick auf Reset-Button, .bin-Datei auf den neuen Datenträger kopieren, Fertig). Alternativ kopiert dazu den folgenden Code in die Arduino IDE und ladet das Programm anschließend auf die senseBox hoch.

/*
 * Arduino ins Freie bringen.
 * Nach 4 Minuten erfolgt die Kalibrierung auf 450 ppm
 * Er benötigt konstante Bedingungen und sollte schon etwas warmgelaufen sein. 
 * Wenn man ihn von einem warmen Raum ins kalte nach draußen bringt, sind die vier Minuten u. U. nicht ausreichend.
*/


#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "SenseBoxMCU.h"
#include "SparkFun_SCD30_Arduino_Library.h"

boolean unkalibriert;
long laufzeit;

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
SCD30 airSensor;

void setup() {
  senseBoxIO.powerI2C(true);
  delay(2000);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
  display.display();
  delay(100);
  display.clearDisplay();
   Wire.begin();
   Wire.setClock(50000); //50kHz

  if (airSensor.begin() == false)
  {
    while (1)
      ;
  }

  unkalibriert = true;
  display.setCursor(0,0);
  display.setTextSize(1);
  display.setTextColor(WHITE,BLACK);
  display.println("Zur Kalibrierung den Sensor nach draussen bringen");
  display.display();
  delay(60000);

}

void loop() {

if (unkalibriert) {
    display.clearDisplay();
      display.setCursor(0,0);
      display.setTextSize(1);
      display.setTextColor(WHITE,BLACK);
      display.println("Kalibrierung laeuft");
    display.display();
  } else {
    display.clearDisplay();
      display.setCursor(0,0);
      display.setTextSize(1);
      display.setTextColor(WHITE,BLACK);
      display.println("Kalibrierung abgeschlossen");
    display.display();
  }
  delay(1000);
  display.clearDisplay();
    display.setCursor(0,0);
    display.setTextSize(2);
    display.setTextColor(WHITE,BLACK);
    display.println(airSensor.getCO2());
  display.display();
  delay(1000);
  laufzeit = millis();
  if (unkalibriert && laufzeit > 240000) {    //nach 4 min erfolgt Kalibrierung
    airSensor.setForcedRecalibrationFactor(450);
    unkalibriert = false;
  }

}

Schritt 3: Kalibrieren

Jetzt muss die senseBox mit dem Sensor ins Freie gebracht werden, am besten nicht direkt an einer Straße um die Kalibrierung nicht zu beeinflussen. Nach etwa 5 Minuten wird der Sensor neu kalibriert. Dies wird auch auf dem Display entsprechend angezeigt:

Sensor wartet auf Kalibrierung

/images/projects/co2-kalib/waiting.png - Logo

Sensor wurde erfolgreich neu kalibriert

/images/projects/co2-kalib/done.png - Logo

Schritt 4: Altes Programm wieder aufspielen

Ist die Kalibrierung abgeschlossen, kann das ursprüngliche Programm wieder aufgespielt werden, die Kalibrierung bleibt erhalten. Für die CO2 Ampel kann die .bin-Datei wieder aufgespielt werden (Doppelklick auf Reset-Button, .bin-Datei auf den Datenträger kopieren, Fertig).

Nun sollte der Sensor wieder kalibriert sein und nachvollziehbare Werte liefern.