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
// 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:
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 noneStvara 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
| 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. Za ćeliju ove pločice proslijedite prilagođeni s 460 nA po ppm. |
_adcAddr | uint8_t | Adresa s kojom begin() komunicira. Ovaj primjer je izostavlja pa se koristi zadana, 0x49 (DEFAULT_ADC_ADDR). |
_configPin | int | GPIO 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 boolPokreć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 doubleAlternativa 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.