Očitajte koncentraciju plina
Što ovaj primjer prikazuje
Primjer bridgeBoard pokreće pločicu na njezinoj I2C adresi 0x30 i
ispisuje koncentraciju plina u PPM svakih 2,5 sekunde. Budući da je adresa u
rasponu od 0x30 do 0x37, biblioteka komunicira s ATtiny404 mikrokontrolerom na pločici, koji umjesto vas
konfigurira analogni ulazni stupanj LMP91000 i očitava ADS1115.
Primjer je napisan sa SENSOR_CO, predloškom biblioteke za ugljikov monoksid,
pa njegove PPM vrijednosti nisu vrijednosti za H2S. Nemojte ga bez izmjena prebaciti na
predložak SENSOR_H2S iz biblioteke: taj je predložak napisan za ćeliju SGX-4H2S-100
osjetljivosti 1200 nA po ppm, dok ova pločica ima ćeliju SGX-4H2S-300, čiji
tehnički list
navodi izlazni signal od 460 ± 140 nA po ppm. getPPM()
dijeli s osjetljivošću iz predloška, pa se sa SENSOR_H2S očitanje dobiva
oko 2,6 puta preniskim. Umjesto toga proslijedite prilagođenu vrstu senzora s postavkama SENSOR_H2S
i 460 nA po ppm, kao što prikazuje
Brzi početak.
Ako ste adresu pločice promijenili prekidačem ADDRESS, promijenite 0x30 tako da
odgovara.
Kôd primjera
// Include the required library
#include "Electrochemical-Gas-Sensor-SOLDERED.h"
ElectrochemicalGasSensor sensor(SENSOR_CO, 0x30);
void setup()
{
Serial.begin(115200); // For debugging
// Init the breakout
if (!sensor.begin())
{
// Can't init? Notify the user and go to infinite loop
Serial.println("ERROR: Can't init the sensor! Check connections and jumper address!");
while (true)
delay(100);
}
Serial.println("Sensor initialized successfully!");
}
void loop()
{
// Make the reading
double reading = sensor.getPPM();
// If PPB is more relevant for your sensor, you can use:
// double reading = sensor.getPPB();
// Print the reading with 5 digits of precision
Serial.print("Sensor reading: ");
Serial.print(reading, 5);
Serial.println(" PPM");
// Wait a bit before reading again
delay(2500);
}
Očekivani rezultat:
Sensor initialized successfully!
Zatim svakih 2,5 sekunde slijedi redak koji počinje sa Sensor reading:, s
koncentracijom u PPM na pet decimala. Ako pločica ne odgovori, skica
ispisuje ERROR: Can't init the sensor! Check connections and jumper address! i
zaustavlja se.
Korištene funkcije
ElectrochemicalGasSensor(sensorType _t, uint8_t _adcAddr = DEFAULT_ADC_ADDR, int _configPin = -1)returns noneStvara objekt senzora. Vrsta senzora sadrži postavke ulaznog stupnja i pretvorbe za jednu plinsku ćeliju. Adresa određuje kako begin() komunicira s pločicom: adresa od 0x30 do 0x37 ide preko ATtiny404 na pločici; svaka druga adresa, primjerice zadana 0x49, ide na ADS1115 na toj adresi i izravno na LMP91000.
ReturnsKonstruktor.
Parametri
| Naziv | Tip | Opis |
|---|---|---|
_t | sensorType | Predložak iz biblioteke: SENSOR_CO, SENSOR_NO2, SENSOR_SO2, SENSOR_O3, SENSOR_NO, SENSOR_H2S, SENSOR_NH3 ili SENSOR_CL2. Ili prilagođeni sensorType. SENSOR_H2S je napisan za ćeliju SGX-4H2S-100 (1200 nA po ppm) i s ćelijom SGX-4H2S-300 ove pločice (460 ± 140 nA po ppm u njezinu tehničkom listu) očitava oko 2,6 puta prenisko: proslijedite prilagođenu vrstu s 460 nA po ppm. |
_adcAddr | uint8_t | Adresa s kojom begin() komunicira. Ovaj primjer prosljeđuje 0x30, adresu ATtiny404 (prekidač ADDRESS postavlja 0x30 do 0x37). Zadana vrijednost je 0x49. |
_configPin | int | GPIO koji biblioteka drži u visokom stanju i povlači u nisko dok izravno konfigurira LMP91000. Zanemaruje se na adresama od 0x30 do 0x37. Ovaj primjer ga izostavlja (-1, nema). |
bool begin()returns boolPokreće I2C i prema adresi odabire način komunikacije s pločicom. S adresom od 0x30 do 0x37 provjerava odgovara li ATtiny404 na pločici i šalje mu pojačanje ADC-a iz vrste senzora s najsporijom brzinom podataka; svaka naredba čeka odgovor do 500 ms. Sa svakom drugom adresom pokreće ADS1115 na toj adresi s istim pojačanjem i brzinom podataka. U oba slučaja zatim konfigurira ulazni stupanj LMP91000. Pozovite je jednom prije očitavanja.
Returnstrue kada su svi koraci uspjeli, false kada pločica nije odgovorila ili je prijavila pogrešku.
double getPPM()returns doubleOčitava ADC preko pločice, oduzima unutarnju nulu ulaznog stupnja (2,5 V puta njezin postotak), dodaje kalibraciju nule, zatim dijeli s pojačanjem pojačala i s osjetljivošću ćelije u nA po ppm iz vrste senzora. Rezultat manji od 0 vraća se kao 0.
ReturnsKoncentracija plina u PPM.
double getPPB()returns doubleAlternativa u primjeru koja je pretvorena u komentar: očitava vrijednost pomoću getPPM() i množi je s 1000.
ReturnsKoncentracija plina u PPB.
Sve zajedno
Napravite jedan ElectrochemicalGasSensor s predloškom senzora i adresom pločice,
jednom pozovite begin() u setup(), a zatim pozovite getPPM() kad god želite
očitanje. Za više pločica na jednoj sabirnici svakoj dodijelite drugu adresu
njezinim prekidačem ADDRESS i napravite po jedan objekt za svaku adresu.