NDIR CO2 Sensor mit Sensirion SCD30

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

FUEL4EP
Beiträge: 140
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 23 Mal
Danksagung erhalten: 13 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 06.09.2020, 19:31

Das Problem mit dem "Einfrieren" des Sensors zu Beginn eines Ladevorgangs der NiMH Akkus konnte gelöst werden :D

Dazu wird der Ladestrom für die NiMH Akkus von ca. 1 A auf 0.259 A reduziert. Damit sind Spannungsinstabilitäten beseitigt, die vorher zum "Einfrieren" des Arduinos führten. Dazu muss, wie in der README.md Datei beschrieben, ein SMD Widerstand auf der Lademodulplatine vergrößert werden:

https://github.com/FUEL4EP/SmartHome/tr ... /README.md

Die Ladezeit vergrößert sich durch den kleineren Ladestrom, ist aber immer noch im Bereich mehrerer Stunden. Als positiver Nebeneffekt ist auch die Wärmeentwicklung im Lademodul kleiner, so dass das darunter liegende SCD30 Sensormodul nicht mehr so stark erhitzt wird.

Im Schematic wurde im Sheet 'Power_Supply' der Elko C2 von 470uF an den I2C Lötpins entfernt. Ein neuer C2 von 47 uF wird nun direkt an den Ausgang des Lademoduls angelötet. Das reduziert Spannungseinbrüche bei Laständerungen.
Grüße

Ewald

HMSteve
Beiträge: 101
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von HMSteve » 08.11.2020, 21:06

Hallo Ewald,

Schoenes Projekt, insb. mit der Kombi Netz- und Akkubetrieb, die Idee gefaellt mir!

Nachdem ich den BME680 als Raumluftueberwachung praktisch aufgegeben habe und auch mit dem SGPC3 noch nicht so ganz gluecklich bin, habe ich mir auch mal einen SCD30 bestellt und einen ersten Prototypen zusammengekloeppelt. Der funktioniert grundsaetzlich, vielleicht interessieren Dich ja ein paar Details (ergaenzter rumliegender BMP280 fuer Druckkompensation, Config-Parameter in List0 fuer Temperatur-Offset). Details unter https://github.com/HMSteve/HB-UNI-Sen-CO2 bzw. https://github.com/HMSteve/SG-HB-Devices-AddOn. Das Thema Kalibrierung muss ich mir noch mal anschauen, aktuell pendelt er sich im Freien bei 450ppm ein.

Nun meine Frage: Warum hast Du Dich fuer NiMH Akkus entschieden und nicht fuer LiFePO? Ich habe da kaum Ahnung, letztere sind m.W. aber besser fuer Standby-Betrieb geeignet? Li+ und LiPo scheiden fuer mich aus Brandsicherheitsgruenden aus. Idee waere Ladung ueber USB und den Sensor nahe einem USB- Geraet positionieren, dass oft genug oder dauerhaft sowieso eingeschaltet wird (PC, Fernseher, Raspi...), um nicht noch ein Netzteil dauerlaufen zu lassen. Einen passenden Laderegler muss ich aber noch suchen.

Viele Gruesse,
Stephan

FUEL4EP
Beiträge: 140
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 23 Mal
Danksagung erhalten: 13 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 09.11.2020, 09:44

Hallo Stephan,

der Kombibetrieb Akku-Netz war eine der wichtigen Anforderungen, die ich für mich an den Sensor gestellt habe. Ich benutze ihn fast ausschließlich im Akkubetrieb, so dass ich ihn überall hinstellen kann, ohne eine Steckdose in der Nähe haben zu müssen. Eine weitere wichtige Anforderung war eine vernünftige Akkulaufzeit: Eine NiMH Akkuladung reicht für 10..20 Tage Betrieb, je nach Sonneneinstrahlung und Nachladen durch die Solarzelle.

Deine neuen Details (Druckkompensation, Config-Parameter in List0 fuer Temperatur-Offset) sind interessant und schaue ich mir gerne an.
Wie groß ist denn der Einfluss des Luftdrucks?

Die Autokalibrierung hat bei mir auch einige Wochen gedauert, in denen der CO2 Wert meistens in der Nacht unter 400 ppm gefallen ist. Bei jeder Neuprogrammierung wird die Autokalibrierung neu gestartet. Inzwischen ist der minimale Wert stabil bei 400 ppm nach dem Querlüften. Ein Außenwert von 450 ppm erscheint mir zu hoch, hatte ich in der Autokalibrierungsphase aber auch.

Eine Versorgung mit LiFePO Akkus ist sicher auch möglich. Meine Gründe NiMH Akkus zu nehmen sind:

1. Ich habe keine Erfahrung mit LiFePO Akkus, aber mit NiMH Akkus. Ready-to-use NiMH Akkus haben auch geringe Selbstentladung.
2. Die Kapazität von NiMH in AA Batteriezellenform beträgt bis zu 2700 mAh, die von LiFePO Akkus in AA Batteriezellenform nur 600.700 mAh. Entsprechend verkürzt sich die Betriebsdauer mit einer Akkuladung.
3. Der SCD30 Sensor hat eine minimale Betriebsspannung von 3.5V. Die Ladeschlussspannung von LiFePO Akkus ist ca. 3.6..3.7V. Das bedeutet, dass ein Schaltwandler im Bereich der Ladeschlussspannung im Übergangsbereich Buck zu Boost arbeiten muss. Ein reiner Boost Konverter reicht nicht aus. Dieser Kombibetrieb ist regelungstechnisch anspruchsvoller. Die Standardwandlermodule aus China geben das nicht her (zumindest habe ich keine auf Anhieb gefunden). Bei zwei in Serie geschalteten NiMH Akkus beträgt die Ladeschlussspannung ca. 3V. Ich habe meinen 0815 Boost Konverter auf 3.7V Ausgangsspannung eingestellt (nominal).

Deine Messzykluszeit ist mit 11 Sekunden kurz:

Code: Alles auswählen

updIntervall(11); //seconds
Dadurch ist die Stromaufnahme deutlich höher. Ich habe 60 Sekunden gewählt. Das reicht für das Lüften und den dabei auftretenden Zeitkonstanten völlig aus.

Die Netzversorgung mit einem 5V USB Ladegerät / PC ist sicher attraktiv, da ein weiteres Ladegerät gespart wird. In der von mir gewählten Dreifachstromversorgung Akku/Netz/Solar mit VCC Spannungspegeln von 3.7/3.8/3.9V reicht die verbleibende Spannungsdifferenz von 1.2V (5V-3.8V) für die meisten Standardbuckkonverter nicht aus. Daher bin ich auf 6V Eingangsspannung gegangen. Mit Entwicklungsaufwand lässt sich hier sicher auch für 5V Eingangsspannung eine Lösung finden.

Die Stromversorgung des Sensors lässt sich je nach Anforderungen 'abspecken':

1. Nur Netzbetrieb: Dann keine Akkus und nur ein 5V=>3.5V Buckkonverter. Nachteil: Rekalibrierung nach jeder Unterbrechung der Stromversorgung, keine Ortsunabhängigkeit
2. Nur Netz- oder Akkubetrieb: Auf Solarbetrieb kann verzichtet werden.
3. Nur Akkubetrieb: Dann reicht ein Boostkonverter für die VCC Spannung und ein Laderegler für die Akkus aus.

Hier muss jeder für sich selbst entscheiden, wie viel Aufwand er für die Stromversorgung treiben will und welches Anforderungsprofil er hat.

P.S. Am BME680 VOC Gassensor bin ich noch dran, siehe viewtopic.php?f=76&t=49422&p=609619&hil ... 80#p609619. Da wird es bald ein Update geben, das vernünftig funktioniert. Dort werde ich auch auf die Korrelation des VOC Werts mit dem CO2 Wert eingehen.
Grüße

Ewald

HMSteve
Beiträge: 101
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von HMSteve » 16.11.2020, 22:07

Hallo Ewald,

bin nun auch bei den eneloops gelandet, nachdem die Suche nach einem LiFePO-Laderegler-IC erfolglos war, abgesehen von einem ominosen chinesischen. In jedem Fall (1 oder 2 Zellen) wuerde es wegen der Zellenspannung wohl aufwendiger werden als mit 2 NiMH und meinem standardmaessigen MAX1724/3.3 dahinter, das stimmt. Im ersten Versuch ohne Abschaltung des continuous measurement hat sich jedoch eine der nagelneuen Zellen auf 300mV tiefentladen und die andere auf 900mV, bevor ich sie rausnehmen konnte. Ob das auf Dauer ohne balancing mit 2 Zellen laeuft? Werde mal schauen, was es da fuer Loesungen gibt.

Die config params bzw Druckkompensation habe ich gleich nach Blick in die Sensordoku eingebaut, fiel quasi nebenbei ab 8) . Praktische Untersuchung des Einflusses steht noch aus.

Habe nun ausserdem einen Taster fuer die forced calibration implementiert (siehe https://github.com/HMSteve/HB-UNI-Sen-C ... en-CO2.ino, kann man sicher besser machen, mir fehlen aber die Programmierkenntnisse). Die ASC erfordert 1h Frischluft pro Tag und mir ist unklar, was der Algorithmus ohne diese Bedingung liefert. Forced calib mache ich nach kurzer Zeit im Freien per Tastendruck auf 410ppm, dann passt das. Wie schnell die Kalibrierung wegdriftet, bleibt ueber laengere Zeit zu beobachten.

Sendeintervall 11s ist natuerlich nur der Initialwert und zum Testen genutzt, ist ja als config param implementiert.

Du hast in Deiner Sens_SCD30 das uebergebene measurement interval geviertelt mit Verweis auf internes oversampling. Ich las jedoch in https://www.sensirion.com/fileadmin/use ... iption.pdf davon nichts, vielmehr scheinen die Messwerte mit jedem Zylus ueberschrieben zu werden. Woher stammt denn die Info zum oversampling?

Jedenfalls macht mir der Sensor bisher viel mehr Freude als die TVOC-Teile. Fuer den temporaeren Mobilbetrieb braucht er dann sicher noch ein Display oder EPaper...

Viele Gruesse,
Stephan

FUEL4EP
Beiträge: 140
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 23 Mal
Danksagung erhalten: 13 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 16.11.2020, 22:44

Hallo Stephan,

in der 'Low Power Mode forSCD30'-Dokumentation in Bild 2 von

https://media.digikey.com/pdf/Applicati ... ode_D2.pdf

ist die Abhängigkeit der SCD30 internen Samplingzeit und der Ansprechverzögerung dargestellt. Sensirion beschreibt nicht, welche Art von Filterung dieses Verhalten erzeugt. Ich habe mich für ein 60 Sekunden Messintervall des SCD30 entschieden. Der SCD30 misst alle 60 Sekunden einen neuen Wert und die übergeordnete C++ Routine liest alle 240 Sekunden einen Wert aus. Den Rest der Zeit schläft der Prozessor. Das ist streng genommen ein Unterabtasten, kein Überabtasten.
Die beiden Messprozesse sind nicht synchron. Laut der Antwort von Sensirion auf meine Nachfrage, lassen sich die beiden Prozesse nur kompliziert synchronisieren.

Besten Dank für Ihr Interesse an unseren SCD30. Bitte haben Sie Verständnis dass wir weder Codeanalyse noch kundenspezifischen Software Implementationssupport anbieten können. Dazu reichen die verfügbaren Softwareressourcen einfach nicht aus. Ich sehe auch keine Möglichkeit die beiden Vorgänge exakt zu synchronisieren, da die beiden Systeme, wie von Ihnen festgestellt, nicht synchron sind.

Über das RDY Bit könnte zumindest eine temporäre Synchronisation erreicht werden. Sobald das RDY Bit 0 ist müsste die Abfrageroutine so lang wiederholt werden bis ein Messwert ausgelesen werden kann. Danach würden die beiden Systeme wieder auseinander laufen bis beim Versuch einen Messwert auszulesen kein neuer Messwert anliegt.

Auszug Interface Description:
1.4.4 Get data ready status
Data ready command is used to determine if a measurement can be read from the sensor’s buffer. Whenever there is a measurement available from the internal buffer this command returns 1 and 0 otherwise.
Nachteile der Nichtsynchronität habe ich keine festgestellt.

60 Sekunden Messzykluszeit des SCD30 passen zur physikalischen Zeitkonstante des Querlüftens: Erst nach 15..20 Minuten Querlüftens ist der CO2-Wert auf ca. 400 .. 420 ppm gesunken.

Mein SCD30-Sensor läuft nun seit Monaten stabil und driftet bei mindestens 2-maligem Querlüften pro Tag nicht weg. Die Akkuladeschaltung ist auch stabil. Tiefentladung tritt nicht auf. Vorher legt sich das Gesamtsystem in den Tiefschlaf. Ein 'Balancing' der NiMH-Zellen beim Laden ist nicht notwendig. Interessant ist es, die Lade- und Entladespannungsverläufe zu verfolgen (siehe Histogramme unter Images vonhttps://github.com/FUEL4EP/SmartHome/tr ... -CO2_SCD30). Mein chinesischer Laderegler ist ganz gut.

Ja, der CO2 Wert ist ein viel besserer Lüftungsindikator als VOC Werte. Obendrein ist der CO2-Verlauf ein sehr guter Anwesenheitsindikator.
Im Zeithalter von COVID-19 ist Lüften wichtiger denn je. Schimmel hat es dann auch schwerer zu gedeihen!
Grüße

Ewald

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“