• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
BME680 wzór przeliczania gas (kOhms) na AIQ
#1
Witam może ktoś poda mi jak przeliczyć odczyt "gas" czujnika BME680 na jakość powietrza. Czytam specyfikację ale nic nie kapuje. Jakieś szkice które wyliczają jakość powietrza nie mogę rozkminić Smile. Może ktoś ma już rozpracowane. Chcę przeliczyć te dane z takiego gotowego szkicu.



#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME680 bme; // I2C
//Adafruit_BME680 bme(BME_CS); // hardware SPI
//Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println(F("BME680 test"));

  if (!bme.begin()) {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }

  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
  if (! bme.performReading()) {
    Serial.println("Failed to perform reading Sad");
    return;
  }
  Serial.print("Temperatura = ");
  Serial.print(bme.temperature);
  Serial.println(" *C");

  Serial.print("Cisnienie = ");
  Serial.print(bme.pressure / 100.0);
  Serial.println(" hPa");

  Serial.print("Wilgotnosc = ");
  Serial.print(bme.humidity);
  Serial.println(" %");

  Serial.print("Wysokosc = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Gas = ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" KOhms");

  Serial.println();
  delay(5000);
}



Układ mam na D1 ESP8266 i PME 680 I2C
Program to jeden z nielicznych który dał się wgrać i działa.

Przykładowe odczyty:

Temperature = 24.94 *C
Pressure = 992.78 hPa
Humidity = 31.18 %
Gas = 128.55 KOhms
Approx. Altitude = 171.84 m

Temperature = 24.94 *C
Pressure = 992.76 hPa
Humidity = 31.19 %
Gas = 129.44 KOhms
Approx. Altitude = 172.01 m
 
Odpowiedź
#2
Ta biblioteka zwraca raczej gotowe wartości 0-500, no jak są jakieś /100 to może dlatego że wynik jest dokładniejszy, a nikogo nie interesuje Pa tylko hPa czy przez 1000 dla IAQ. Co innego, że każdy czujnik kłamie i wymaga kalibracji/wzorcowania okresowo, a już te od jakości gazu to w szczególności, jak tam zajrzałem do środka to jest kilkadziesiąt parametrów do kalibracji. Dlatego pewnie jednostką jest kOhms, interpretację zostawiając użytkownikom.
Możesz sobie nachuchać do pudełka (pooddychać na obiegu zamkniętym, byle nie pluć na czujnik, bo go uszkodzisz), potem iść gdzieś na łąkę wiosną z dala od ludzi i porównać wyniki - taka domowa kalibracja. Do tego dorób skalę z zieloną, żółtą i czerwoną buźką i gotowe. Jak chcesz to mieć w IAQ i miałoby to coś robić to i tak musisz zrobić wzorcowanie, każdy egzemplarz może pokazywać co innego, a po miesiącu/roku znowu się rozjadą.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości