Ispirazione
Siamo partiti dalla challenge COESA – Beyond solar, che chiede di ripensare l'uso dei pannelli solari.
Sui tetti i pannelli sono collegati in serie. In una serie la corrente è la stessa per tutti, quindi il pannello peggiore trascina con se tutti gli altri. Basta l'ombra di un camino, una foglia o un po' di sporco su un solo pannello per frenare tutta la maglia.
Successivamente abbiamo indagato come questo problema viene affrontato in letteratura. I pannelli moderni hanno dei diodi di bypass intervengono su una filadi celle solo quando il pannello è già in tensione inversa. E nessuno sa perché quel pannello rende meno: ombra di passaggio, nuvola, sporco o un oggetto fermo. Volevamo un sistema che lo capisse e agisse da solo in tempo reale.
Il firmware e le schematiche sono disponibili su GitHub.
Cosa fa
OMBRA è un sistema embedded su Arduino UNO Q.
- Misura una sola corrente, quella della stringa, come fa un inverter.
- Interroga i pannelli a turno. Ogni pannello ha un relè in parallelo. Ogni 4 secondi OMBRA esclude un pannello dalla serie e vede come cambia la potenza generata.
- Esclude il pannello che frena la maglia. Chiude il suo relè, il pannello esce dalla serie e la corrente risale. Quando l'ombra passa, il pannello viene reinserito.
- Decide se conviene davvero con la corrente. Escludere un pannello toglie della tensione. OMBRA lo esclude solo se la potenza sale.
- Capisce la causa e apre un ticket solo dove serve:
| Cosa vede | Verdetto | Azione |
|---|---|---|
| Calano tutti i pannelli insieme | nuvola | nessuna |
| Un pannello crolla e poi torna | ombra di passaggio | escluso finché dura |
| Un pannello crolla e resta giù per 20 s | ostacolo fisso (foglia, oggetto) | escluso + ticket "togliere l'ostacolo" |
| Un pannello cala poco (62-85%) e resta così | sporco | resta in serie + ticket di pulizia |
Per la challenge COESA, OMBRA fa due cose:
- ottimizza la produzione, escludendo in tempo reale il pannello che frena la stringa;
- fa pulizia intelligente: manda a pulire solo il pannello sporco, e mai per una nuvola o un'ombra che passa.
Come l'abbiamo costruito
Hardware
- Arduino UNO Q 4 GB.
- Mini pannelli solari R1123 in serie.
- Sensore di corrente Seeed Grove 2.5A (ACS70331), che chiude la stringa.
- Un relè Grove per pannello, con il contatto in parallelo al pannello.
- Millefori con morsetti a vite.
Microcontrollore (sketch C++ sull'STM32 dell'UNO Q)
- Fa il ciclo dei relè con tempi precisi: prima apre e poi chiude, e non chiude mai tutti i relè insieme.
- Dopo ogni cambio aspetta 150 ms, poi fa la media di circa 700 letture in 100 ms. 100 ms sono un multiplo esatto dello sfarfallio delle lampade a 50/100 Hz, che così si annulla.
- Informa dello stato tramite un'interfaccia web servita dalla scheda
- Stato sicuro: se Python tace per 10 s, apre tutti i relè e i pannelli tornano in serie.
Linux (Python sul processore Qualcomm dell'UNO Q)
- Riceve le misure via Arduino Bridge.
- Decide le esclusioni con soglie, conferme su due cicli e tempi minimi tra un cambio e l'altro.
- Riconosce le cause e apre i ticket.
- Serve una dashboard web con la corrente della stringa, la corrente "senza OMBRA" e il guadagno, una card per pannello, il grafico, il registro e i ticket.
- Lo stesso codice gira in un simulatore sul laptop, con la fisica della stringa, il rumore e il disturbo dei relè, e in 137 test automatici.
Le sfide
- Lo zero del sensore si sposta quando scattano i relè. Con un relè chiuso il sensore leggeva 21 mA in più, con due circa 40 mA, anche a pannelli staccati. Le cause erano la massa in comune, il 3,3 V che cala e il campo delle bobine. L'abbiamo risolto con una taratura dello zero per ogni combinazione di relè, con fili di alimentazione separati e con il sensore lontano dai relè, e sostituendo il sensore con una resistenza.
- Il segnale è piccolo. I mini pannelli danno decine di mA, e l'offset del chip vale circa ±29 mA. Senza la taratura le misure non avrebbero senso.
- Le lampade sfarfallano a 100 Hz. Per questo la finestra di media è di 100 ms, sincronizzata con la rete.
- Una sola stampante 3D per 2 ore. La case completa richiedeva 9 ore su tre stampanti. L'abbiamo ridisegnata con pareti da esattamente 2 linee dell'ugello e pochi dettagli. Da 5 ore e 20 si è scesi a meno di 2, in un solo piatto.
Di cosa siamo orgogliosi
- Un solo sensore per tutta la stringa. Niente elettronica sui pannelli: basta un relè per pannello e la corrente che l'inverter misura già.
- Funziona sulla scheda vera: misura della corrente con taratura dello zero, ciclo dei relè, esclusione e rientro automatico, verdetti, ticket, dashboard e matrice LED.
- Distingue le cause, non solo il calo: nuvola, ombra, ostacolo fisso e sporco danno azioni diverse.
- È sicuro: se il software si blocca, tutti i pannelli tornano in serie da soli.
- Simulatore e 137 test: la logica si prova anche senza hardware.
- La villa solare disegnata in codice, da 9 ore di stampa a meno di 2.
Cosa abbiamo imparato
- Escludere il pannello più debole non sempre conviene: bisogna ragionare in potenza, non in corrente.
- Con una sola misura e un po' di logica si capisce molto di una stringa: quale pannello, quanto e perché.
- Su una scheda come l'UNO Q conviene dividere: i tempi stretti al microcontrollore, le decisioni a Python.
Prossimi passi per OMBRA
- Relè a stato solido (PhotoMOS) al posto di quelli meccanici: niente clic, niente disturbo sul sensore.
- Sensore di luce di riferimento, per riconoscere le nuvole anche con un solo pannello.
- Ombra abituale: imparare in un giorno le ombre previste di ogni pannello, per distinguere un camino da un ostacolo nuovo.
- Seconda vita: un pannello che resta basso anche pulito e al sole pieno riceve un ticket "sostituire", con la sua corrente reale misurata.
Le ultime tre sono già previste nel codice o nel simulatore, ma non ancora montate nel prototipo.
Team
Niccolò Pagano, Giulio Procopio, Marco Aldeeb, Lia.
Log in or sign up for Devpost to join the conversation.