NDIR CO2 Sensor mit Sensirion SCD30

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

Moderator: Co-Administratoren

jp112sdl
Beiträge: 6444
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 306 Mal
Danksagung erhalten: 621 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von jp112sdl » 31.07.2020, 17:04

Ich habe beim HB-UNI-Sen-CURRENT mich viel mit dem ADS1115 beschäftigt.
FUEL4EP hat geschrieben:
31.07.2020, 16:53
Die Messung mit dem internen ADC ist zu klein und scheint einen Anschlag von 3.74V zu haben.
https://www.ti.com/lit/ds/symlink/ads1114.pdf
Seite 6
Bildschirmfoto 2020-07-31 um 17.04.04.png
Am analogen Eingang können max. VDD+0.3V anliegen.
Wenn du den ADS1115 mit 3.3V versorgst, ist bei 3.6V (bisschen Toleranz noch) schluss.

VG,
Jérôme ☕️

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

PN sind deaktiviert!

FUEL4EP
Beiträge: 123
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 20 Mal
Danksagung erhalten: 12 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 31.07.2020, 17:12

Hallo Jérôme,

zur Spannungsmessung mit den ADS1115 verwende ich eine 1:2 Spannungsteiler (Teilerfaktor 0.5, R1=R2=47kOhm). Damit ergeben sich bei max. 4V Eingangsspannung maximal 2V am ADC Eingang. Versorgungsspannung des ADS1115 ist 3.7V .. 3.9V, je nach Einspeisungsquelle. Also alles gut :P

Die Limitation ergibt sich bei der Messung mit dem internen ADC der 328P MCU:

Code: Alles auswählen

typedef AskSin<LedType, BAT_SENSOR, RadioType> BaseHal;
...
batteryVoltage1000 = device().battery().current();    // BatteryTM class, mV resolution
Wahrscheinlich müsste ich hier auch einen Spannungsteiler verwenden. Nur durchdringe ich Tom's Batterieklasse noch nicht vollständig.
Grüße

Ewald

jp112sdl
Beiträge: 6444
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 306 Mal
Danksagung erhalten: 621 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von jp112sdl » 31.07.2020, 17:20

Ah okay. Dann hatte ich das Missverstanden.

Ich habe mich bei meinen Versuchen mit dem ADS1115 nämlich gewundert, obwohl trotz 6.144V Range bei ~4V Feierabend war und dann nur noch 0 ausgegeben wurde :D

VG,
Jérôme ☕️

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

PN sind deaktiviert!

TomMajor
Beiträge: 1144
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 78 Mal
Danksagung erhalten: 207 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von TomMajor » 31.07.2020, 18:23

also wenn du sowie so extra Code und HW für den ADS1115 betreibst kannst du das was ich für die Batt.klasse schrieb, erst mal ausblenden. Ich hatte nur an eine interne Lösung gedacht, den vorhanden Code für die Messung einfach zu duplizieren für einen 2. ADC input.

Läuft dein AVR mit 3,3V? Dann brauchst du einen Spannungsteiler wenn du mehr als 3,3V auf den ADC input geben willst. Und dann kannst du papas native AskSinPP Klasse BatterySensorUni nehmen, glaub ich zumindest.
Viele Grüße,
Tom

FUEL4EP
Beiträge: 123
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 20 Mal
Danksagung erhalten: 12 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 31.07.2020, 18:29

Hallo Tom,

danke für Deine Antwort.
TomMajor hat geschrieben:
31.07.2020, 18:23
also wenn du sowie so extra Code und HW für den ADS1115 betreibst kannst du das was ich für die Batt.klasse schrieb, erst mal ausblenden. Ich hatte nur an eine interne Lösung gedacht, den vorhanden Code für die Messung einfach zu duplizieren für einen 2. ADC input.

Läuft dein AVR mit 3,3V? Dann brauchst du einen Spannungsteiler wenn du mehr als 3,3V auf den ADC input geben willst. Und dann kannst du papas native AskSinPP Klasse BatterySensorUni nehmen, glaub ich zumindest.
Mein AVR läuft mit einer VCC Spannung von 3.7..3.9V. Die ADC Eingangsspannung ist VCC. Also brauch ich wohl auch dafür einen Spannungsteiler. Gibt es gutes Beispiel zur Verwendung von BatterySensorUni mit Spannungsteiler?
Grüße

Ewald

jp112sdl
Beiträge: 6444
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 306 Mal
Danksagung erhalten: 621 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von jp112sdl » 31.07.2020, 18:42


VG,
Jérôme ☕️

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

PN sind deaktiviert!

TomMajor
Beiträge: 1144
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 78 Mal
Danksagung erhalten: 207 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von TomMajor » 01.08.2020, 00:12

FUEL4EP hat geschrieben:
31.07.2020, 18:29
Hallo Tom,

danke für Deine Antwort.
TomMajor hat geschrieben:
31.07.2020, 18:23
also wenn du sowie so extra Code und HW für den ADS1115 betreibst kannst du das was ich für die Batt.klasse schrieb, erst mal ausblenden. Ich hatte nur an eine interne Lösung gedacht, den vorhanden Code für die Messung einfach zu duplizieren für einen 2. ADC input.

Läuft dein AVR mit 3,3V? Dann brauchst du einen Spannungsteiler wenn du mehr als 3,3V auf den ADC input geben willst. Und dann kannst du papas native AskSinPP Klasse BatterySensorUni nehmen, glaub ich zumindest.
Mein AVR läuft mit einer VCC Spannung von 3.7..3.9V. Die ADC Eingangsspannung ist VCC. Also brauch ich wohl auch dafür einen Spannungsteiler. Gibt es gutes Beispiel zur Verwendung von BatterySensorUni mit Spannungsteiler?
Hmm, dann sollte es aber passen. Wollte nur ausdrücken das Vinadc nicht größer als Vcc/AVcc sein darf.
Dann sollte auf den ersten Blick auch tmBattery gehen. Habe dort keine Begrenzung auf 3.7V drin von der ich weiß :wink:
AVcc ist gleich Vcc?
Eventuell nur ein Meßfehler weil das Multimeter nicht so schnell ist wie deine Spannung sich ändert?
Viele Grüße,
Tom

FUEL4EP
Beiträge: 123
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 20 Mal
Danksagung erhalten: 12 Mal

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von FUEL4EP » 01.08.2020, 14:48

Hallo Tom,

die Erklärung der Abweichungen von interner MCU ADC Spannungsmessung und dem externen ADC ADS1115 ist verblüffend einfach:

Die interne Spannungsüberwachung tastet die Spannung nur alle 12 Stunden ab:

Code: Alles auswählen

class Hal : public BaseHal {
public:
    void init(const HMID& id)
    {
        BaseHal::init(id);
#ifdef USE_CC1101_ALT_FREQ_86835
      radio.initReg(CC1101_FREQ2, 0x21);
      radio.initReg(CC1101_FREQ1, 0x65);
      radio.initReg(CC1101_FREQ0, 0x72);
      //0x216572 868.303 MHz
#endif
#ifdef CLOCK_RTC
        rtc.init();    // init real time clock - 1 tick per second
#endif
        // measure battery every 12h
        battery.init(seconds2ticks(12UL * 60 * 60), CLOCK);
        battery.low(BAT_VOLT_LOW);
        battery.critical(BAT_VOLT_CRITICAL);
#ifdef ADS1115
        ads.begin();
        ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
        ads.begin();
#endif
    }

    bool runready() { return CLOCK.runready() || BaseHal::runready(); }
} hal;
Der externe ADC ADS1115 dagegen in jeder Messperiode von 240 Sekunden.

Daher ist der interne ADC Wert in der Regel nicht aktuell kann mehrere Stunden zurückliegen.

Ausserdem sind die ADC Auflösungen sehr unterschiedlich:

a) interner ADC 10 Bit: ~4 mV
b) ADS1115 ADC 16 Bit mit 1:2 Spannungsteiler und PGA Gain=2: 0.0625mV * 2 =~ 0.125 mV

Also ist die interne ADC Welt wieder in Ordnung :P
Grüße

Ewald

jp112sdl
Beiträge: 6444
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 306 Mal
Danksagung erhalten: 621 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von jp112sdl » 01.08.2020, 15:00

Wenn du IrqInternalBatt nutzt wird kontinuierlich gemessen.

VG,
Jérôme ☕️

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

PN sind deaktiviert!

TomMajor
Beiträge: 1144
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 78 Mal
Danksagung erhalten: 207 Mal
Kontaktdaten:

Re: NDIR CO2 Sensor mit Sensirion SCD30

Beitrag von TomMajor » 01.08.2020, 15:33

ja, die "lange" Abtastung für die Batt.messung ist normalerweise ausreichend bei batteriebetriebenen Sensoren.
ich könnte bei Bedarf auch tmBattery so modifizieren dass wenn man will vor dem Senden an die Zentrale noch einmal die Messung anstößt um einen aktuellen Wert zu haben.
Viele Grüße,
Tom

Antworten

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