Skip to main content

Očitanje jednog senzora

Što prikazuje ovaj primjer​

Primjer singleSensor iz biblioteke stvara jedan senzor, pokreće ga i svakih 2,5 sekunde ispisuje koncentraciju plina u ppm.

Primjer stvara senzor pomoću SENSOR_CO, predloška biblioteke za ugljikov monoksid, i bez adrese, pa se koristi zadana adresa biblioteke. SENSOR_NH3 je predložak biblioteke za ćeliju SGX-4NH3 na ovoj pločici, a pretvorba u ppm koristi osjetljivost 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. Da biste očitali amonijak, u retku koji stvara senzor promijenite SENSOR_CO u SENSOR_NH3.

Biblioteka komunicira s ATtiny404 mostom na pločici kada je adresa od 0x30 do 0x37, a za svaku drugu adresu izravno s ADS1115 na toj adresi, kao što je zadana adresa 0x49 koju koristi ovaj primjer. Na ovoj pločici ADS1115 je na pinovima SDA2/SCL2 headera, do kojih Qwiic konektori ne dopiru, pa se ovaj primjer ne izvodi preko Qwiic kabela. Umjesto toga kontroler spojite na header: 3,3 V na 3V3, GND na GND, SDA na SDA2 i SCL na SCL2. Primjer se tada izvodi onako kako je napisan, bez promjene adrese.

Komentari u primjeru spajaju LMPEN na GND ili na GPIO pin. Na ovoj pločici LMPEN ostavite nespojen: otpornik od 10 kΩ već ga povlači na GND, a na njega je spojen i ATtiny404.

Kôd primjera​

Select Board
singleSensor.ino
/**
**************************************************
*
* @file singleSensor.ino
* @brief See how to init one sensor and make a simple reading of PPM of gas.
*
* To successfully run the sketch:
* - Connect LMPEN pin to GND or a GPIO pin so the breakout can be configured
* - Run the sketch and open serial monitor at 115200 baud!
*
* @authors Robert @ soldered.com
***************************************************/

// 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);
}

Serijski monitor prikazuje:

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.

Ako begin() vrati false, primjer umjesto toga 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. 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. Izostavljanje adrese, kao u ovom primjeru, koristi DEFAULT_ADC_ADDR, 0x49.

ReturnsKonstruktor.

Parametri

ParametarTipOpis
_tsensorTypePredložak ćelije. SENSOR_NH3 je predložak za ćeliju ove pločice.
_adcAddruint8_tAdresa. Zadano DEFAULT_ADC_ADDR (0x49). Na ovoj pločici prekidač ADDRESS postavlja adresu mosta 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 ADC postavke iz predloška; s bilo kojom drugom adresom izravno pokreće ADS1115 na toj adresi. Zatim konfigurira analogni ulazni stupanj LMP91000. Pozovite je jednom prije bilo kojeg očitanja.

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

double getPPM()returns double

Izvodi jedno ADC očitanje, uklanja unutarnju nulu ulaznog stupnja, dodaje kalibraciju nule i pretvara struju ćelije u ppm pomoću osjetljivosti predloška. Rezultat ispod 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ženo s 1000.

Sve zajedno​

Stvorite senzor s predloškom, jednom pozovite begin() u setup(), a zatim pozovite getPPM() ili getPPB() kad god želite očitanje. Ako begin() vrati false, primjer ispisuje pogrešku i zaustavlja se.