Low Power Arduino Nano prototipo sistema di irrigazione

Buongiorno a tutti , questo è il mio primo posto qui sul forum . Sono sempre stato un lettore quindi conosco bene la precisione degli utenti qui , nonostante questo potrei fare comunque qualche errore , quindi scusatemi .

Tengo a dire che il progetto che illustrerò è solo un prototipo e raggiunta una prima fase di funzionamento , lo testerò per qualche mese prima di confermare il funzionamento totale.

I componenti :

Obiettivo :

Irrigare ogni giorno ad un'ora stabilità n vasi , (n dipenderà da varie variabili ) . Il sistema sarà alimentato da 2 fonti diverse a batterie . Credo di aver letto che i relè sono abbastanza noiosi nel mondo Arduino , e l'importanza di avere alimentazioni separate .
L'arduino penso di alimentarlo con un Power Bank, il relè e la pompa con 4 Batterie da 1.5V(860mAh l'una) , alimentare la pompa 6v non credo che possa dare troppi problemi, ma se servisse posso diminuirla a 5V.
Voglio alimentare tutto a batteria perché voglio evitare completamente l'uso di alimentatori da muro.

Funzionamento pensato:

Utilizzando la libreria Low Sleep , l'Arduino dorme per 1 minuto e poi nel giro di pochi secondi legge l'ora dal RTC e se corrisponde all'ora target controlla con il sensore ad ultrasuoni se il livello dell'acqua è inferiore ad un offset , fondamentale per evitare di accendere la pompa senza acqua , se i casi sono positivi accende il relè/pompa per il tempo che basta , per poi spegnersi e ritornare in sleep .
So che con un RTC con sveglia/interrupt sarebbe molto meglio per svegliarlo dallo sleep , ma per l'inizio voglio provare così .

Il problema principale di questo progetto è la durata di funzionamento. Il mio obiettivo sono 2 settimane di funzionamento tra una carica e l'altra , capisco che sono un bel po'.

Queste sono le misure che ho preso fino ad adesso :

  • Uso libreria Low Sleep ( Power Off totale per 8 secondi per 1 minuto )
  • Alimentazione dei sensori SOLO quando devono essere usati ( RTC ogni minuto e sensore ad ultrasuoni solo quando l'ora è giusta )
  • Abbassata frequenza a 8Mhz
  • Ipotesi di rimozione Power LED

In casa ho un powerbank da 2200 maH che alimenta Arduino , conosco il problema dei powerbank che si spengono da soli se non hanno abbastanza assorbimento, ma questo sembra non dare problemi per adesso.
Per quanto riguarda l'alimentazione del relè e della pompa con la batterie devo ancora testarlo , ma penso che dovrò sostituire anche quel sistema .

Questo è un post con le mie idee (scusate se un po' confuse ) , il circuito è tutto volante e sto solo testando la durata della batteria del Power Bank.
Sareste così gentili da consigliarmi dei miglioramenti? Ho poca esperienza con il Deep Sleep di Arduino e soprattutto con sistema di alimentazione esterni . Vi ringrazio tantissimo

Io uso le Lipo da 2200 Ma come batterie, che utilizzo anche sugli aerei RC e che puoi comprare a prezzi decenti ad esempio su HobbyKing (dal sito Europeo arrivano + veloci) e spesso hanno offerte proprio sulle batterie.
Una Lipo da 250 Ma messa su una spilla per mia nuora e con display lcd da 0.95 pollici ho provato a lasciarla accesa 5-6 ore e andava ancora, se non hai display da alimentare ovviamente le ore aumentano...quà il video se ti interessa:

Con l'orologio DS1307 non ho avuto una bella esperienza, nel senso che sgarra di parecchi secondi ogni giorno.
In un'orologio che sto facendo per la macchina utilizzo un modulo GPS che prende l'ora UTC molto precisa, prende l'ora 1 volta e quando è settata l'ora utilizzo il suo orologio interno (sto usando un ESP32 Yellow)...e poi puoi anche disattivare il GPS.
Per cui puoi magari collegare il GPS ogni 2 giorni ad esempio.
Anche ESP32 ha 2 modalità sleep che può essere risvegliato tramite un pin (nel caso ad esempio la cisterna abbia raggiunto un certo livello di acqua).
Immagino che nella cisterna tu raccolga acqua piovana, perchè se inveci usi l'acqua di casa ti evitavi la rilevazione del livello e le pompe....potevi usare una normale valvola idroelettrica che puoi ricuperare anche da vecchie lavatrici.
Con i relè non ho mai avuto problemi tranne uno che voleva l'alimentazione esterna, per cui scegli quelli senza alimentazione esterna o timer che non ci servono visto che usi Arduino per attvarli/disattivarli.
Con questi relè ho controllato anche le piastre elettriche di una cucina e il forno, che consumano sui 1500 Watt senza problemi.
Buon lavoro...ciaoooo

Ciao , grazie mille per la risposta.

Per quanto riguarda il powerbank da 2200maH , si sta comportando abbastanza bene devo dire. Con tutte le accortezze : (Arduino a 8Mhz , sensori accesi solo quanto mi servono e deep sleep) , sono + di 24 ore che è acceso e la carica ( è difficile da dire perchè sono solo 4 puntini ) dovrebbe essere tra 100 e 95% . Penso che potrà durarmi almeno 5 giorni totali ... lontani dalle 2 settimane come mio obiettivo. Ho già preso però un powerbank da 10000 maH , se tutto va bene , con questo dovrei riuscire ad arrivare a 2 settimane.

Per l'orologio , anche io ho il timore che non sarà perfetto con il passare del tempo.
A me interessano essenzialmente le ore e i minuti , non i secondi. Per esempio se io imposto 8:00 e si accende alle 8:1-2 non succede nulla di male. Comunque con un foglio excel mi sto segnando l'ora ogni giorno per capire se sta perdendo secondi/minuti.

Per il relè , ti devo dire la verità sono un pò confuso.
Il relè per essere alimentato richiede almeno tra i 50 e 100 mA, siccome l'Arduino più di 40mA non riesce a dare , non capisco quando dici "senza alimentazione esterna" , perchè con arduino non posso alimentarlo.

Per l'acqua utilizzo una cisterna esterna. Pensavo di posizionare la pompa infondo ovviamente .

Inoltre se usassi lo stesso powerbank mi andrebbe giù subito , con il consumo della pompa e del relè.

Per la pompa e Relè sto usando 4 batterie da 1.5 e 860maH , l'una. Dovrei testarla con la pompa ancora , ma anche qui 20-40 secondi al giorno di utilizzo , forse a 2 settimane non ci arrivo.

Suggerirei di usare rele' a stato solido (che dal lato alimentazione richiedono pratiamente la corrente di un led, 10mA, massimo 15), non sono rumorosi, non creano disturbi ...

Per alimentare il nano potresti usare semplicemente 3 o 4 batterie LiPo in parallelo, tipo le 18650 (si trovano fino a 3500mAh senza problemi, occhio che al massimo possono essere da 3650mAh, qualsiasi batteria 18650 che dichiari di piu e' una truffa), ed un circuitino per ricaricarle con un connettore USB tipo le schedine con i TP4056, come ad esempio queste o simili, che includono la protezione per le batterie ... la tensione la prendi direttamente dalle batterie, se non ricordo male, usando l'oscillatore interno ad 8MHz, il 328P puo funzionare fino ad un minimo di 2.7V, consumando tipo 3 o 4 mA di suo, non in sleep ... ovviamente senza contare il consumo di tutto il resto.

Volendo esagerare si potrebbe portare il clock del core ad 1MHz, il che gli permetterebbe di funzionare fino a circa 1.8V, ma a quel punto le batterie si rovinerebbero (scendendo sotto i 2.4V e rimanendoci per un po, le litio si rovinano), quindi non credo ne valga la pena.

Dato che usi un RTC esterno, non ti serve che il clock interno sia precisissimo, pero' suggerirei di passare al DS3231, molto piu preciso e che ha un'assorbimento fra i 200 ed i 300 microAmpere, e puo funzionare tranquillamente anche lui fini ad un minimo di 2.4V circa

1 Like

E' sbagliato l'uso della pompa... Sarebbe meglio un contenitore posto in alto e un'elettrovalvola con un motorino che in un verso apre e nell'altro chiude, oppure pilotata a impulsi.

Grazie a @Datman e @Etemenanki .
Prenderò in seria considerazione l'uso dell'elettrovalvola. Potrebbe spiegarmi esattamente il perchè è sbagliato l'uso della pompa?Grazie

Per il powerbank da 2200 mAh devo dire che sta tenendo abbastanza bene. Ho calcolato all'incirca che perde 1% della batteria ogni ora. Il che significa che dovrebbe durare teoricamente 100 ore / 4 giorni. Vi terrò aggiornati

La pompa assorbe corrente per tutta la durata dell'irrigazione!

Il problema è che per usare una valvola invece di una pompa l'acqua deve essere già più in alto di dove serve

Non sempre è così

@Datman Giusto!Sicuramente l'uso dell'elettrovalvola assorbirebbe meno corrente dalle batterie. Voglio comunque specificare che la pompa rimarrà accesa massimo 30/40 secondi al giorno. E come dice @Ducembarr purtroppo a causa di spazi ristretti non posso avere contenitori posti in alto

Ciao, posso chiederti un link se disponibile del tuo powerbank? tutti quelli da me provati risentono del fatto che si spengono se assorbono troppo poco, quindi ho sempre dovuto scartare questa ipotesi...

Ho un vecchio Sony con un lato tondeggiante che non si spegne...

Guarda è un vecchio powerbank di sotto marca provo a cercarlo ...
Comunque a mia sorpresa , sta mattina mostrava oltre il 60% di autonomia. Tornato stasera ed era completamente scarico .
I risultati quindi con questo powerbank sono
autonomia : 2 giorni .
Ma la capacità potrebbe essere molto minore , essendo vecchio e di sotto marca non vorrei che con il tempo avesse perso la capacità.
Comunque dal primo test c'è stato sicuramente un miglioramento, infatti la durata del primo test era stata di 1 giorno , poi dopo aver fatto tutte le accortezze : ( Sleep, 8Mhz, accensione dei sensori solo quando servono ) ho ottenuto 1 giorno in piú di autonomia.
Ora sto provando quello da 10000 maH preso da Unieuro nuovo . Questo non si spegne ed é acceso da 10 minuti . Lo cerco e ti condivido il link

Anche i powerbank non sono a basso consumo, perché sono fatti per fornire correnti elevate per poco tempo. Se con 2,2Ah fai 2 giorni:
2,2Ah x una tensione media di 3,7V=8,1Wh
A 5V: 8,1/5=1,62Ah
Con un 85% di rendimento: 1,38Ah
1,38/48h=28mA.
200mA per 40s al giorno fanno un assorbimento medio di appena 93uA nelle 24 ore...
L'assorbimento è circa 28mA? Se è minore, lo stesso convertitore interno al power bank sta sprecando energia.

Per un basso consumo devi usare un ATmega328p alimentato direttamente da un elemento al litio, che da carico a scarico va da 4,2 a 3,2V e la pompa deve poter funzionare a quelle tensioni, eventualmente compensando il rallentamento leggendo la tensione di alimentazione e aumentando in proporzione la durata dell'irrigazione.

Naturalmente dovrai fare la programmazione tramite ICSP, ma parli di 8MHz, quindi già la stai facendo.

Usando i powerbank c'e' anche da tenere in considerazione un'altra cosa, a cui di solito pochi pensano.

Se e' il modello che si spegne, probabimente ha una piccola MCU che manda tutto quanto in "sleep" in assenza di assorbimento, per cui il circuito stesso del powerbank probabilmente consumera' poco, in sleep.

Ma se l'uscita dei 5V rimane sempre accesa, allora anche il boost che eleva la tensione della batteria fino ai 5V e' sempre acceso, e quello non e' sicuramente a consumo zero, posto anche che in genere i boost hanno un'efficenza minore dei buck.

In pratica, potrebbe consumare quanto il tuo circuito o quasi (dipende dal modello), solo che lo fa in continuazione ... ed anche se lo facesse solo mentre e' in uso, consumerebbe comunque una discreta corrente per se stesso.

Per quello suggerivo uno standalone alimentato direttamente dalla batteria, si elimina tutta la parte del boost che spreca corrente.

Da qualche parte dovrei avere un vecchio progetto di un timer ciclico a 6 canali fatto per funzionare a batteria, so che non e' quello che serve a te', ma modificarlo per aggiungere un RTC, magari un paio di canali extra, la possibilita' di usare uno schermettino OLED, e trasformarlo nell'hardware di una centralina programmabile per irrigazione, dovrebbe bastare un'oretta ... domani provo a vedere se ritrovo quel progetto e vedo cosa ne viene fuori.

3 Likes

Nella pi-pico on board c'è il chip https://www.richtek.com/assets/product_file/RT6150A=RT6150B/DS6150AB-05.pdf
Buck/boost, En, PSmode, 1MHz.
Se PS == LOW aumenta l'efficienza con correnti assorbite <10mA.

In accoppiata servirebbe un chip di carica per 2/4 o più litio ma non conosco alcun chip.

Che ne pensi @Etemenanki ?

L'ATmega328p a 1MHz consuma circa 1mA... :slight_smile:
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf pag. 268

Sarebbe pure un buon prodotto, se non ci fosse solo in un case praticamente impossibile da saldare senza forno reflow, quindi fuori portata della maggior parte degli hobbysti.

Volendo far funzionare tutto a 3.3V, si potrebbe usare un piccolo lineare LDO, tipo ad esempio AP2125, 65/70 mV di caduta a 100mA, 300mA massimi, soprattutto NON ha un circuito UVLO, per cui quando la batteria scende sotto i 3.4V, smette di regolare lasciando passare la tensione presente (meno la caduta), per cui limita la tensione a 3.3V quando la batteria e' superiore, ma non impedisce il funzionamento del circuito a tensione minore quando e'' al limite o leggermente inferiore (certo, servirebbe un sistema per tenere d'occhio la carica della batteria e dare un'avviso a display quando scende troppo, ma si puo fare).

Ho trovato i vecchi files Eagle del timer, ora provo a vedere come posso complicarlo piu di quanto sarebbe logico aspettarsi :smiling_imp: ... ehm, volevo dire modificarlo :grin:

1 Like

Allora, senza stare troppo ad ottimizzare, mi e' uscito questo "coso", che potrebbe perfino essere definito "centralina per irrigazione" con molto ottimismo.

Ho portato il numero delle uscite da 6 ad 8, ho previsto diversi tipi di SSR rispetto all'originale che ne usava un tipo solo, ho aggiunto la piedinatura per poter usare tre diversi tipi di display OLED che attualmente sono scesi abbastanza di prezzo (0.96 pollici 128x64, 1.3 pollici 128x64, ed 1.5 pollici 128x128), ho aggiunto l'RTC con DS3231 (ho scelto quello che viene venduto come RTC per PI pico, e' piccolo, ha la sua batteria sul retro, ha solo i pin indispensabili, serve togliere il connettore femmina e saldargli un'header maschio ma si puo fare), ho aggiunto un AP2125 a 3.3V in SOT23 come regolatore, ci sono 4 pulsanti che possono essere assegnati, c'e' il controllo della tensione della batteria (serve impostare la MCU sull'internal reference ad 1.1V, poi il partitore da un decimo della tensione della batteria ad ADC7 ed il partitore consuma sui 40uA con la batteria al massimo), gli SSR richiedono fra 3 e 5mA per funzionare (molto meno di qualsiasi rele' meccanico)

I display andranno saldati un po piu in alto, con header lunghi o pezzi di filo rigido, ma comunque i pulsanti richiedono una certa altezza per starci, ci si puo regolare in base al contenitore disponibile.

A proposito degli SSR, il mio timer in origine montava i CPC1002N, polarizzati e con una corrente massima di 700mA, quindi utilizzabili in sicurezza fino a 400mA circa con 40VDC, con lo stesso case e la stessa piedinatura si possono montare i CPC1020N, che reggono solo 30V al massimo (quindi 24 sicuri), pero' si possono usare in sicurezza fino ad 800mA o poco piu e NON sono polarizzati, quindi si possono usare anche per carichi in AC (massimo 24V), poi ho aggiunto anche la piedinatura per i CPC1706Y in SIP, si possono usare se serve piu corrente, massimo in sicurezza 40V e 3A DC (NON AC), cosi ci si monta il modello in base alle necessita'.

I connettori sono i soliti MTA a passo 156mil, e' presente una fila di pin per l'ICSP, i 4 pulsanti sono i classici 8x8mm che si usano anche sui PC ... purtroppo la macchina del caffe' non sono riuscito ad integrarla (il macinacaffe' andava a 220VAC, e sarebbe stato contro il regolamento ), ma credo di averci aggiunto abbastanza roba da soddisfare anche i piu esigenti in fatto di circuiti incasinati .

A proposito, la dimensione della scheda consente di incollarci dietro (con della spugna adesiva abbastanza spessa), o 4 portabatterie per le 18650, oppure fino a 5 celle 18650 saldate insieme in parallelo a pacchetto, dovrebbero garantire una discreta autonomia ... per la ricarica ho scelto di non integrare il circuito sulla scheda, dato che comperare una schedina gia fatta costa ormai molto meno che reperire tutti i componenti per realizzarsela, esempio , ed inoltre queste integrano gia anche la parte di protezione delle celle litio.

EDIT: dimenticavo, ovviamente di SSR si montano solo quelli che servono, o un tipo o l'altro, per ogni canale, ma niente impedisce di avere, ad esempio, alcuni canali con un tipo di SSR ed altri con un tipo diverso, in caso di necessita'.

2 Likes

Mi sono accorto solo ora che non avevo allegato i files nel caso qualcuno avesse voluto realizzarla, scusate.
cent-irrig-2.zip (179,3 KB)

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.