Einzelner Sensor
Was dieses Beispiel zeigt
Das Beispiel singleSensor der Bibliothek erstellt einen Sensor nur mit einem Preset, sodass Adresse und Pin ihre Standardwerte behalten, und gibt die Konzentration in ppm alle 2,5 s aus.
Das Beispiel erstellt den Sensor mit SENSOR_CO, dem Preset für Kohlenmonoxid.
Die Bibliothek berechnet ppm aus den Empfindlichkeits- und Verstärkungseinstellungen des Presets; das
Preset für die Chlorzelle dieses Boards ist SENSOR_CL2.
Der Beispielcode
/**
**************************************************
*
* @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);
}
Der Kommentar im Kopf verlangt, dass LMPEN angeschlossen wird. Auf diesem Board hält ein 10-kΩ-Widerstand
LMPEN auf Low und es ist mit dem ATtiny404 verbunden, sodass Sie es unverbunden lassen
(siehe die Pin-Tabelle unter
Hardware-Details).
Erwartetes Ergebnis:
Sensor initialized successfully!
Danach folgt alle 2,5 s eine Zeile: Sensor reading: , die Konzentration in ppm mit fünf
Nachkommastellen und PPM. Schlägt begin() fehl, gibt der Sketch
ERROR: Can't init the sensor! Check connections! aus und hält an.
Verwendete Funktionen
ElectrochemicalGasSensor(sensorType _t, uint8_t _adcAddr = DEFAULT_ADC_ADDR, int _configPin = -1)returns ElectrochemicalGasSensorErstellt das Sensorobjekt. Es speichert nur die Einstellungen; an das Board wird nichts gesendet, bis begin() aufgerufen wird.
ReturnsDas Sensorobjekt.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
sensorType | _t | Das Zellen-Preset. Das Beispiel übergibt SENSOR_CO; die SGX-4CL2-Zelle dieses Boards hat das Preset SENSOR_CL2. |
uint8_t | _adcAddr | Die I2C-Adresse, DEFAULT_ADC_ADDR (0x49), wenn sie weggelassen wird, wie im Beispiel. Bei einer Adresse von 0x30 bis 0x37, dem Bereich des ADDRESS-Schalters dieses Boards, kommuniziert begin() mit dem ATtiny404 des Boards; bei jeder anderen Adresse sucht es unter dieser Adresse nach einem ADS1115 und direkt am Bus nach dem LMP91000. |
int | _configPin | Ein GPIO, den begin() auf Low setzt, während es den LMP91000 direkt konfiguriert. -1 (keiner), wenn er weggelassen wird, wie im Beispiel. Bei den Adressen 0x30 bis 0x37 ungenutzt. |
bool begin()returns boolStartet Wire, prüft, ob das Board antwortet, stellt die ADC-Verstärkung und die Datenrate des Presets ein und konfiguriert den LMP91000 mit den Einstellungen des Presets. Rufen Sie es einmal in setup() auf, bevor Sie lesen.
Returnstrue, wenn das Board geantwortet hat und beide Konfigurationsschritte erfolgreich waren, sonst false.
double getPPM()returns doubleNimmt einen Messwert auf und rechnet ihn in ppm um: Es zieht die interne Nullspannung ab (die 2,5-V-Referenz multipliziert mit dem internen Nullprozentwert des Presets), addiert die Nullpunktkalibrierung, teilt durch die Verstärkung des Verstärkers und durch die Empfindlichkeit des Presets in nA pro ppm. Ein Ergebnis unter null wird als 0 zurückgegeben.
ReturnsDie Gaskonzentration in ppm.
double getPPB()returns doubleGleicher Messwert wie getPPM(), mal 1000. Das Beispiel zeigt es in einem Kommentar als Alternative zu getPPM().
ReturnsDie Gaskonzentration in ppb.
Das Beispiel verwendet außerdem Serial und delay(), die zum Arduino-Core gehören,
nicht zu dieser Bibliothek.
Alles zusammengesetzt
begin() übernimmt die gesamte Einrichtung, daher ruft loop() nur getPPM() auf und gibt das
Ergebnis aus. Um stattdessen in ppb zu lesen, ersetzen Sie die Zeile getPPM() durch die Zeile getPPB()
im Kommentar darunter.