Skip to main content

Očitavanje klora

Što ovaj primjer prikazuje​

Primjer bridgeBoard iz biblioteke pokreće pločicu na njezinoj zadanoj adresi, 0x30, i svake 2,5 s ispisuje koncentraciju plina u ppm. To je isti primjer kao u Brzom početku.

Primjer stvara senzor s SENSOR_CO, unaprijed postavljenim profilom za ugljikov monoksid. Biblioteka izračunava ppm iz osjetljivosti i postavki pojačanja tog profila; profil za kloridnu ćeliju ove pločice je SENSOR_CL2.

Kôd primjera​

Komentari u primjeru kažu da se adresa postavlja jumperima na stražnjoj strani pločice i da je LMPEN čvrsto spojen na GND. Na ovoj pločici adresu (zadano 0x30) postavlja prekidač ADDRESS na gornjoj strani. Otpornik od 10 kΩ drži LMPEN na niskoj razini i spojen je na ATtiny404, zato ga ostavite nespojenim (pogledajte Detalji o hardveru).

Select Board
bridgeBoard.ino
/**
**************************************************
*
* @file bridgeBoard.ino
* @brief See how to init a sensor on the new ATtiny404 bridge board revision,
*
* To successfully run the sketch:
* - Set the desired address using the jumpers on the back of the board
* (address = 0x30 + jumper offset, giving a range of 0x30-0x37)
* - Run the sketch and open serial monitor at 115200 baud!
*
* Note: on this board revision, LMPEN is hardwired to GND, so there's
* no configPin argument to pass - the constructor's third argument
* is ignored whenever the address falls in the bridge range (0x30-0x37).
*
*
* @authors @ soldered.com
***************************************************/

// Include the required library
#include "Electrochemical-Gas-Sensor-SOLDERED.h"

// Any additional boards on the same bus just need a different jumper setting
// (0x30-0x37), same as twoSensors.ino does for legacy boards with 0x49/0x4A/0x4B.
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 svake 2,5 s slijedi redak: Sensor reading: , koncentracija u ppm s pet decimala i PPM. 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 ElectrochemicalGasSensor

Stvara objekt senzora. Sprema samo postavke; ništa se ne šalje pločici dok se ne pozove begin().

ReturnsObjekt senzora.

Parametri

TipNazivOpis
sensorType_tProfil ćelije. Primjer prosljeđuje SENSOR_CO; SGX-4CL2 ćelija ove pločice ima profil SENSOR_CL2.
uint8_t_adcAddrI2C adresa, DEFAULT_ADC_ADDR (0x49) ako se izostavi. Za adresu od 0x30 do 0x37, raspon prekidača ADDRESS ove pločice, begin() komunicira s ATtiny404 na pločici; primjer prosljeđuje 0x30, zadanu adresu pločice. Za bilo koju drugu adresu begin() traži ADS1115 na toj adresi i LMP91000 izravno na sabirnici.
int_configPinGPIO koji begin() postavlja na nisku razinu dok izravno konfigurira LMP91000. -1 (nijedan) ako se izostavi. Ne koristi se za adrese od 0x30 do 0x37.
bool begin()returns bool

Pokreće Wire, provjerava odgovara li pločica, šalje joj ADC pojačanje i brzinu podataka iz profila te konfigurira LMP91000 postavkama pojačanja, opterećenja, reference, nule i pristranosti iz profila. Pozovite ga jednom u setup() prije očitavanja. Svaka razmjena s pločicom čeka odgovor do 500 ms.

Returnstrue ako je pločica odgovorila i oba koraka konfiguracije uspjela, inače false.

double getPPM()returns double

Obavlja jedno očitanje i pretvara ga u ppm: oduzima unutarnji napon nule (referenca od 2,5 V pomnožena unutarnjim postotkom nule iz profila), dodaje kalibraciju nule, dijeli s pojačanjem pojačala i s osjetljivošću profila u nA po ppm. Rezultat ispod nule vraća se kao 0.

ReturnsKoncentracija plina u ppm.

double getPPB()returns double

Isto očitanje kao getPPM(), pomnoženo s 1000. Primjer ga prikazuje u komentaru kao alternativu za getPPM().

ReturnsKoncentracija plina u ppb.

Primjer koristi i Serial i delay(), koji dolaze s Arduino jezgrom, a ne s ovom bibliotekom.

Sve zajedno​

begin() obavlja cijelo postavljanje, pa loop() samo poziva getPPM() i ispisuje rezultat. Za očitanje u ppb umjesto toga zamijenite redak getPPM() retkom getPPB() iz komentara ispod njega.