Prilagođena konfiguracija
Što ovaj primjer prikazuje
Primjer electrochemical-customConfig.py iz modula gradi vlastiti
SensorConfig: osjetljivost ćelije, nulti pomak, raspon ADC-a i sve postavke
čipa LMP91000. begin() zatim šalje tu konfiguraciju na pločicu umjesto
ugrađene unaprijed definirane postavke.
Vrijednosti u primjeru nisu vrijednosti ove pločice. Da biste podesili ćeliju
ove pločice, krenite od preseta SENSOR_CL2 iz modula i mijenjajte jednu po
jednu vrijednost. Uvezite konstante koje koristite, kao u primjeru: pojačanje iz
ads1115, ostalo iz ElectrochemicalGasSensor.
| Argument | Vrijednost SENSOR_CL2 |
|---|---|
nano_amperes_per_ppm | 600.0 |
internal_zero_calibration | 0 |
ads_gain | ADS_GAIN_4_096V |
tia_gain | TIA_GAIN_120_KOHM |
rload | RLOAD_33_OHM |
ref_source | REF_EXTERNAL |
internal_zero | INTERNAL_ZERO_20_PERCENT |
bias_sign | BIAS_SIGN_POSITIVE |
bias | BIAS_0_PERCENT |
fet_short | FET_SHORT_DISABLED |
op_mode | OP_MODE_3LEAD_AMP_CELL |
Ostavite ref_source na REF_EXTERNAL: pločica ima referencu od 2,5 V za
ulazni stupanj, a modul računa ppm s 2,5 V.
Primjer otvara I2C sabirnicu 0 sa SCL na pinu 22 i SDA na pinu 21. Promijenite
ih prema svojoj pločici.
Kôd primjera
# FILE: electrochemical-customConfig.py
# AUTHOR: Fran Fodor @ Soldered
# BRIEF: Custom LMP91000 configuration example for any electrochemical sensor.
# LAST UPDATED: 2026-05-21
# Connecting diagram:
#
# Qwiic------------------------>Qwiic
# LMPEN------------------------>GPIO pin (see config_pin parameter below)
from machine import I2C, Pin
import time
from ElectrochemicalGasSensor import (
ElectrochemicalGasSensor, SensorConfig,
TIA_GAIN_35_KOHM, RLOAD_10_OHM, REF_EXTERNAL,
INTERNAL_ZERO_67_PERCENT, BIAS_SIGN_NEGATIVE, BIAS_0_PERCENT,
FET_SHORT_DISABLED, OP_MODE_3LEAD_AMP_CELL,
)
from ads1115 import ADS_GAIN_2_048V
# Custom sensor configuration — edit these values to match your sensor's datasheet.
#
# nanoAmperesPerPPM: Sensitivity from the sensor datasheet (nA/PPM)
# internalZeroCalibration: Voltage offset added to zero the reading in clean air
# adsGain: ADS1115 full-scale range (ADS_GAIN_6_144V .. ADS_GAIN_0_256V)
# tia_gain: TIA feedback resistor (TIA_GAIN_2_75_KOHM .. TIA_GAIN_350_KOHM)
# rload: Load resistor (RLOAD_10_OHM .. RLOAD_100_OHM)
# ref_source: Reference voltage source (REF_INTERNAL / REF_EXTERNAL)
# internal_zero: Internal zero percentage (INTERNAL_ZERO_20/50/67_PERCENT or _BYPASSED)
# bias_sign: Bias polarity (BIAS_SIGN_NEGATIVE / BIAS_SIGN_POSITIVE)
# bias: Bias percentage of Vref (BIAS_0_PERCENT .. BIAS_24_PERCENT)
# fet_short: FET short (FET_SHORT_DISABLED / FET_SHORT_ENABLED)
# op_mode: Operating mode (OP_MODE_3LEAD_AMP_CELL for normal operation)
SENSOR_CUSTOM = SensorConfig(
nano_amperes_per_ppm=-1000.0,
internal_zero_calibration=-0.0012,
ads_gain=ADS_GAIN_2_048V,
tia_gain=TIA_GAIN_35_KOHM,
rload=RLOAD_10_OHM,
ref_source=REF_EXTERNAL,
internal_zero=INTERNAL_ZERO_67_PERCENT,
bias_sign=BIAS_SIGN_NEGATIVE,
bias=BIAS_0_PERCENT,
fet_short=FET_SHORT_DISABLED,
op_mode=OP_MODE_3LEAD_AMP_CELL,
)
# Initialize I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
sensor = ElectrochemicalGasSensor(SENSOR_CUSTOM, i2c)
# -------------------------------------------------------------------------
# Setup
# -------------------------------------------------------------------------
print("Electrochemical Gas Sensor - Custom Config 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()
print("Sensor reading: {:.5f} PPB".format(reading))
time.sleep_ms(2500)
🔗Otvorite cjelovit primjer
Examples/electrochemical-customConfig.py u commitu 623e1e6
Spojna shema u primjeru spaja LMPEN na GPIO. Na ovoj pločici otpornik od 10 kΩ drži LMPEN u niskom stanju i spojen je na ATtiny404, pa ga ostavite
nespojenim (pogledajte tablicu pinova na stranici
Detalji o hardveru).
Očekivani rezultat:
Electrochemical Gas Sensor - Custom Config Example
Sensor initialized successfully!
Zatim svakih 2,5 s jedan redak: Sensor reading: , koncentracija u ppb s pet
decimala i PPB. Ako begin() ne uspije, skripta ispisuje
ERROR: Can't init the sensor! Check connections! i zaustavlja se.
Korištene funkcije
SensorConfig(nano_amperes_per_ppm, internal_zero_calibration, ads_gain, tia_gain, rload, ref_source, internal_zero, bias_sign, bias, fet_short, op_mode)returns SensorConfigSadrži konfiguraciju jedne ćelije. Ugrađene postavke, među njima SENSOR_CL2, također su objekti SensorConfig.
ReturnsKonfiguracijski objekt, prosljeđuje se funkciji ElectrochemicalGasSensor().
Parametri
| Tip | Naziv | Opis |
|---|---|---|
float | nano_amperes_per_ppm | Osjetljivost ćelije u nA po ppm, koristi se pri izračunu ppm-a. |
float | internal_zero_calibration | Naponski pomak pribrojen svakom očitanju. |
int | ads_gain | Mjerno područje ADS1115, od ADS_GAIN_6_144V do ADS_GAIN_0_256V. |
int | tia_gain | Pojačanje pojačala LMP91000, TIA_GAIN_EXTERNAL ili od TIA_GAIN_2_75_KOHM do TIA_GAIN_350_KOHM. |
int | rload | Otpornik opterećenja, RLOAD_10_OHM, RLOAD_33_OHM, RLOAD_50_OHM ili RLOAD_100_OHM. |
int | ref_source | REF_INTERNAL ili REF_EXTERNAL. |
int | internal_zero | INTERNAL_ZERO_20_PERCENT, _50_PERCENT, _67_PERCENT ili INTERNAL_ZERO_BYPASSED. |
int | bias_sign | BIAS_SIGN_NEGATIVE ili BIAS_SIGN_POSITIVE. |
int | bias | Bias kao udio reference, od BIAS_0_PERCENT do BIAS_24_PERCENT. |
int | fet_short | FET_SHORT_DISABLED ili FET_SHORT_ENABLED. |
int | op_mode | Način rada, OP_MODE_3LEAD_AMP_CELL za normalno mjerenje. |
ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensorStvara objekt senzora. Ništa se ne šalje na pločicu do poziva begin().
ReturnsObjekt senzora.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
SensorConfig | sensor_type | Konfiguracija, ovdje SENSOR_CUSTOM iz primjera. |
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 prekidača ADDRESS ove pločice, begin() komunicira s ATtiny404 čipom na pločici; za bilo koju 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 u nisko stanje dok izravno konfigurira LMP91000, a inače u visoko. 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 ADC pojačanje i brzinu podataka iz konfiguracije te upisuje u LMP91000 pojačanje pojačala i opterećenje, referencu, interni nulti pomak, bias i način rada. Pozovite je jednom prije očitanja.
ReturnsTrue ako je pločica odgovorila i oba koraka konfiguracije uspjela, inače False.
sensor.getPPB()returns floatIzvodi jedno očitanje i pretvara ga u ppb s vrijednostima iz konfiguracije: getPPM() puta 1000. Rezultat ispod nule vraća se kao 0.0.
ReturnsKoncentracija plina u ppb.
Ovaj primjer koristi i
I2C i
Pin iz
MicroPythonova modula machine te
time.sleep_ms(),
koji nisu dio ove biblioteke, nego dolaze s000 samim MicroPythonom.
Sastavljanje cjeline
begin() upisuje postavke LMP91000 i ADC-a na pločicu, a getPPB() u izračunu
koristi nano_amperes_per_ppm, internal_zero_calibration, pojačanje pojačala i
interni nulti pomak. Nakon svake promjene ponovno pokrenite skriptu.