Skip to main content

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​

Select Board
bridgeBoard.ino
// 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:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
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 none

Stvara 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

NazivTipOpis
_tsensorTypePredlož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.
_adcAddruint8_tAdresa s kojom begin() komunicira. Ovaj primjer prosljeđuje 0x30, adresu ATtiny404 (prekidač ADDRESS postavlja 0x30 do 0x37). Zadana vrijednost je 0x49.
_configPinintGPIO 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 bool

Pokreć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 double

Oč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 double

Alternativa 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.