Skip to main content

Očitavanje koncentracije plina

Što prikazuje ovaj primjer​

Primjer bridgeBoard iz biblioteke pokreće pločicu preko njezina ATtiny404 mosta i svake 2,5 sekunde ispisuje koncentraciju plina u ppm. Senzor stvara na adresi 0x30, na kojoj se ova pločica javlja dok ne pomaknete njezin prekidač ADDRESS.

Primjer stvara senzor s SENSOR_CO, predloškom biblioteke za ugljikov monoksid. SENSOR_NH3 je predložak biblioteke za SGX-4NH3 ćeliju ove pločice: 40 nA po ppm, pojačanje pojačala od 35 kΩ i ADC-ov raspon od 4,096 V. Pretvorba u ppm koristi osjetljivost iz predloška: 70 nA/ppm za SENSOR_CO, 40 nA/ppm za SENSOR_NH3. Zato očitanja primjera u isporučenom obliku nisu ppm amonijaka. Za očitavanje amonijaka zamijenite SENSOR_CO s SENSOR_NH3 u retku koji stvara senzor.

Komentari u primjeru kažu da se adresa postavlja jumperima na stražnjoj strani pločice. Na ovoj pločici adresa se postavlja prekidačem ADDRESS s tri položaja. Adrese 0x49/0x4A/0x4B iz komentara su adrese ADS1115, a ne adrese na kojima se ova pločica javlja. Gdje komentari kažu da je LMPEN čvrsto spojen na GND, na ovoj pločici ga na GND povlači otpornik od 10 kΩ: ostavite ga nespojenim.

Kod primjera​

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!

Nakon toga svake 2,5 sekunde slijedi redak koji počinje s Sensor reading:, s koncentracijom u ppm na pet decimala.

Korištene funkcije​

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

Stvara objekt senzora. begin() na temelju adrese odabire način komunikacije s pločicom: od 0x30 do 0x37 koristi ATtiny404 most; svaka druga adresa koristi se kao vlastita I2C adresa ADS1115. Ako izostavite adresu, koristi se DEFAULT_ADC_ADDR, 0x49.

ReturnsKonstruktor.

Parametri

ParametarTipOpis
_tsensorTypePredložak ćelije. SENSOR_NH3 je predložak za ćeliju ove pločice.
_adcAddruint8_tAdresa. Ovaj primjer prosljeđuje 0x30, adresu pločice u isporučenom stanju; prekidač ADDRESS postavlja je od 0x30 do 0x37.
_configPinintGPIO koji biblioteka postavlja u nisko stanje dok konfigurira LMP91000 kada je adresa izvan raspona od 0x30 do 0x37. Ne koristi se od 0x30 do 0x37. Zadano -1, bez pina.
bool begin()returns bool

Pokreće I2C. S adresom od 0x30 do 0x37 provjerava odgovara li most i šalje mu postavke ADC-a iz predloška; s bilo kojom drugom adresom izravno pokreće ADS1115 na toj adresi. Zatim konfigurira analogni ulazni stupanj LMP91000. Pozovite ga jednom prije bilo kojeg očitanja.

Returnstrue kada su svi koraci uspjeli. false kada most nije odgovorio s OK u roku od 500 ms ili je prijavio grešku, kada pokretanje ADS1115 nije uspjelo ili kada konfiguriranje analognog ulaznog stupnja nije uspjelo.

double getPPM()returns double

Uzima jedno očitanje ADC-a, uklanja unutarnju nulu ulaznog stupnja, dodaje kalibraciju nule i pretvara struju ćelije u ppm s osjetljivošću iz predloška. Rezultat manji od nule vraća se kao 0.

ReturnsKoncentracija plina u ppm.

double getPPB()returns double

Isto očitanje kao getPPM(), u dijelovima na milijardu. Primjer ga prikazuje u komentaru kao alternativu.

ReturnsgetPPM() pomnožen s 1000.

Sve zajedno​

Stvorite senzor s predloškom i adresom prekidača, jednom pozovite begin() u setup(), a zatim pozovite getPPM() kad god želite očitanje. Ako begin() vrati false, najprije provjerite kabel i adresu.