Skip to main content

Očitavanje jednog senzora

Što prikazuje ovaj primjer​

Primjer singleSensor stvara jedan senzor na zadanoj adresi biblioteke, 0x49, pokreće ga i ispisuje koncentraciju plina u PPM-u svakih 2,5 sekunde.

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. S predloškom SENSOR_H2S očitanje je oko 2,6 puta preniskо. Umjesto toga proslijedite prilagođeni tip senzora s postavkama SENSOR_H2S i 460 nA po ppm, kao što prikazuje Brzi početak.

Kôd primjera​

Select Board
singleSensor.ino
// Include the required library
#include "Electrochemical-Gas-Sensor-SOLDERED.h"

// Configurations for each of the sensor types are in sensorConfigData.h in the library's 'src' folder
// Create the sensor object with the according type
ElectrochemicalGasSensor sensor(SENSOR_CO);

// If you are using a custom I2C address (for multiple sensors) use:
// ElectrochemicalGasSensor sensor(SENSOR_SO2, 0x4B, 5);
// For more details on this, see customAddress.ino

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!");
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 svake 2,5 sekunde slijedi redak koji počinje s Sensor reading:, s koncentracijom u PPM-u na pet decimala. Ako senzor ne odgovori, skica ispisuje ERROR: Can't init the sensor! Check connections! i zaustavlja se.

Korištene funkcije​

ElectrochemicalGasSensor(sensorType _t, uint8_t _adcAddr = DEFAULT_ADC_ADDR, int _configPin = -1)returns none

Stvara objekt senzora. Tip 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, poput zadane 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. Za ćeliju ove pločice proslijedite prilagođeni s 460 nA po ppm.
_adcAddruint8_tAdresa s kojom begin() komunicira. Ovaj primjer je izostavlja pa se koristi zadana, 0x49 (DEFAULT_ADC_ADDR).
_configPinintGPIO koji biblioteka drži u visokom stanju i povlači u nisko dok izravno konfigurira LMP91000. Ignorira se za adrese od 0x30 do 0x37. Ovaj primjer ga izostavlja (-1, nema).
bool begin()returns bool

Pokreće I2C i na temelju adrese bira 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 tipa 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 kad su svi koraci uspjeli, inače false.

double getPPM()returns double

Čita ADC, 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 tipa senzora. Rezultat manji od 0 vraća se kao 0.

ReturnsKoncentracija plina u PPM-u.

double getPPB()returns double

Alternativa iz primjera koja je zakomentirana: očitava vrijednost funkcijom getPPM() i množi je s 1000.

ReturnsKoncentracija plina u PPB-u.

Sve zajedno​

Stvorite jedan ElectrochemicalGasSensor s tipom senzora, jednom pozovite begin() u setup(), a zatim pozovite getPPM() ili getPPB() kad god želite očitanje.