Skip to main content

Kalibracija nulte točke

Što ovaj primjer prikazuje​

Primjer calibrateSensor iz biblioteke dodaje vaš vlastiti nulti pomak svakom očitanju. Pokrenite ga na mjestu bez amonijaka i podešavajte customCalibration dok napon nakon kalibracije nije otprilike 0. Od tada isti pomak u vašoj skici čini da čisti zrak pokazuje upravo oko 0 ppm.

Primjer koristi predložak SENSOR_NH3, predložak biblioteke za ćeliju ove pločice, i prosljeđuje adresu 0x49 s GPIO 32 kao konfiguracijskim pinom.

Biblioteka komunicira s ATtiny404 mostom na pločici samo kada je adresa od 0x30 do 0x37. Svaka druga adresa, poput 0x49 koju ovaj primjer prosljeđuje, tumači se kao I2C adresa čipa ADS1115 s kojim biblioteka komunicira izravno, dok je konfiguracijski pin postavljen na nisku razinu tijekom konfiguriranja čipa LMP91000. Na ovoj pločici ADS1115 je spojen na pinove SDA2/SCL2 headera, do kojih Qwiic konektori ne dopiru, pa se ovaj primjer ne izvodi preko Qwiic kabela. Umjesto toga spojite kontroler 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 povezuju LMPEN na GND ili na GPIO pin. Na ovoj pločici LMPEN ostavite nespojenim: otpornik od 10 kΩ već ga povlači na GND, a na njega je spojen i ATtiny404.

Da biste vidjeli napone koje podešavate, otvorite datoteku biblioteke Electrochemical-Gas-Sensor-SOLDERED.h i uklonite // ispred ove linije:

#define ELECTROCHEMICAL_SENSOR_DEBUG

Kod primjera​

Select Board
calibrateSensor.ino
/**
**************************************************
*
* @file calibrateSensor.ino
* @brief See how to calibrate an electrochemical sensor
*
* To successfully run the sketch:
* - Uncomment the #define in the library header file
* - 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"

// This is the custom value we set for the calibration voltage
// This value is added to the voltage read from the ADC
// In an environment with 0 of the target gas, the voltage after calibration should be
// roughly 0, adjust customCalibration to get it to that value.
const double customCalibration = 0.05;


// Create the sensor object with the according type
ElectrochemicalGasSensor sensor(SENSOR_NH3, 0x49, 32);



void setup()
{
Serial.begin(115200); // For debugging

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

//Set the custom calibration value
sensor.setCustomZeroCalibration(customCalibration);

Serial.println("Sensor initialized successfully!");
}

void loop()
{
// Make the reading
double reading = sensor.getPPM();
// This function will also print debug messages if the #define in
// the header file of the library is uncommented
// It will print:
// - The raw voltage measurement
// - Voltage without reference value
// - Voltage after calibration
// These values can help you adjust the internal zero calibration



// 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!

Zatim svake 2,5 sekunde slijedi linija Sensor reading: s vrijednošću u ppm. Kada je linija za ispravljanje pogrešaka omogućena, svakom očitanju prethode Electrochemical gas sensor readings: i tri napona: Raw voltage measurement:, Voltage without reference value: i Voltage after calibration:, svaki u voltima.

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() prema adresi odabire način komunikacije s pločicom: od 0x30 do 0x37 koristi ATtiny404 most; svaka druga adresa koristi se kao vlastita I2C adresa čipa ADS1115.

ReturnsKonstruktor.

Parametri

ParametarTipOpis
_tsensorTypePredložak ćelije, ovdje SENSOR_NH3, predložak za ćeliju ove pločice.
_adcAddruint8_tAdresa, ovdje 0x49. Na ovoj pločici prekidač ADDRESS postavlja adresu mosta od 0x30 do 0x37.
_configPinintGPIO koji biblioteka postavlja na nisku razinu tijekom konfiguriranja čipa LMP91000 kada je adresa izvan raspona od 0x30 do 0x37, ovdje 32. Ne koristi se od 0x30 do 0x37.
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.

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

void setCustomZeroCalibration(double calibration)returns void

Postavlja napon koji getPPM() dodaje svakom očitanju nakon uklanjanja unutarnje nule ulaznog stupnja. Zamjenjuje internalZeroCalibration iz predloška, koji za SENSOR_NH3 iznosi 0.

ReturnsNišta.

Parametri

ParametarTipOpis
calibrationdoublePomak u voltima. Odaberite ga tako da napon nakon kalibracije bude oko 0 kada nema ciljanog plina.
double getPPM()returns double

Izvodi jedno očitanje i pretvara ga u ppm, uz primijenjen vaš kalibracijski pomak. Rezultat manji od nule vraća se kao 0.

ReturnsKoncentracija plina u ppm.

Sve zajedno​

Pomak pronađite jednom u čistom zraku s uključenim ispisom za ispravljanje pogrešaka, a zatim u svojoj skici nakon begin() pozovite setCustomZeroCalibration() s tom vrijednošću. Linију za ispravljanje pogrešaka ponovno zakomentirajte kada završite, kako bi vaša skica ispisivala samo ono što zatražite.