Contents — find the section you need

Change parameters and verify

Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.

Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.

The experiment controls are in English.

Open experiment panel in a new tab

Download reproduction source

Prova l'esperimento sull'area proiettata nel tuo browser

Il pannello sopra esegue l'esperimento sintetico sulle immagini senza installare Python. Scegli la scena pulita, con tag verde, scura o ritagliata; modifica la luminosità minima V, la regione di interesse e i mm/pixel. Nove preset includono tutte e sette le condizioni pubblicate, una ROI sottodimensionata e una selezione vuota. I preset azzerano ogni input; anche modificare manualmente la soglia cambia il caso "scura recuperata".

Ispeziona l'input, il riferimento nel fotogramma, la maschera estratta e la sovrapposizione degli errori. Il rosso segna i falsi positivi e il blu i falsi negativi. Un contorno marrone segna una ROI selezionata sull'input. Salva un risultato come A e cambia un input per confrontare immagini e metriche alla stessa scala di visualizzazione. La tabella dei dati fornisce sequenze orizzontali di pixel (x/y a base zero e lunghezza); ricostruiscono esattamente ciascuna regione dell'immagine, senza sottocampionamento. Condividi le condizioni o scarica il JSON del risultato per conservare l'esperimento.

Le immagini restano le scene geometriche originali 320×240, senza caricamento di foto reali o input da fotocamera. Le funzioni originali di geometria e misura NumPy sono riutilizzate invariate. Il browser sostituisce solo la conversione/selezione dell'intervallo OpenCV con una ricerca verificata dei suoi tre colori RGB fissi: sfondo (235,235,235), target (50,160,65) e target scuro (20,60,25). I loro valori HSV uint8 OpenCV 4.6.0 sono (0,0,235), (64,175,160) e (64,170,60). Questo non è un convertitore HSV generico. H 35–85 e S 80–255 restano fissi; V minimo è regolabile da 0 a 255, inclusi. Non viene applicata alcuna morfologia.

La ROI fissa che esclude il tag è (50,20,230,190); la ROI piccola è (140,60,20,30), in pixel x/y/larghezza/altezza. Nessuna delle due si adatta a una pianta. La scala varia da 0,1 a 1,0 mm/pixel come conversione assunta del piano di riferimento, non una calibrazione. L'immagine resta la stessa quando la scala cambia. touches_frame appare come 1 per sì e 0 per no; una selezione vuota ha precisione non definita (—). Un IoU perfetto per una scena ritagliata non dice comunque nulla sulle porzioni al di fuori dell'immagine. Questi output non misurano biomassa, crescita, stress o superficie fogliare reale.

I download originali e le basi salvate restano invariati. Le istruzioni per la riproduzione locale sotto sono facoltative. L'adattatore del browser usa NumPy senza OpenCV; salva il suo punto di ingresso, il kernel e la tavolozza insieme per eseguirlo localmente con NumPy installato.

leaf: experiment.py

leaf: leaf_kernel.py

leaf: palette.json

leaf: original.py

Rilevamento CEA e portata — dove misurare CO₂ e soluzione nutritiva

Letture uguali possono riferirsi a luoghi e tempi diversi

Il DO del serbatoio è diverso dal DO all'uscita di un canale di coltivazione. Prima di attribuire la differenza al consumo di ossigeno delle radici, verificare se i sensori osservano tempi comparabili, se la calibrazione è coerente e se il campione cambia durante il transito.

La guida della zona radicale separava EC, pH, DO e bilancio idrico. Questo articolo chiede dove e come confrontarli. Riutilizza i concetti di ritardo e calibrazione della guida ai sensori di temperatura/umidità, aggiungendo questioni specifiche di CO₂, soluzione nutritiva e portata.

La tabella di posizionamento e la procedura di indagine sottostanti sono il nostro approccio di progettazione proposto. Non sono misurazioni di impianto, numeri di sensori richiesti o soglie di allarme universali per una coltura.

Decidi quali differenze devi osservare

Obiettivo Esempi di punti di confronto Registri complementari
CO₂ della zona di coltura Vicino alla chioma, aria di mandata, di scarico o di ripresa Altezza, dosaggio, ventilazione, porte, temperatura e RH
EC, pH e temperatura dell'acqua Serbatoio miscelato, ingresso e uscita del canale di coltivazione Acqua sorgente, aggiunte, volume e circolazione
DO Serbatoio, vicino alle radici, uscita del canale Temperatura, aerazione e tecnologia del sensore
Portata liquida Reintegro, rami selezionati, scarico Portata, posizione e stato della valvola
Livello e pressione Serbatoio, a monte/valle di un filtro Relazione livello-volume, riferimento di pressione ed elevazione
Movimento dell'aria Fronte/retro dei ripiani e altezze diverse Orientamento della sonda, durata della media e stato delle ventole

Usa punti permanenti per il monitoraggio e misure portatili per la mappatura. Mantieni un riferimento fisso per distinguere la variazione temporale durante un'indagine in movimento. Assegna gli ID di posizione indipendentemente dagli ID dei sensori, così le sostituzioni non interrompono lo storico di posizione.

L'autocalibrazione della CO₂ è adatta alle condizioni di coltivazione?

Una misura immediatamente accanto a un'uscita di CO₂ non dovrebbe rappresentare automaticamente l'intera chioma. Registra le relazioni con il dosaggio, l'aria di mandata/scarico e il respiro umano. Un punto che diagnostica l'apparecchiatura di dosaggio ha uno scopo diverso da uno che valuta le condizioni della coltura.

Verifica l'algoritmo di calibrazione. La nota di calibrazione sul campo del 2018 di Sensirion per l'SCD30 descrive l'ASC che usa una concentrazione minima corrispondente a 400 ppm e richiede un'esposizione regolare a tale concentrazione.

La nostra inferenza è che le stanze arricchite in modo continuo potrebbero non soddisfare questa ipotesi. Ciò riguarda l'algoritmo documentato, non ogni sensore di CO₂. Segui le istruzioni del modello e del firmware selezionati e pianifica il confronto con un gas di riferimento o uno strumento calibrato. L'ipotesi storica di 400 ppm non è un valore di calibrazione esterna garantito per l'attualità.

Gli output di temperatura/RH integrati in un dispositivo di CO₂ potrebbero descrivere il suo involucro anziché l'aria rappresentativa della chioma. Distingui gli input di compensazione ambientale dalle misure usate per valutare l'ambiente della coltura.

EC, pH e DO richiedono controlli diversi

Il manuale USGS sugli strumenti multiparametrici collega conservazione, manutenzione, calibrazione, misura e rendicontazione. Il suo ambito sulle acque naturali non stabilisce setpoint per colture o idoneità per una particolare soluzione nutritiva.

La seguente checklist proposta applica quell'approccio generale; le procedure e le soluzioni effettive devono corrispondere alla documentazione dello strumento.

Parametro Elementi da verificare
EC Standard di conducibilità e temperatura, intervallo atteso, costante di cella e compensazione di temperatura
pH Tamponi appropriati all'intervallo, temperatura, condizione dell'elettrodo/giunzione e conservazione
DO Metodo ottico o elettrochimico, condizioni di calibrazione, compensazione di pressione/salinità, condizione della membrana o del cappuccio
Tutti Errore prima della regolazione, risultati dopo pulizia/regolazione, identità dello standard, data e tempo di stabilizzazione

L'accordo con uno standard non stabilisce letture rappresentative dopo l'installazione. Indaga bolle, depositi, liquido stagnante e differenze locali di concentrazione subito dopo le aggiunte.

La tecnologia del DO conta. Le linee guida di misura di YSI spiegano che i sensori ottici non consumano ossigeno e non hanno alcun requisito di agitazione legato al principio di misura, sebbene la portata possa migliorare il tempo di risposta. Non assumere requisiti di portata identici per dispositivi elettrochimici e ottici. Anche un sensore ottico deve comunque campionare liquido rappresentativo dell'ambiente radicale previsto.

Una linea di campionamento porta al sensore liquido più vecchio

Una cella di flusso remota separa il tempo di visualizzazione dalle condizioni nel punto di campionamento. Per un volume di linea sintetico di 0,50 L e una portata costante di 0,25 L/min, assumendo spostamento ideale senza miscelazione o dispersione:

t_{transport}=V_{line}/Q=0.50/0.25=2.0\ \mathrm{min}
Diagram 1 · Use the button to switch views
Sequenza concettuale che separa il trasporto del campione, la risposta del sensore e la ricezione del log, con un tempo di trasporto sintetico di due minuti.

I due minuti descrivono solo il trasporto ideale in linea. Miscelazione nella cella, risposta del sensore e ritardo di comunicazione sono effetti aggiuntivi.

Raddoppiare la portata a 0,50 L/min riduce questo tempo ideale a un minuto. Le linee e le celle reali si mescolano; anche temperatura e scambio gassoso possono modificare il campione. Spostare i timestamp di due minuti non ricostruisce necessariamente le condizioni originali.

Registra separatamente la posizione di campionamento, la configurazione della linea/cella, la portata, il tempo di misura dello strumento e il tempo di ricezione. Quando si passa tra punti di campionamento, verifica anche il trascinamento dal campione precedente.

Confronta comando della pompa, portata, livello e pressione

La pompa in ON non è una misura di portata. La consegna totale e la consegna a ciascun ramo sono osservazioni diverse. Segui i requisiti del misuratore di portata selezionato per tratti rettilinei, tubi pieni, intervallo e bolle.

Converti il livello in volume usando la geometria del serbatoio. Per sezione trasversale costante, la variazione di volume è uguale all'area moltiplicata per la variazione di livello; quella conversione non è universale per vasi con fondo inclinato. Anche la misura del livello basata sulla pressione richiede di considerare densità e pressione di riferimento.

La pressione differenziale del filtro può supportare i confronti, ma dipende anch'essa dalla portata. Un aumento da solo non dimostra intasamento quando le condizioni operative differiscono. Registra le elevazioni di misura, pressione manometrica rispetto ad assoluta e le unità.

Usa un residuo di bilancio idrico per trovare incoerenze

Qui il confine è il solo serbatoio. Q_{in} include ogni flusso in ingresso e Q_{out} ogni flusso in uscita, inclusa mandata e ritorno della circolazione. Ciò differisce dal confine dell'intero sistema dell'articolo precedente. L'esempio sintetico pone a zero altri termini, come l'evaporazione.

r=(V_1-V_0)-\sum_i(Q_{in,i}-Q_{out,i})\Delta t_i

Usando L/min e minuti si ottiene il residuo r in L. Nel nostro esempio originale, l'afflusso è 1,0 L/min e il deflusso 0,2 L/min per cinque minuti. Il guadagno previsto è 4 L, mentre il volume dedotto dal livello sale solo da 100 L a 101 L. Il residuo è −3 L.

Ciò induce a indagare flussi non registrati, bias di portata/livello, differenze di temporizzazione o perdite omesse. Non è prova di una perdita.

from math import isfinite


def transport_minutes(line_l, flow_l_min):
    if not all(isfinite(x) for x in (line_l, flow_l_min)):
        raise ValueError("finite values required")
    if line_l < 0 or flow_l_min <= 0:
        raise ValueError("nonnegative volume and positive flow required")
    return line_l / flow_l_min


def residual_l(v0, v1, intervals):
    if not all(isfinite(v) and v >= 0 for v in (v0, v1)):
        raise ValueError("invalid tank volume")
    if not intervals:
        raise ValueError("intervals required")
    predicted = 0.0
    for minutes, inflow, outflow in intervals:
        if not all(isfinite(x) for x in (minutes, inflow, outflow)):
            raise ValueError("finite interval values required")
        if minutes <= 0 or min(inflow, outflow) < 0:
            raise ValueError("invalid interval")
        predicted += (inflow - outflow) * minutes
    return (v1 - v0) - predicted


print(f"transport: {transport_minutes(0.50, 0.25):.1f} min")
print(f"residual: {residual_l(100, 101, [(5, 1.0, 0.2)]):.1f} L")

Salva come measurement_check.py ed esegui python3 measurement_check.py per ottenere 2.0 min e -3.0 L. Le portate sono costanti all'interno di ciascun intervallo, e gli intervalli sono assunti coprire l'intero periodo di osservazione senza lacune o sovrapposizioni. Questo piccolo esempio non accetta timestamp, quindi non può verificare automaticamente quell'ipotesi.

Cambia il volume finale a 104 L e il residuo diventa zero. Dividere cinque minuti in due e tre minuti alle stesse portate lascia il risultato invariato. Per dati misurati, invalida un integrale incompleto invece di trattare la portata mancante come zero.

Supponi che ciascun volume agli estremi abbia un limite di errore di 0,5 L, ciascuna portata un limite di errore di 0,1 L/min, e la durata sia esatta. Il contributo nel caso peggiore all'errore del residuo su cinque minuti è 0.5+0.5+5(0.1+0.1)=2.0 L. Queste sole ipotesi non possono spiegare una discrepanza di 3 L. Questo è un limite illustrativo, non l'accuratezza di un prodotto o un intervallo di confidenza statistico. Convalida i limiti e i termini omessi prima di diagnosticare un guasto.

Separa la circolazione dalla ventilazione

La circolazione muove e mescola l'aria interna; la ventilazione scambia aria con l'esterno. La guida per serre di NC State le tratta separatamente. Non inserire la portata nominale di un ventilatore di circolazione in un bilancio di CO₂ come scambio con l'esterno.

Per le indagini sulla velocità dell'aria nella chioma, registra orientamento della sonda, posizione, durata della media, illuminazione e stato delle ventole. La portata sul fronte di un ripiano non stabilisce la portata sul suo retro. Conserva le differenze spaziali e le fluttuazioni oltre alle medie, e ripeti l'indagine quando la crescita della coltura cambia i percorsi del flusso. Una singola velocità dell'aria non predice direttamente la traspirazione o le malattie.

Metti in servizio la catena di misura

  1. Definisci lo scopo dell'osservazione e il confine; allinea ID di posizione, unità e tempo.
  2. Confronta con standard o strumenti di riferimento e conserva i risultati prima/dopo la regolazione.
  3. Indaga le differenze tra strumenti tramite misure co-locate, separatamente dalle indagini spaziali.
  4. Confronta i log operativi con le osservazioni, distinguendo trasporto, risposta e ritardi di comunicazione.
  5. Usa il bilancio idrico e più misure per trovare incoerenze, quindi indaga le cause concorrenti.

Questo stabilisce le osservazioni per il controllo e la stima successivi. La stima da immagini della pianta richiede la stessa disciplina: conserva tempo, illuminazione e punto di vista dell'immagine prima di interpretare cambiamenti apparenti come crescita.

Immagini di piante CEA — misurare l'area proiettata, distinguere l'area fogliare

Più verde in una fotografia significa più foglia?

La stessa pianta può occupare una regione visibile diversa quando cambiano orientamento fogliare, sovrapposizione, illuminazione o posizione della fotocamera. Il nostro primo compito di stima è quindi limitato all'area proiettata di una regione selezionata in un'immagine. Non stima direttamente la superficie fogliare, la massa, la resa o lo stress.

La guida precedente sul rilevamento separava le differenze spaziali, strumentali e temporali. Anche le immagini necessitano di registri di acquisizione ed elaborazione. Qui, ellissi sovrapposte formano input sintetici; non ci sono fotografie di piante misurate né modelli addestrati. Esempi controllati espongono le cause di fallimento prima di progettare la valutazione su piante reali.

Definisci prima la grandezza

Per una maschera binaria M(u,v) con i pixel target uguali a uno, il conteggio dei pixel è N=\sum_{u,v}M(u,v). Data una scala isotropa assunta s [mm/pixel], l'area equivalente sul piano di riferimento è:

A_{proj}=Ns^2

La nostra base sintetica contiene 14.738 pixel. A 0,5 mm/pixel, diventa 3.684,50 mm². La scala è fornita a scopo illustrativo, non misurata automaticamente.

Grandezza Cosa misura questa pagina Cosa non è
Conteggio pixel della maschera Numero di pixel selezionati Area geometrica racchiusa da un contorno
Area proiettata sul piano di riferimento Conteggio pixel per la scala al quadrato Superficie reale di foglie curve
Unione visibile Regione target visibile dall'alto Somma dell'area di ciascuna foglia sovrapposta
Regione verde Candidati selezionati per colore Identificazione semantica garantita delle foglie

L'analisi delle dimensioni di PlantCV calcola analogamente proprietà da regioni etichettate e supporta la conversione tramite dimensioni in pixel. Mantieni separati l'estrazione della regione e la conversione delle unità. Il nostro codice conta i pixel direttamente e non chiama PlantCV.

Mantieni coerenti acquisizione e scala

Registra posizione e orientamento della fotocamera, lunghezza focale, dimensioni dell'immagine, esposizione, bilanciamento del bianco, illuminazione, ID pianta e timestamp. Se esposizione o bilanciamento del bianco sono automatici, registra quello stato. Una soglia fissa applicata a condizioni dell'immagine mutevoli può trasformare cambiamenti di colore in apparenti cambiamenti di area.

Una lunghezza nota di 100 mm che si estende per 200 pixel dà 0,5 mm/pixel in quella posizione. Posiziona il riferimento nel piano di misura e allinea la fotocamera nel modo più perpendicolare possibile. Se distorsione o prospettiva sono rilevanti, usa la calibrazione della fotocamera e un'appropriata correzione planare. Scale orizzontali e verticali diverse richiedono Ns_xs_y.

Un riferimento sul pavimento non condivide necessariamente la scala delle foglie che crescono sopra di esso. La correzione planare non rende coplanare una chioma tridimensionale. Quando queste ipotesi non valgono, riporta i conteggi di pixel sotto acquisizione fissa o l'area equivalente sul piano di riferimento, invece di rivendicare l'area fogliare fisica.

Usare 0,6 invece di 0,5 mm/pixel moltiplica l'area della stessa maschera per 1,44: un aumento del 44%. Un'estrazione corretta può coesistere con una conversione di unità errata.

Seleziona i candidati di colore

Il tutorial OpenCV dimostra la conversione in HSV e la selezione dell'intervallo di colore con inRange. Selezionare il verde non equivale a riconoscere una foglia.

Gli input sono 320×240 pixel. Nella rappresentazione HSV a 8 bit di OpenCV, questo esempio seleziona H 35–85, S 80–255 e V 100–255. H non viene inserito direttamente come angolo da 0–360. I nostri array generati sono RGB, quindi la conversione usa COLOR_RGB2HSV; non riutilizzare ciecamente quella conversione su immagini BGR restituite da imread.

Il nucleo è di tre righe. Generazione dell'immagine, confronto delle condizioni e verifica sono nel download completo.

hsv = cv2.cvtColor(rgb, cv2.COLOR_RGB2HSV)
mask = cv2.inRange(hsv, (35, 80, min_v), (85, 255, 255)) != 0
pixels = int(np.count_nonzero(mask))

Non viene applicato alcun riempimento morfologico o rimozione di piccole componenti. Se si aggiunge tale elaborazione, verificare se cambia le foglie strette o gli spazi tra le foglie rispetto alle maschere di riferimento.

Confronta i fallimenti con la stessa geometria

Il riferimento generato è l'unione visibile nel fotogramma di tre ellissi. La sovrapposizione è contata una volta, e le porzioni fuori dal fotogramma sono escluse.

Base sintetica, tag di sfondo verde e lato sinistro attenuato, con falsi positivi segnati in rosso e falsi negativi in blu.

Il rosso segna lo sfondo selezionato come target; il blu segna i pixel target mancati. Le regioni verdi mantengono i loro colori di input. Queste sono forme sintetiche, non fotografie di piante.

Condizione Pixel selezionati Area equivalente sul piano [mm²] IoU Interpretazione
clean 14.738 3.684,50 1,000 Corrisponde al riferimento sintetico
green_tag 15.538 3.884,50 0,949 Aggiunge 800 pixel di sfondo
green_tag_roi 14.738 3.684,50 1,000 Esclude il tag in questa disposizione
dim 7.428 1.857,00 0,504 Manca quasi la metà senza cambiare forma
dim_lower_v 14.738 3.684,50 1,000 V minimo 40 recupera questa regione scura
wrong_scale 14.738 5.305,68 1,000 Maschera corretta, conversione più grande del 44%
clipped 13.016 3.254,00 1,000 Corrisponde al riferimento nel fotogramma, ma non all'intero oggetto

La green_tag_roi fissa inizia a (50,20), con larghezza 230 e altezza 190 pixel. È stata scelta per evitare questo tag sintetico, non come regione di interesse indipendente dalla coltura. Una crescita oltre la ROI escluderebbe pixel target genuini.

Abbassare il V minimo non è una soluzione universale. Recupera qui il target scuro, ma può ammettere sfondo verde scuro in scene reali. Non regolare le soglie sulla base delle risposte di ciascuna immagine e poi riportare l'accuratezza solo su quelle stesse immagini.

Valuta area e posizione separatamente

Per la previsione P e il riferimento G, l'intersezione su unione misura la sovrapposizione spaziale:

IoU=\frac{|P\cap G|}{|P\cup G|}

Numeri uguali di pixel in eccesso e mancanti producono errore di area zero nonostante posizioni errate. Un riferimento [0,1,1,0] e una previsione [1,1,0,0] contengono ciascuno due pixel selezionati, ma il loro IoU è 1/3.

Gli output includono anche la precisione, la frazione corretta di pixel selezionati, e il richiamo, la frazione recuperata di pixel di riferimento. mask_area_error_percent è errore del conteggio pixel rispetto al riferimento, non errore fisico dalla calibrazione della scala. Resta zero per wrong_scale. I rapporti non definiti, incluso l'IoU di due maschere vuote, sono JSON null anziché un punteggio perfetto assunto.

touches_frame segnala i pixel selezionati che toccano un bordo dell'immagine. È vero per clipped. Non rileva ogni oggetto incompleto: la segmentazione potrebbe mancare i pixel del bordo, oppure una ROI interna potrebbe rimuovere parte del target. Ispeziona l'immagine e la ROI anche quando il flag è falso.

Scarica e riproduci

Scarica lo ZIP completo, il codice sorgente Python, i risultati attesi, il README e il manifest. Lo ZIP include input, riferimenti, maschere estratte e sovrapposizioni degli errori, tutti rigenerabili dalla stessa fonte.

Ambiente testato: Linux x86_64, Python 3.12.3, NumPy 1.26.4 e OpenCV 4.6.0. Le versioni delle dipendenze sono fissate per la riproduzione, non una certificazione per altri sistemi operativi o versioni di Python.

Dopo aver estratto lo ZIP, esegui:

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python experiment.py --self-test
.venv/bin/python experiment.py --verify expected.json --out reproduced

Su Windows, sostituisci .venv/bin/python con .venv\Scripts\python.exe. La directory di output non deve esistere; gli output esistenti non vengono sovrascritti. Vengono salvati il JSON dei risultati e i file PNG di ciascuna condizione. Gli output di base sono inclusi in samples/.

Cambia il V minimo con:

.venv/bin/python experiment.py --min-v 40 --out lower-v

Solo dim_lower_v usa sempre 40; le altre condizioni usano il valore fornito. I risultati modificati falliscono intenzionalmente il confronto con la baseline expected.json. Non aspettarti che la verifica di baseline passi dopo aver modificato l'esperimento.

Sette test coprono un rettangolo noto, maschere ad area uguale/posizione diversa, maschere vuote, relazioni tra i sette casi, input non validi, risultati attesi modificati e omissioni di ROI. Il download originale non ha alcuna funzione di ingestione di foto reali; l'adattatore del browser è disponibile sopra.

Valuta su piante misurate prima di fare affermazioni biologiche

Quanto segue è una proposta di valutazione per la fase successiva, non un lavoro completato da questo esempio sintetico.

  1. Conserva ID delle piante, date, illuminazione, geometria della fotocamera e immagini originali.
  2. Definisci l'appartenenza al target, incluso se steli o foglie senescenti contano, e crea maschere di riferimento umane.
  3. Separa le immagini di sviluppo della soglia da quelle di valutazione. Considera divisioni per pianta o data di acquisizione piuttosto che semplicemente separare fotogrammi video adiacenti.
  4. Riporta gli errori per illuminazione, sfondo, sovrapposizione e ritaglio, conservando metriche di area, IoU e sovrapposizioni degli errori.
  5. Per stimare l'area fogliare reale o la massa secca, raccogli misure di riferimento indipendenti corrispondenti e convalida quella mappatura come modello separato.

I cambiamenti dell'area proiettata nelle serie temporali possono derivare da postura o sovrapposizione. Produrre una metrica dell'immagine non stabilisce il tasso di crescita o lo stress. Prima rendi riproducibile l'osservazione, poi usa dati di riferimento per verificare cosa rappresenta.

Zona radicale CEA — separare EC, pH, ossigeno e bilancio idrico

Quando il livello dell'acqua scende, cosa va ripristinato?

Una soluzione nutritiva scende da 100 L a 90 L. Quell'osservazione da sola non può distinguere evaporazione, assorbimento idrico della pianta, perdita o drenaggio. Non stabilisce nemmeno l'assorbimento di nutrienti. Ripristinare il volume e ripristinare la composizione dei nutrienti sono decisioni separate.

Seguendo la guida sull'ambiente luminoso, questo articolo esamina l'ambiente radicale. Introduce un sistema a soluzione ricircolante; non è una ricetta per colture né un'implementazione automatica del dosaggio. Tutti gli esempi numerici sono sintetici.

La zona radicale è la regione in cui le radici scambiano acqua, nutrienti e gas con l'ambiente circostante. Una lettura del serbatoio è utile, ma non deve necessariamente descrivere la superficie delle radici, la fine di un canale o l'interno di un substrato.

Mantieni distinte cinque misure

Misura Significato e unità Cosa non stabilisce da sola
EC Conducibilità elettrica, ad esempio mS/cm Concentrazioni individuali di nitrato, potassio o calcio
pH Grandezza logaritmica legata all'attività degli ioni idrogeno Acido o base necessari per raggiungere un pH target
Ossigeno disciolto (DO) mg/L o percentuale di saturazione Tasso di erogazione di ossigeno alla superficie radicale
Temperatura dell'acqua °C nella posizione di misura Temperatura dell'aria o l'intera distribuzione della temperatura radicale
Volume e portata L e L/min, ad esempio Assorbimento di singoli nutrienti

Questa è una tabella di pianificazione della misura. Le condizioni accettabili dipendono dalla coltura, dallo stadio di crescita e dal sistema di produzione.

L'EC non può ricostruire la composizione

1 mS/cm = 1.000 µS/cm = 1 dS/m. Registra le unità. La conducibilità cambia anche con la temperatura del liquido: conserva la temperatura misurata, le impostazioni di compensazione e la temperatura di riferimento, e distingui le letture compensate da quelle non compensate.

L'EC non rivela le concentrazioni dei singoli sali, come spiegato nella guida ai test dell'acqua dell'Oklahoma State University. Una singola lettura non può distinguere l'esaurimento di un nutriente dall'accumulo di un altro ione.

Anche una visualizzazione in "ppm" derivata dall'EC non è una misura di singoli nutrienti. Registra il suo fattore di conversione e distinguilo da un risultato di concentrazione di laboratorio. Usa l'analisi dell'acqua sorgente e della soluzione quando serve la composizione.

La guida alla gestione dei nutrienti di OSU individua come rilevanti il test dell'acqua sorgente, la concentrazione di sali, il pH, l'alcalinità e i rapporti tra nutrienti. La nostra inferenza operativa è evitare di trattare un ritorno al setpoint di EC come prova che la formulazione originale sia stata ripristinata.

Registra pH e alcalinità separatamente

Il pH descrive l'acidità o basicità attuale. Poiché è logaritmico, una media pesata sul volume di due letture di pH generalmente non dà il pH della soluzione miscelata. USGS: pH e acqua

L'alcalinità misura la capacità di neutralizzare gli acidi. Due acque con lo stesso pH iniziale possono rispondere in modo diverso alla stessa aggiunta di acido quando la loro alcalinità differisce. USGS: alcalinità e acqua

Una regola che aggiunge sempre la stessa dose per un errore di pH di 0,5 unità confonde queste grandezze. Per valutare un intervento, registra l'acqua sorgente, il volume del serbatoio, la sostanza e la quantità aggiunta, e il tempo di misura dopo la miscelazione. Il bilancio idrico sottostante non può calcolare la dose necessaria.

L'ossigeno richiede un percorso di erogazione

La solubilità di equilibrio dell'ossigeno dipende da temperatura dell'acqua, pressione atmosferica e salinità. USGS DOTABLES usa queste condizioni per calcolare la solubilità. A parità di pressione e salinità, l'acqua più calda generalmente trattiene meno ossigeno disciolto all'equilibrio. Verifica le condizioni di conversione quando confronti mg/L e percentuale di saturazione.

Le radici richiedono ossigeno per la respirazione. La guida di Cornell alle verdure a foglia idroponiche discute l'erogazione di ossigeno alle radici e la temperatura dell'acqua. Una lettura di DO del serbatoio apparentemente adeguata non stabilisce le stesse condizioni all'interno di una massa radicale densa. Registra la circolazione, l'aerazione e la posizione di campionamento, incluse le differenze tra ingresso e uscita del canale di coltivazione.

Diagram 2 · Use the button to switch views
Sistema ricircolante concettuale con input e perdite esterni, circolazione interna, e osservazioni separate del serbatoio e della zona radicale.

Per un confine che racchiude l'intero sistema, la circolazione interna non è un input idrico esterno. Il diagramma non implica una miscelazione completa o un ossigeno uniforme.

Con un substrato, contano anche la ritenzione idrica e i percorsi dell'aria. Il DO del serbatoio da solo non stabilisce l'aerazione del substrato. Non applicare direttamente il calcolo a compartimento liquido singolo sottostante all'interno di un substrato.

Mantieni separati i conti di acqua e soluti

Scegli un confine che racchiuda l'intero sistema ricircolante, incluso serbatoio, tubazioni e canali di coltivazione. Su un intervallo, siano V_{in} le aggiunte esterne, V_{out} lo scarico liquido e V_w l'evaporazione più l'acqua trasferita alle piante, tutti in L.

V_1=V_0+V_{in}-V_{out}-V_w

Non aggiungere la circolazione interna della pompa come acqua di reintegro. Un confine limitato al solo serbatoio conterebbe invece esplicitamente i suoi flussi in uscita e di ritorno.

Per un soluto tracciato, la massa è M [mg] e la concentrazione è C=M/V [mg/L]:

M_1=M_0+M_{in}-M_{out}-U-R

U è il trasferimento alle piante; R è la rimozione netta dalla fase liquida, come la precipitazione. La rimozione dal liquido non significa distruzione di materia. Lo scarico liquido trasporta sia acqua sia soluto, a differenza dell'evaporazione. Per lo scarico continuo, usa M_{out}=\int C_{out}(t)Q_{out}(t)dt per tenere conto della concentrazione variabile.

Il seguente esempio aritmetico originale verifica questa contabilità. Non è un tasso di assorbimento misurato di una pianta, una ricetta di fertilizzante o una previsione di EC. Inizia con 100 L contenenti 10.000 mg di un componente: 100 mg/L. Assumi nessuna aggiunta o precipitazione.

Caso sintetico Volume finale Massa finale di soluto Concentrazione finale
A: perdita di 10 L di acqua; il soluto resta 90 L 10.000 mg 111,11 mg/L
B: trasferimento di 10 L di acqua e 2.000 mg alle piante 90 L 8.000 mg 88,89 mg/L
C: scarico di 10 L di soluzione uniforme 90 L 9.000 mg 100,00 mg/L

La stessa diminuzione di volume può accompagnare una concentrazione crescente, decrescente o invariata. Aggiungere 10 L di acqua senza alcun soluto tracciato ripristina A a 100 mg/L, ma B raggiunge solo 80 mg/L. Ripristinare il volume non ripristina la massa di soluto.

Riproduci il confronto in Python

Salva quanto segue come root_zone.py ed esegui python3 root_zone.py. È necessaria solo la libreria standard di Python.

from math import isfinite


def concentration(volume_l, mass_mg):
    if not (isfinite(volume_l) and isfinite(mass_mg)):
        raise ValueError("finite values required")
    if volume_l <= 0 or mass_mg < 0:
        raise ValueError("positive volume and nonnegative mass required")
    return mass_mg / volume_l


initial_v, initial_m = 100.0, 10000.0
initial_c = concentration(initial_v, initial_m)
cases = {
    "A": (initial_v - 10, initial_m),
    "B": (initial_v - 10, initial_m - 2000),
    "C": (initial_v - 10, initial_m - 10 * initial_c),
}
for name, (volume, mass) in cases.items():
    print(f"{name}: {concentration(volume, mass):.2f} mg/L")
print(f"B + water: {concentration(cases['B'][0] + 10, cases['B'][1]):.2f} mg/L")

Gli output sono 111.11, 88.89, 100.00 e 80.00 mg/L. Cambia la rimozione di 2.000 mg in B a 1.000 mg: dopo la perdita di volume, la concentrazione diventa 100 mg/L. L'assorbimento può avvenire anche quando la concentrazione è invariata. Volume zero e massa residua negativa generano errori.

Questo codice non calcola EC, pH o DO. Una contabilità corretta per un componente non convalida l'equilibrio chimico multicomponente o la risposta della coltura.

Decidi cosa osservare successivamente

Queste sono combinazioni di osservazione proposte, non regole di dosaggio automatico.

Osservazione Controlli successivi
L'EC sale mentre il volume scende Storico di reintegro e scarico, temperatura del liquido e compensazione, composizione dell'acqua e della soluzione
L'EC è stabile mentre la condizione della pianta cambia Componenti individuali, DO e temperatura della zona radicale, flusso, luce e storico dell'aria
Il pH cambia di nuovo dopo la regolazione Tempi di miscelazione e misura, alcalinità dell'acqua sorgente, storico delle aggiunte
Il DO del serbatoio e dell'uscita differiscono Letture sincronizzate, condizione del sensore, circolazione, aerazione e distribuzione delle radici

Associa tempo, posizione, unità e calibrazione a volume d'acqua, reintegro, scarico e aggiunte. Il posizionamento dettagliato dei sensori, la gestione dei singoli nutrienti e il controllo del dosaggio sono passaggi successivi. Il fondamento qui è distinguere una concentrazione osservata dalla massa rimanente nel sistema.

What to read next

Rivedere i cambiamenti persi tramite il campionamento.Campionamento e aliasing: perché un polling più veloce non è sufficienteReview the backgroundControllo climatico CEA — temperatura, umidità, sensori, risposta e accoppiamentoContinue the seriesCEA dosaggio dei nutrienti — contabilità del serbatoio, calibrazione delle pompe e controllo degli stati