Skip to main content

Očitavanje koncentracije plina

Što ovaj primjer prikazuje​

Primjer electrochemical-bridgeBoard.py pokreće pločicu na njezinoj I2C adresi 0x30 i svake 2,5 sekunde ispisuje koncentraciju plina u PPM. Budući da je adresa u rasponu od 0x30 do 0x37, modul komunicira s ATtiny404 čipom na pločici, koji konfigurira LMP91000 analogno sučelje (front end) i umjesto vas očitava ADS1115.

Prije pokretanja:

  • Primjer je napisan sa SENSOR_O3, predloškom modula za ozon, pa njegove PPM vrijednosti nisu vrijednosti za H2S. Nemojte ga bez izmjene prebaciti na predložak modula SENSOR_H2S: taj je predložak napisan za ćeliju SGX-4H2S-100, s osjetljivošću od 1200 nA po ppm, dok ova pločica ima ćeliju SGX-4H2S-300, čiji tehnički list navodi izlazni signal od 460 ± 140 nA po ppm. getPPM() dijeli s osjetljivošću iz predloška, pa je uz SENSOR_H2S očitanje oko 2,6 puta preniskо. Umjesto toga proslijedite prilagođeni SensorConfig s postavkama SENSOR_H2S i 460 nA po ppm, kao što prikazuje Brzi početak.
  • Promijenite Pin(22) i Pin(21) u SCL i SDA pinove svojeg kontrolera ako se razlikuju.
  • Ako ste adresu pločice promijenili ADDRESS preklopnikom, promijenite 0x30 tako da odgovara.

Primjer koda​

# FILE: electrochemical-bridgeBoard.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))

sensor = ElectrochemicalGasSensor(SENSOR_O3, i2c, adc_addr=0x30)

# -------------------------------------------------------------------------
# Setup
# -------------------------------------------------------------------------
print("Electrochemical Gas Sensor - ATtiny Bridge Board Example")

if not sensor.begin():
print("ERROR: Can't init the sensor! Check connections and jumper address!")
while True:
time.sleep_ms(100)

print("Sensor initialized successfully!")

# -------------------------------------------------------------------------
# Main loop
# -------------------------------------------------------------------------
while True:
reading = sensor.getPPM()

# If PPB is more relevant for your sensor, use:
# reading = sensor.getPPB()

print("Sensor reading: {:.5f} PPM".format(reading))

time.sleep_ms(2500)

Otvorite cijeli primjer

Očekivani rezultat:

ShellMicroPython
Electrochemical Gas Sensor - ATtiny Bridge Board Example
Sensor initialized successfully!

Zatim svake 2,5 sekunde slijedi redak koji počinje s Sensor reading:, s koncentracijom u PPM na pet decimala. Ako pločica ne odgovori, skripta ispisuje ERROR: Can't init the sensor! Check connections and jumper address! i čeka.

Korištene funkcije​

ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensor

Stvara objekt senzora. Vrsta senzora sadrži postavke analognog sučelja i pretvorbe za jednu plinsku ćeliju. Adresa određuje kako begin() komunicira s pločicom: 0x30 do 0x37 ide preko ATtiny404 čipa na ovoj pločici.

ReturnsObjekt senzora.

Parametri

NameTypeDescription
sensor_typeSensorConfigPredložak iz modula: SENSOR_CO, SENSOR_NO2, SENSOR_SO2, SENSOR_O3, SENSOR_NO, SENSOR_H2S, SENSOR_NH3 ili SENSOR_CL2. Ili prilagođeni SensorConfig. SENSOR_H2S je napisan za ćeliju SGX-4H2S-100 (1200 nA po ppm) i s ćelijom SGX-4H2S-300 ove pločice (460 ± 140 nA po ppm u njezinu tehničkom listu) očitava oko 2,6 puta preniske vrijednosti: proslijedite prilagođeni SensorConfig s 460 nA po ppm.
i2cmachine.I2CI2C 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_addrintAdresa s kojom begin() komunicira. Ovaj primjer prosljeđuje 0x30, adresu ATtiny404 čipa (ADDRESS preklopnik postavlja 0x30 do 0x37). S bilo kojom drugom adresom (zadana je 0x49) modul umjesto toga komunicira s ADS1115 na toj adresi i izravno s LMP91000.
config_pinintGPIO koji modul drži na visokoj razini i povlači na nisku dok izravno konfigurira LMP91000. Ne koristi se kada je adresa od 0x30 do 0x37.
begin()returns bool

Provjerava odgovara li pločica, šalje konfiguraciju ADC-a, a zatim konfigurira LMP91000 analogno sučelje. Svaka se naredba pločici ponavlja do 500 ms. Pozovite je jednom prije očitavanja.

ReturnsTrue kada su svi koraci uspjeli, False kada pločica nije odgovorila ili je javila pogrešku.

getPPM()returns float

Očitava ADC preko pločice, oduzima unutarnju nulu analognog sučelja (2,5 V puta njezin postotak), dodaje kalibraciju nule, zatim dijeli pojačanjem pojačala i osjetljivošću ćelije u nA po ppm iz vrste senzora. Rezultat manji od 0 vraća se kao 0.0.

ReturnsKoncentracija plina u PPM.

getPPB()returns float

Zakomentirana alternativa u primjeru: očitava vrijednost pomoću getPPM() i množi je s 1000.

ReturnsKoncentracija plina u PPB.

Ovaj primjer koristi i I2C i Pin iz MicroPythonova modula machine, koji nije dio modula Soldered ElectrochemicalGasSensor.

Sve zajedno​

Otvorite I2C sabirnicu, stvorite jedan ElectrochemicalGasSensor s predloškom senzora i adresom pločice, jednom pozovite begin(), a zatim pozovite getPPM() kad god želite očitanje. Za više pločica na jednoj sabirnici svakoj dodijelite drugu adresu ADDRESS preklopnikom i stvorite po jedan objekt za svaku adresu.