Fermentor építés – (2. rész) – szén-dioxid detektálás

Bevezetés 

A fermentáció olyan technológiai folyamat, amelynek során a jelen levő élő mikroorganizmusok szaporodásának, életfolyamataik és enzimjeik hatására bonyolult biokémiai változások mennek végbe az alapanyagokban. E folyamatot jellemzően baktériumok és/vagy gombák – kivételes esetekben algák, növényi eukarióta sejtek esetleg emlőssejtek – használatával végzik, és szénhidrátok lebontása során primer, illetve szekunder metabolitokat (anyagcseretermékeket) állítanak elő, vagy biokonverzióval értékes anyagokat alakítanak át. Tipikus fermentációs termékek az aminosavak, enzimek, vitaminok, antibiotikumok(pl. penicillinek, sztreptomicinek, tetraciklinek, stb.), konvertált szteroidok (biotranszformáció) és rekombináns fehérjék (pl. r-inzulin, r-kalcitonin, stb.). Természetesen termékek lehetnek önmagukban is a baktériumok és gombák (biomassza), vagy általuk előállított fehérjék és olajok (pl. probiotikumok, egysejt-fehérjék és olajok).

Az aerob fermentáció általános egyenlete, ha egy extracelluláris anyag keletkezik:

CHmOn + aO2 + bNH3 → cCHαOβNδ + dCHxOyNz + e H2O + fCO2

CHmOn = Kiindulási anyag, szubsztrát, amit a mikroorganizmusok a sejtfelépítésükhöz használnak.

O2 = Aerob fermentációnál az oxigén jelenléte elengedhetetlen, ezt folyamatosan pumpáljuk a biorektorba.

NH3 = Nitrogénforrás.

CHαOβNδ = Biomassza.

CHxOyNz = Keletkezett termék.

H2O = Víz.

CO2 = Keletkezett szén-dioxid, aminek majd mérjük a koncentrációját.

 

A szenzor

Hosszas keresgélés után végül a SprintIR szenzorra esett a választás, az ultragyors mintavételezése (20érték/másodperc), a széles mérési tartománya (0-100%, én egy 0-5% választottam → jobb felbontás), a pontossága és persze a kedvező ára miatt,  130€ + 20€ az adapter. Egyetlen negatívuma, hogy I2C helyett csak UART adattovábbítást tud (vagyis csak nekünk, mert  a pH méréshez I2C-t használunk).

co2sensor_pic

Adatlapja itt érhető el: https://www.gassensing.co.uk/media/1091/sprintir_-datasheet_gss.pdf

 

Szenzor teszt

Megfelelő törzsek kiválasztására, előszűrésére ezt a típusú fermentort (DASbox®) használjuk. 100-150ml-es fermentációkat tudunk benne kivitelezni, lényegében ugyanazt tudja mint egy 1,5-3-5-7 literes, pH, pO2, hűtés- fűtés, keverés, automata feed start, stb. E.coli fermentációknál általában Fed-batch, vagyis rátáplálásos fermentációt alkalmazunk, ez azt jelenti, hogy a szükséges tápanyagokat, ionokat nem egyszerre, hanem folyamatosan adagoljuk a fermentáció közben, ami akár egy hét is lehet.

A módszer, hogy megvizsgáljuk a tápanyag adagolás hatékonyságát, elkerülve a tápanyag felhalmozódását, egy kis időre kikapcsoljuk a szénforrás adagolást, majd megfigyeljük a pO2-t, vagy a távozó gáz CO2 koncentráció változását. A mi esetünkben most a CO2 szintet vizsgáljuk.

co2ppm

Egy stacionárius fázisban lévő fermentáció CO2 kibocsátása közel egyenletes, ebben az esetben kb. 16500ppm, a bepumpált levegő CO2 koncentrációja kb. 380-400ppm, az áramlási sebesség pedig 0,1L/min. A tenyészet OD600 értéke 180, ami elég nagy sejtsűrűséget jelent, hozzávetőlegesen 1011db sejt/mL. Tehát, ha megszüntetjük a szénforrás utánpótlást, és a médium nem tartalmaz feleslegben belőle, akkor a sejtek elkezdenek éhezni, nincs szénforrás lebontás, a kibocsátott CO2 koncentrációja csökken, ezt láthatjuk a grafikonon is, nem az elején (itt véletlenül lecsatlakoztattam a csövet a szenzorról), hanem kb. a 25. pencnél.

Adatfeldolgozás

A cél az, hogy raspberry-vel olvassuk a szenzort, és a mért értékeket böngészőben tudjuk megjeleníteni, de ez egy kissé bonyolult. Jelenleg Arduino-val tudom csak használni, ez USB-n keresztül csatlakozik a számítógéphez, így az adatokat soros porton keresztül egyszerűen tudom olvasni. A szenzor pin kiosztásával volt egy kis bajom, így oszcilloszkóppal bemértem, hogy működik-e, jöttek a nullák és az egyesek, úgyhogy jó volt.

co2_sensor_oscilloscope2

A kód

A fenti kódot egyszerűen feltöltjük az Arduino modulra, csatlakoztatjuk a szenzort, megnyitjuk a megfelelő COM portot és már jönnek is az adatok, nagyon gyorsan, kb. 16 érték/mp volt a legutóbbi mérésnél.

#include <SoftwareSerial.h> Könytár letöltése ⇒ SoftwareSerial

Felhasznált irodalom

http://www.tankonyvtar.hu/hu/tartalom/tkt/fermentacios/ch01.html

http://www.co2meters.com/Documentation/AppNotes/AN128-%20Cozir_Arduino.pdf

Share This:

 
Loading Facebook Comments ...

COMMENTS

  • Ezt kellene egy kicsit kipofozni, néha átküldi az értéket, néha csak nullát küld, ha meg semmit akkor meg a többi eszközről jövő adat sem látszik.

  • Ezt a két sor kivettem

    Serial.begin(9600);
    Serial.println(“Co2Meter.com COZIR Sample”);

    Az a helyzet, hogy az olvasás néha sikerül, néha nem, csatoltam egy képet logikai analizátorral így néz ki:
    I2C CO2

    Amikor az olvasás sikeres:

    a kommunikáció hossza 185ms
    kiolvasott érték 49+52+57+48 (ASCII) ez 1490 lesz ami a CO2 ppm-ben mért koncentrációja
    az egyes értékek olvasása között 20mikrosec van.
    A kommunikáció lezárása 255+ACK…….255+NAK

    Amikor az olvasás sikertelen:

    a kommunikáció hossza 215ms
    kiolvasott érték 49+52 = 14
    az egyes értékek olvasása között 0,9ms van.
    A kommunikáció lezárása 177+NAK itt a két olvasott érték után lezárja

    A szenzorból jövő érték mindig felülírja co2 változót és talán amikor a a raspberry olvas és pont akkor változik az érték akkor összezavarodik?

  • A huszadik érték olvasása után pedig 0-át ad vissza mindig, vagy semmit, ha újraindítom az Arduino-t akkor kezdődik elölről.

  • Guttmann Krisztián Guttmann Krisztián

    így kéne megpróbálni:

  • Guttmann Krisztián Guttmann Krisztián

    így néz ki most a fermi szerver oldali kódja:

    korábban 2 fileban volt a forráskod most összegyúrtam 1be, így szerintem átláthatóbb:

    • ATmega-val nem tudtam tizedes értéket küldeni, úgyhogy az analóg bemenetén olvasott értéket küldi el, amit majd a szerver oldali kód alakít át hőmérsékletté, ez itt:

      value3 = Math.log(9870*((1023/value3)-1));
      value3 = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * value3 * value3 ))* value3 );
      value3 = value3 – 273.15;

      Korábban ez a kliens oldalon volt, akkor még plusz egy sor, az alábbi jön hozzá
      this.parameters_datatable.cells(3, 1).value = value3;

Leave a Comment