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: 104
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 18 Mal
Danksagung erhalten: 10 Mal

NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 27.07.2020, 16:07

Hallo Zusammen,

bald werde ich hier detailliert meinen NDIR CO2 Sensor mit einem Sensirion SCD30 Sensor vorstellen, der auf dem Sketch HB-UNI-Sensor1 und dem Addon HB-TM-Devices-AddOn basiert.

Der CO2 Sensor kommuniziert bereits mit meiner Raspberrymatic:
SCD30_CO2_Sensor_1.png
SCD30_CO2_Sensor_1.png (19.73 KiB) 461 mal betrachtet
Hier ein Bild der Sensorbasisplatine:
SCD30_CO2_Sensor_2.png
Der Sensirion SCD30 verbraucht im Mittel ca. 6..7 mA. Daher ist ein Netzteilbetrieb (Standard) oder Akkubetrieb (nur zeitweise) vorgesehen.
Mit 2x AA Akkus kann der Sensor mehrere Tage ohne Netzversorgung betrieben werden. Zusätzlich ist in den Gehäusedeckel eine 70 mm x 70 mm Solarzelle integriert, die den Akku tagsüber entlastet. Die Integration der Step-Up-, Step-Down und Laderegler erfolgt als 3D Integration mit ein-/ aufgeklebten 3D Druckrahmen. Näheres später. Außenmaße des Sensorgehäuses sind 86 mm x 86 mm x 45 mm.

Zwei Dinge sind noch zu lösen, wo ich Euch um Mithilfe bitte:

1. Messung der Akku Spannung

Bei Akkubetrieb wird aus den 2x AA NiMH Akkumulatoren wird mit einem Step-Up-Wandler die VCC Betriebsspannung von nominal 3.7 Volt erzeugt.
Die Spannung wird bereits mit der Standard VCC Messmethode gemessen:

Code: Alles auswählen

typedef AskSin<LedType, BAT_SENSOR, RadioType> BaseHal;
...
batteryVoltage1000 = device().battery().current();    // BatteryTM class, mV resolution
Nun will ich ZUSÄTZLICH die Spannung die Akkumulatorspannung vor dem Step-Up-Wandler messen.

Wie kann eine zusätzlich zweite Spannungsmessung implementiert werden? Wichtig: Die Standard VCC Messung soll erhalten bleiben.

2. Im WebUI steht der String CO2 in eckigen Klammern, siehe obiges Bild. Das soll auf eine fehlende Übersetzung zurückzuführen sein.

Wie kann ich die fehlende Übersetzung in das Addon einbauen? Gibt es dazu ein Beispiel, das ich dazu heranziehen kann?

Vielen Dank im Voraus!
Grüße

Ewald

jp112sdl
Beiträge: 5859
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 255 Mal
Danksagung erhalten: 515 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von jp112sdl » 27.07.2020, 16:16

Hi,

zu 2.) kann ich dir evtl weiterhelfen:
Du musst an 2 Stellen Anpassungen vornehmen.
1.) /www/config/stringtable_de.txt
Dort fügst du ein

Code: Alles auswählen

KANALTYP|CO2[Tab]${stringTableHBCO2Sensor}
- KANALTYP ist glaub ich WEATHER bei Toms Unisensor.
- [Tab] ist durch das Tabulatorzeichen auf der Tastatur zu ersetzen

2:) /www/webui/js/lang/de/translate.lang.stringtable.js
Dort muss dann die Übersetzung rein

Code: Alles auswählen

 "stringTableHBCO2Sensor" : "CO2 Messwert",
:arrow: z.B. https://github.com/jp112sdl/JP-HB-Devic ... s#L94-L108

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

TomMajor
Beiträge: 1095
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 67 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von TomMajor » 27.07.2020, 19:05

zu 1.)

also zunächst mal muss man hinter einem StepUp die Spannung nicht messen da dieser die auf Zielwert regeln sollte, am Akku ist besser. Aber vlt. hängt das mit deinen Optionen Netz/Batterie zusammen.

Dann könntest du papas Batterieklasse ableiten so wie ich das mit tmBattery gemacht habe und dort drin die 2. Spannungsmessung analogRead() etc. coden sowie einen getter dafür.
Dann noch xml und payload um diesen 2. VOLTAGE Wert erweitern.
Viele Grüße,
Tom

FUEL4EP
Beiträge: 104
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 18 Mal
Danksagung erhalten: 10 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 27.07.2020, 19:38

Hallo Tom,

danke für Deine schnelle Antwort. Dass ich auch die Spannung nach dem Step-Up-Wandler messen liegt daran, dass der VCC Knoten mit 3 möglichen Spannungsquellen und Spannungen versorgt wird, die über Schottkydioden voneinander getrennt sind:

1. Akkubetrieb mit Step-Up-Wandler: Vcc=3.7 Volt
2. Netzbetrieb mit Step-Down-Wandler 6V=>3.8V: Vcc=3.8 Volt
3. Solarzellenversorgung mit Step-up-Wandler: Vcc bis max 3.9V je nach Sonneneinstrahlung

Ich schaue mir das mit tmBattery.h mal an. Wenn das zu kompliziert wird, werde ich eine Hardwarelösung mit einem ADS1115 Wandler machen.
Das geht ziemlich einfach, kostet aber ein paar Euros.
Grüße

Ewald

jp112sdl
Beiträge: 5859
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 255 Mal
Danksagung erhalten: 515 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von jp112sdl » 27.07.2020, 19:40

FUEL4EP hat geschrieben:
27.07.2020, 19:38
mit einem ADS1115 Wandler machen.
Das geht ziemlich einfach, kostet aber ein paar Euros.
1,30 EUR... Hab grad erst für ein anderes Projekt welche benötigt :D

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

TomMajor
Beiträge: 1095
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 67 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von TomMajor » 27.07.2020, 19:57

FUEL4EP hat geschrieben:
27.07.2020, 19:38
Hallo Tom,

danke für Deine schnelle Antwort. Dass ich auch die Spannung nach dem Step-Up-Wandler messen liegt daran, dass der VCC Knoten mit 3 möglichen Spannungsquellen und Spannungen versorgt wird, die über Schottkydioden voneinander getrennt sind:

1. Akkubetrieb mit Step-Up-Wandler: Vcc=3.7 Volt
2. Netzbetrieb mit Step-Down-Wandler 6V=>3.8V: Vcc=3.8 Volt
3. Solarzellenversorgung mit Step-up-Wandler: Vcc bis max 3.9V je nach Sonneneinstrahlung

Ich schaue mir das mit tmBattery.h mal an. Wenn das zu kompliziert wird, werde ich eine Hardwarelösung mit einem ADS1115 Wandler machen.
Das geht ziemlich einfach, kostet aber ein paar Euros.
ist auf jeden Fall ein nettes Projekt. Konzept mit den 3 Quellen über Dioden gekoppelt finde ich auch gut.
Mit den 6..7mA muss man wohl aber auf Netz gehen wenn das länger laufen soll.
Was hast du denn für den Sensor gezahlt?

Ich kann dir gern bei Gelegenheit einen Vorschlag für die 2. Sp.messung in der Batt.klasse machen wenn es nicht super dringend ist..
Viele Grüße,
Tom

FUEL4EP
Beiträge: 104
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 18 Mal
Danksagung erhalten: 10 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 27.07.2020, 20:49

Hallo Tom,

den SCD30 Sensor kaufte ich für 59,90 Euro.

Danke für Dein Angebot, eine neue Batterieklasse zu erstellen. Da ich die das Akkuladereglermodul noch validieren muss, ist das nicht so eilig .. Für die Module aus China gibt es ja nur äußerst dürftige, wenn überhaupt Dokumentation.
Grüße

Ewald

FUEL4EP
Beiträge: 104
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 18 Mal
Danksagung erhalten: 10 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 28.07.2020, 19:29

Hi Jérôme,

Deine Anleitung zu Beseitigen der eckigen Klammern im WebUI hat funktioniert :P
SCD30_CO2_Sensor_3.png
SCD30_CO2_Sensor_3.png (20.24 KiB) 288 mal betrachtet
Hier der verwendete Install-Skript (mit extra Suffix '.txt' fürs Hochladen)
install_hb-uni-sensor-CO2-SCD30.txt
(2.89 KiB) 15-mal heruntergeladen
Vielen Dank nochmals!
Grüße

Ewald

TomMajor
Beiträge: 1095
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 67 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von TomMajor » 28.07.2020, 19:58

an dieser Stelle der Hinweis dass die Beseitigung der eckigen Klammern durch das Patchen der Language files nur fürs WebUI ist, der Datenpunkt im ioBroker wird immer noch CO2 heißen.
Viele Grüße,
Tom

FUEL4EP
Beiträge: 104
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 18 Mal
Danksagung erhalten: 10 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 31.07.2020, 16:53

Hallo Tom,

als alternative Lösung implementierte ich inzwischen die Spannungsmessung der Akkumulatorbatterie und der VCC Betriebsspannung mit einer Hardwarelösung mit dem ADC ADS1115:
SCD30_CO2_Sensor_von_unten.png
Der ADC ist mittels eines 3D Druckteils von unten an die HB-UNI-SEN-BATT Platine von Alexander Reinert aufgeklebt und im 'Freiflug' verdrahtet.
Rechts daneben ist der Step-Up Konverter, der aus der Akkumulatorbatteriespannung die VCC Betriebsspannung von nominal 3.7 V macht. Dort sieht man auch die Schottkydiode zur gemeinsamen Speisung auf den VCC Knoten mit unterschiedlichen Spannungsniveaus.

Die Messung mit dem ADC funktioniert bereits, hier der Verlauf der CO2 Konzentration im Schlafzimmer:
WebUI_2.png
Der ADC verwendet eine 0.5 Spannungsteiler für die Messung der Akkumulatorbatteriespannung und der VCC Spannung des Arduinos 328P.

In dem dargestellten Betriebsmodus speist die Solarzelle mit ca. 3.85V ein. Die Messung mit dem internen ADC ist zu klein und scheint einen Anschlag von 3.74V zu haben. Woran kann das liegen? 3.85 V sind mit einem Multimeter gemessen.

Hier die Aussenansicht des CO2 Sensors:
SCD30_CO2_Sensor_Aussenansicht.png
Hier die aufgeklappte Ansicht von Ober- und Unterteil:
SCD30_CO2_Sensor_aufgeklappt.png
Hier die drei Einzelteile vor dem Zusammenbau:
SCD30_CO2_Sensor_Einzelteile.png
Das alles zuerst mal als erste Anregung und Diskussiongrundlage. Der Sensor ist noch in der Validierungsphase und hat z.Z. noch Prototypencharakter.
Die Grundfunktionen gehen schon, hier der Verlauf der CO2 Konzentration im Schlafzimmer während der Nacht:
CO2 Histogram.png
Die 3D Druck Teile gibt es als STL Files unter

https://www.thingiverse.com/thing:4557749

Den Arduino Sketch und Dein modifiziertes Addon steht zur Diskussion unter

https://github.com/FUEL4EP/SmartHome/tr ... -CO2_SCD30 im Branch HB-UNI-Sensor1-CO2_SCD30

Wahrscheinlich habe ich die Codierung nicht im Sinne Deiner Struktur gemacht. Für Anregungen, wie ich es passender machen könnte, bin ich dankbar.

Der ADC ADS1115 ist im Code HB-UNI-Sensor1-CO2_SCD30.ino per '#define ADS1115' zugeschaltet.
Auch die Low-Voltage Detektion habe ich separat versuchsweise implementiert.

Ein Schaltbild für die Verschaltung der Module wird später folgen.

Zuerst wäre für mich mal von Interesse, warum die interne Spannungsmessung OPERATING_VOLTAGE nach oben begrenzt zu sein scheint.

Deine angebotene extra Batterieklasse kann zuerst mal warten. Danke nochmals für das Angebot.

Fragen, Anregungen und Kommentare sind willkommen.

P.S.: Laut einer Pressemeldung soll die CO2 Konzentration in Räumen ein guter Indikator für die Aerosolbildung mit Coronaviren sein.
Zuletzt geändert von FUEL4EP am 31.07.2020, 20:39, insgesamt 2-mal geändert.
Grüße

Ewald

Antworten

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