Usrednjeno mjerenje
Što prikazuje ovaj primjer
Primjer modula electrochemical-averagedMeasurement.py uzima pet očitanja
u razmaku od tri sekunde, usrednjuje ih jednim pozivom funkcije i ispisuje
rezultat u ppb.
Primjer stvara senzor s SENSOR_O3, predloškom za ćeliju za ozon.
Modul izračunava svako očitanje iz postavki osjetljivosti i pojačanja tog predloška;
predložak za ćeliju za klor na ovoj pločici je SENSOR_CL2.
Primjer otvara I2C sabirnicu 0 s SCL na pinu 22 i SDA na pinu 21. Promijenite
ih prema svojoj pločici.
Kôd primjera
# FILE: electrochemical-averagedMeasurement.py
# AUTHOR: Fran Fodor @ Soldered
# BRIEF: Averaged PPM reading example using the built-in averaging function.
# LAST UPDATED: 2026-05-21
# Connecting diagram:
#
# Qwiic------------------------>Qwiic
# LMPEN------------------------>GND or GPIO pin (see config_pin parameter below)
from machine import I2C, Pin
import time
from ElectrochemicalGasSensor import ElectrochemicalGasSensor, SENSOR_O3
# How many readings to average and how many seconds to wait between them
NUM_READINGS = 5
SECS_BETWEEN_READINGS = 3
# 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)
# -------------------------------------------------------------------------
# Setup
# -------------------------------------------------------------------------
print("Electrochemical Gas Sensor - Averaged Measurement 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:
# getAveragedPPM is a blocking call — it waits between each reading
reading = sensor.getAveragedPPB(NUM_READINGS, SECS_BETWEEN_READINGS)
# If PPM is more relevant for your sensor, use:
# reading = sensor.getAveragedPPM(NUM_READINGS, SECS_BETWEEN_READINGS)
print("Sensor reading: {:.5f} PPB".format(reading))
time.sleep_ms(2500)
🔗Otvorite cijeli primjer
Examples/electrochemical-averagedMeasurement.py u commitu 623e1e6
Shema spajanja u primjeru povezuje LMPEN na GND ili GPIO. Na ovoj
pločici otpornik od 10 kΩ drži LMPEN na niskoj razini i spojen je na ATtiny404, pa
ga ostavite nespojenim (pogledajte tablicu pinova na stranici
Detalji o hardveru).
Očekivani rezultat:
Electrochemical Gas Sensor - Averaged Measurement Example
Sensor initialized successfully!
Svako usrednjavanje uzima pet očitanja s pauzom od 3 s nakon svakog, pa se prvi
redak Sensor reading: (prosjek u ppb s pet decimala, zatim PPB)
pojavljuje otprilike 15 s kasnije, a sljedeći otprilike svakih 17,5 s, računajući
pauzu od 2,5 s na kraju petlje. Ako begin() ne uspije, skripta ispisuje
ERROR: Can't init the sensor! Check connections! i zaustavlja se.
Korištene funkcije
ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensorStvara objekt senzora. Ništa se ne šalje na pločicu dok se ne pozove begin().
ReturnsObjekt senzora.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
SensorConfig | sensor_type | Predložak ćelije. Primjer prosljeđuje SENSOR_O3; ćelija SGX-4CL2 na ovoj pločici ima predložak SENSOR_CL2. |
I2C | i2c | Gotov objekt machine.I2C; primjer ga prosljeđuje. Ako se izostavi, modul stvara I2C(0, scl=Pin(22), sda=Pin(21)) na portu esp32 i na jednoj drugoj pločici koju prepoznaje po nazivu (i ondje su pinovi 22 i 21); na esp8266 stvara I2C(scl=Pin(5), sda=Pin(4)); na bilo kojoj drugoj pločici javlja Board not recognized, please pass an I2C object manually. |
int | adc_addr | I2C adresa, 0x49 ako se izostavi, kao u primjeru. Za adresu od 0x30 do 0x37, raspon preklopnika ADDRESS na ovoj pločici, begin() komunicira s ATtiny404 na pločici; za svaku drugu adresu traži ADS1115 na toj adresi i LMP91000 na 0x48 na sabirnici koju proslijedite. |
int | config_pin | GPIO za ulaz MENB čipa LMP91000: modul ga postavlja na nisku razinu dok izravno konfigurira LMP91000, a inače na visoku. None ako se izostavi, kao u primjeru. Ne koristi se za adrese od 0x30 do 0x37. |
sensor.begin()returns boolProvjerava odgovara li pločica, postavlja pojačanje i brzinu podataka ADC-a prema predlošku te konfigurira LMP91000 postavkama predloška. Pozovite je jednom prije čitanja.
ReturnsTrue ako je pločica odgovorila i oba koraka konfiguracije uspjela, inače False.
sensor.getAveragedPPB(num_measurements=5, seconds_delay=2)returns floatgetAveragedPPM() puta 1000. Blokira dok se sva očitanja ne završe.
ReturnsUsrednjena koncentracija plina u ppb.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | num_measurements | Koliko se očitanja usrednjuje. Zadano 5; primjer prosljeđuje NUM_READINGS (5). |
int | seconds_delay | Sekunde čekanja nakon svakog očitanja. Zadano 2; primjer prosljeđuje SECS_BETWEEN_READINGS (3). |
sensor.getAveragedPPM(num_measurements=5, seconds_delay=2)returns floatUzima num_measurements očitanja pomoću getPPM(), nakon svakog čeka seconds_delay sekundi i vraća njihovu srednju vrijednost. Primjer je prikazuje u komentaru kao alternativu.
ReturnsUsrednjena koncentracija plina u ppm.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | num_measurements | Koliko se očitanja usrednjuje. Zadano 5. |
int | seconds_delay | Sekunde čekanja nakon svakog očitanja. Zadano 2. |
Ovaj primjer koristi i
I2C i
Pin iz
MicroPythonova modula machine te
time.sleep_ms(),
koji nisu dio ove biblioteke, nego dolaze s MicroPythonom.
Sve zajedno
Promijenite NUM_READINGS i SECS_BETWEEN_READINGS kako biste zamijenili
brzinu odziva za stabilniju vrijednost. Dok se prosjek izračunava, ostatak petlje čeka.