Očitavanje koncentracije plina u PPB
Što ovaj primjer prikazuje
Primjer electrochemical-singleSensor.py stvara jedan senzor na zadanoj adresi modula, 0x49, pokreće ga i ispisuje koncentraciju plina u PPB
svakih 2,5 sekundi.
Prije pokretanja:
- Primjer je napisan sa
SENSOR_O3, predloškom modula za ozon, pa njegove vrijednosti nisu vrijednosti za H2S. Ne prebacujte ga naSENSOR_H2Sbez izmjena: taj predložak je napisan za ćeliju SGX-4H2S-100 (1200 nA po ppm). Tehnički list ćelije SGX-4H2S-300 na ovoj pločici navodi izlazni signal od 460 ± 140 nA po ppm, pa bi uz taj predložak očitanje bilo oko 2,6 puta preniskо. Umjesto toga proslijedite prilagođeniSensorConfigs postavkamaSENSOR_H2Si 460 nA po ppm, kao što Brzi početak prikazuje. - Promijenite
Pin(22)iPin(21)u SCL i SDA pinove svojeg kontrolera ako se razlikuju.
Kôd primjera
# FILE: electrochemical-singleSensor.py
from machine import I2C, Pin
import time
from ElectrochemicalGasSensor import ElectrochemicalGasSensor, SENSOR_O3
# Initialize I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# Create sensor object - change SENSOR_O3 to match your sensor type
# Available types: SENSOR_CO, SENSOR_NO2, SENSOR_SO2, SENSOR_O3,
# SENSOR_NO, SENSOR_H2S, SENSOR_NH3, SENSOR_CL2
sensor = ElectrochemicalGasSensor(SENSOR_O3, i2c)
# If using a custom ADC address or a GPIO pin for LMP91000 MENB:
# sensor = ElectrochemicalGasSensor(SENSOR_O3, i2c, adc_addr=0x4B, config_pin=5)
# -------------------------------------------------------------------------
# Setup
# -------------------------------------------------------------------------
print("Electrochemical Gas Sensor - Single Sensor Example")
if not sensor.begin():
print("ERROR: Can't init the sensor! Check connections!")
while True:
time.sleep_ms(100)
print("Sensor initialized successfully!")
# -------------------------------------------------------------------------
# Main loop
# -------------------------------------------------------------------------
while True:
reading = sensor.getPPB()
# If PPM is more relevant for your sensor, use:
# reading = sensor.getPPM()
print("Sensor reading: {:.5f} PPB".format(reading))
time.sleep_ms(2500)
Očekivani rezultat:
Electrochemical Gas Sensor - Single Sensor Example
Sensor initialized successfully!
Zatim se svake 2,5 sekunde ispisuje redak koji počinje s Sensor reading:, s
koncentracijom u PPB na pet decimala. Ako senzor ne odgovori, skripta
ispisuje ERROR: Can't init the sensor! Check connections! i čeka.
Korištene funkcije
ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensorStvara objekt senzora. Vrsta senzora sadrži postavke ulaznog stupnja i pretvorbe za jednu plinsku ćeliju. Adresa određuje kako begin() komunicira s pločicom: adresa od 0x30 do 0x37 ide preko ATtiny404 na pločici; svaka druga adresa, kao zadana 0x49, ide na ADS1115 na toj adresi i izravno na LMP91000.
ReturnsObjekt senzora.
Parametri
| Name | Type | Description |
|---|---|---|
sensor_type | SensorConfig | Predložak iz modula (SENSOR_CO, SENSOR_NO2, SENSOR_SO2, SENSOR_O3, SENSOR_NO, SENSOR_H2S, SENSOR_NH3, SENSOR_CL2) ili prilagođeni SensorConfig. Za ćeliju na ovoj pločici proslijedite prilagođeni s 460 nA po ppm. |
i2c | machine.I2C | I2C sabirnica na kojoj se nalazi pločica. Bez nje modul sam otvara sabirnicu samo na pločicama koje prepoznaje: ESP32 izvedbe MicroPythona i vlastita izvedba jedne Soldered pločice (I2C sabirnica 0, SCL 22, SDA 21) te ESP8266 izvedbe (SCL 5, SDA 4). Na svakoj drugoj pločici javlja Board not recognized, please pass an I2C object manually. |
adc_addr | int | Adresa s kojom begin() komunicira. Ovaj primjer je izostavlja pa se koristi zadana, 0x49. |
config_pin | int | GPIO koji modul drži u visokom stanju i spušta u nisko dok izravno konfigurira LMP91000. Ne koristi se na adresama od 0x30 do 0x37. Ovaj primjer ga izostavlja. |
begin()returns boolUz adresu od 0x30 do 0x37 provjerava odgovara li ATtiny404 na pločici, šalje mu pojačanje ADC-a iz vrste senzora i najsporiju brzinu podataka, a zatim mu nalaže da konfigurira ulazni stupanj LMP91000; svaka se naredba ponavlja do 500 ms. Uz bilo koju drugu adresu provjerava odgovara li ADS1115 na toj adresi, postavlja mu pojačanje i najsporiju brzinu podataka, a zatim izravno konfigurira LMP91000. Pozovite je jednom prije očitavanja.
ReturnsTrue ako su svi koraci uspjeli, inače False.
getPPB()returns floatOčitava vrijednost pomoću getPPM() i množi je s 1000.
ReturnsKoncentracija plina u PPB.
getPPM()returns floatAlternativa u primjeru koja je zakomentirana. Uzima očitanje ADC-a, oduzima unutarnju nulu ulaznog stupnja (2,5 V puta njezin postotak), dodaje kalibraciju nule, a zatim dijeli s pojačanjem pojačala i s osjetljivošću ćelije u nA po ppm iz vrste senzora. Rezultat manji od 0 vraća se kao 0.0.
ReturnsKoncentracija plina u PPM.
Ovaj primjer također koristi I2C i Pin iz MicroPythonova
modula machine,
koji nije dio modula Soldered ElectrochemicalGasSensor.
Sve zajedno
Otvorite I2C sabirnicu, stvorite jedan ElectrochemicalGasSensor s vrstom senzora, jednom pozovite
begin(), a zatim pozovite getPPB() ili getPPM() kad god želite očitanje.