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 modulaSENSOR_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 uzSENSOR_H2Sočitanje oko 2,6 puta preniskо. Umjesto toga proslijedite prilagođeniSensorConfigs postavkamaSENSOR_H2Si 460 nA po ppm, kao što prikazuje Brzi početak. - Promijenite
Pin(22)iPin(21)u SCL i SDA pinove svojeg kontrolera ako se razlikuju. - Ako ste adresu pločice promijenili ADDRESS preklopnikom, promijenite
0x30tako 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)
Očekivani rezultat:
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 ElectrochemicalGasSensorStvara 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
| Name | Type | Description |
|---|---|---|
sensor_type | SensorConfig | Predlož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. |
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 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_pin | int | GPIO 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 boolProvjerava 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 floatOč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 floatZakomentirana 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.