Skip to content

HMSteve/HB-UNI-Sen-CO2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HB-UNI-Sen-CO2

HB-UNI-Sen-CO2

Eine AskSinPP-Implementierung eines Innenraum-Sensors mit dem NDIR-CO2-Sensor SCD30. Das Geraet kann regulaer in eine Homematic-Umgebung eingebunden werden und liefert Messwerte fuer die CO2-Konzentration, Temperatur, Lueftfeuchte und bei bestuecktem BME280 auch Luftdruck. Ebenso kann es abseits einer Homematic-Installation stand-alone als "CO2-Ampel" verwendet werden: Die Messwerte werden auf einem E-Paper-Display angezeigt und es kann eine Indikator-LED fuer die CO2-Konzentration zugeschaltet werden. Der Betrieb erfolgt mittels zweier AA-NiMH-Akkus, auf Li-Po/Li-Ionen-Akkus wurde unter Sicherheitsaspekten bewusst verzichtet. Eine Ladeschaltung mit Micro-USB-Buchse ist eingebaut. Ueber diese erfolgt eine Schnelladung mit 500mA sowie auf Wunsch parallel zu einer "Erhaltungsladung" die dauerhafte Versorgung des Sensors. Hierzu dient ein uebliches USB-Ladegeraet, das mind. 1A dauerhaft liefern koennen sollte.

Platine

Auf der Platine sind drei I2C-Steckplaetze fuer Sensoren vorgesehen. Neben dem Sensirion SCD30 bietet sich ein 4-poliges BME280-Modul zur Luftdruck-Kompensation an. Der Drucksensor ist auch in der Firmware vorgesehen. Der dritte Steckplatz ist aktuell frei. Als Display findet ein 1.54" Waveshare-E-Paper-Modul Verwendung.

Schaltplan

Stueckliste

Ein paar Fotos vom Aufbau:

PCB Top

PCB Bottom

PCB Top 2

PCB Bottom 2

Hinweis: Da leider das Displaymodul und nicht der aktive Displaybereich mittig auf der Platine angeordnet wurden, ist die Duo-LED vor dem Gehaeuseeinbau durch Zurechtbiegen der Anschluesse ca. 3mm versetzt zu bestuecken. Die 3mm-LEDs duerfen den Platinenrand nur wenig ueberragen, um den Einbau ins Gehaeuse zu ermoeglichen.

Software

Addon zur Geraeteunterstuetzung

Sofern noch nicht vorhanden oder nicht aktuell, ist das Addon auf der CCU zu installieren. Der Sensor benoetigt mindestens Version 1.23.

Firmware

Es wird ein ATMega1284p verwendet, da der Speicherplatz des ATMega328p nicht ausreicht. Deshalb ist bei Nutzung der Arduino IDE zunaechst eine zusaetzliche sog. Boardverwalter-URL (https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json) in den Voreinstellungen zu hinterlegen. Folgende Boardeinstellungen sind dann auszuwaehlen:

Boardeinstellungen

Danach kann der Bootloader geflashed werden.

Um die Firmware zu kompilieren, muessen sich die .ino sowie die .h Dateien im gleichen Verzeichnis befinden, das ./sensors-Verzeichnis darunter. Zudem muss eine Reihe von Bibliotheken ueber den Library Manager eingebunden werden:

  • AskSinPP
  • EnableInterrupt
  • LowPower
  • SparkFun SCD30 Arduino Library
  • Adafruit BME280 Library
  • GxEPD
  • Adafruit GFX

Anschliessend sollte die Firmware problemlos kompilierbar und das Device nach dem Flashen anlernbar sein.

Bedienung

Es gibt neben der AskSinPP-Config-Taste eine weitere Bedientaste. Ein kurzer Druck auf diese schaltet die Ampel-LED ein bzw. aus, ein langer Druck fuehrt zu einer forced calibration des SCD30. Hierzu sollte sich der Sensor bereits einige Minuten an der frischen Luft ohne nennenswerte Druckschwankungen durch Wind befunden haben. Der lange Tastendruck kalibriert dann den Sensor auf den im WebUI hinterlegten CO2-Referenzwert (im Freien ca. 410ppm). Die automatische Kalibrierung wird nicht verwendet auf Basis der These, dass ein Wegdriften der Auto-Kalibrierung bei nicht ausreichendem regelmaessigem Lueften problematischer ist als die Alterungsdrift nach forced calibration. Langzeitbeobachtungen hierzu fehlen mir jedoch.

Unterschreitet die Akkuspannung 2.2V, wird ein Warnsymbol im Display angezeigt und ein USB-Ladegerate sollte angeschlossen werden. Geschieht das nicht und die Spannung sinkt unter 2.0V, schaltet sich der Sensor zum Schutz vor Tiefentladung ab und zeigt dies an. Ein Reset (Wiedereinschalten) erfolgt automatisch beim Anschluss eines Ladegeraetes. Die gruene LED zeigt das Anliegen der Ladespannung, die gelbe den Schnelladevorgang. Es ist zu beachten, dass die Erwaermung beim Schnelladen natuerlich die Messwerte im Gehaeuse verfaelscht.

Die Schaltschwellen der Ampelfarben, die Hoehe ueber NN sowie ein vom SCD30-Temperaturmesswert zu subtrahierender Offset zur Korrektur der Anzeige koennen im WebUI konfiguriert werden.

WebUI Settings

Die Messwerte werden dann so angezeigt:

WebUI Status

Hinweise zum Energieverbrauch

Der SCD30 zieht einen nennenswerten Ruhestrom (mind. 5mA). Ein Power Cycling wird vom Hersteller nicht empfohlen, siehe hier. Damit ist fuer das Geraet bei der Voreinstellung einer Sensor-Abtastperiode von 16s eine Akkulaufzeit von hoechstens 5 Tagen zu erwarten. Das heisst, der mobile Betrieb waehrend eines oder einiger (Arbeits)tage ist problemslos moeglich. Der Dauerbetrieb sollte jedoch eher mit USB-Netzteil erfolgen. Dabei versorgt nach Ende der Schnelladung der von der MAX712-Ladeschaltung gelieferte, von R20 gemaess Datenblatt MAX712 feinjustierte Erhaltungsladestrom das Device.

Hier eine Messung zum Stromverbrauch:

Power Consumption Detail

Ein Excel-Workbook zum power budgeting findet sich hier.

Gehaeuse

Zwischen Display und Platine sind vier zu druckende Abstandshuelsen einzusetzen. Das Gehaeuse stellt beim Drucken keine groesseren Herausforderungen. Die LED-Loecher sind ggf. mit 10.5mm bzw. 3.5mm aufzubohren, die Loecher im Boden mit 3mm. Fuer die Befestigung der Platine sind M3-Einpressmuttern vorgesehen. Die Befestigung der Platine im Gehaeuse erfolgt mit M3x10 Distanzbolzen. Die Rueckwand wird dann mit M3x10 Zylinderkopfschrauben an diesen befestigt.

Disclaimer

Die Nutzung der hier veroeffentlichten Inhalte erfolgt vollstaendig auf eigenes Risiko und ohne jede Gewaehr.

Lizenz

Creative Commons BY-NC-SA
Give Credit, NonCommercial, ShareAlike

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

About

SCD30 based CO2 sensor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages