Ardu-Aquarium Controller v. 3.3.1

Ciao a tutti,
mi pare che per il momento, il lato HW possa essere ritenuto accettabile, vorrei disegnare lo schema circuitale, ma sono in difficoltà, perché da questo punto di vista primo mi mancano le basi, poi Designspark che ho usato per il PCB della scheda relé si sta rilevando poco stabile, così da un po’ di giorni mi sbatto da un programma all’altro senza decidere quale usare, per il momento Kicad sembrerebbe essere il più semplice a livello di usabilità, bho, voi cosa consigliate considerando che mi trovo a dover escludere eagle a causa delle limitazione delle versione free quando si passa al pcb???
Insomma vorrei colmare la mancanza importante dello schema circuitale di questo progetto, ma non riesco a decidere come e con cosa iniziare…
Oltre allo schema, vorrei condividere alcune decisioni su come strutturare il menù, per il quale con Leouz sembrerebbe già deciso che useremo la Menwiz.
A mio avviso a parte la schermata fissa il primo accesso al menù dovrebbe avvenire con un elenco di opzioni che permettano di attivare le funzioni che ogni utente vuole sfruttare del cotroller:

  • Data e ora sono comunque da impostare sia in fase di installazione che per aggiustamenti in fase di funzionamento ad esempio per l’ora legale
  • Luci: quante linee attivare ed in base alla scelta abilitare l’impostazione dei foto periodi (potrei decidere di usare una sola linea ed attivare nel loop la funzione di gestione del fotoperiodo solo per la linea scelta.
  • Temperatura: L’utente dovrebbe poter decidere se leggerla e basta o se controllarla attraverso Arduino, di solito i riscaldatori hanno il loro termostato, ma se per esempio ho anche un cavetto sottosabbia può essere più comodo gestire la temperatura con Arduino, anche qui quindi andrebbe ativata la funzione di impostazione per i parametri della temperatura e poi per la gestione degli stessi.
  • PH: l’utente potrebbe decidere se leggerlo ed eventualmente correggerlo a suo piacere manualmente, oppure regolarlo automaticamente attraverso la CO2, in questo caso va attivata la funzione di acquisizione dei dati di range e poi la funzione di gestione di questi dati.
  • Cambio dell’acqua automatico far decidere all’utente se attivarlo manualmente, oppure dargli la possibilità di impostare una periodicità.
  • Accensione manuale di almeno una linea luci, è qualcosa che fa sempre comodo averla a portata di mano in caso di manutenzioni fuori orario o per monitorare qualcosa quando le luci sono spente.

Insomma, questo è il mio modo attuale di vedere le cose per organizzarle meglio, voi cosa ne pensate???

Scusa una domanda, sto facendo una lista dell'occorrente e mi chiedevonse il condensatore ceramico dello stadio di alimentazione dove c'è scritto 100 uF, è giusto o forse sono 100 nF? Può essere?

Si scusa ha ragione, sono da 100nF. :blush:

Ho fatto l'elenco dei componenti e lo ho messo anche nel post "Attuale configurazione" il terzo.
Spero di non aver dimenticato nulla, nel caso segnalate per favore XD.

Elenco completo dei componenti attualmente in uso sul mio controller (25/01/2013)

1 Display LCD 20X4 HD44780
3 PCF8574AP
1 RTC DS1307
1 Cristallo 32.768 KHz, 12.5 pF
1 Portabatterie mis. CR1220
1 Batteria CR1220
2 Trimmer 1,0 K?
10 Cond ceramici 100nF
1 R 50 ?
9 R 220 ?
3 R 1,0 K?
2 R 1,5 K?
1 R 4,7 K?
6 R 10,0 K?
2 IRF540
2 DS18B20 Waterproof
8 Fotoaccoppiatori 4N35
1 LM7805
1 Cond. Elettrol. 100µF
1 Cond. Elettrol. 10µF
1 Diodo 1n4
1 Led verde
1 Led rosso
1 Buzzer
5 Pulsanti momentanei

Scheda relé attualmente in uso (autoprodotta)

8 Relé Finder 40.52 – 12VDC / 8A / 250VAC
8 Zoccoli Finder 95.15.2
1 ULN2803
1 Cond. elettrolitico 1.000 µF 25v
8 Led
8 R 560 ?
8 Connettori a vite 4x1 passo 5,08
1 Connettori a vite 2x1 passo 5,08

Riccardo

Ti ringrazio per la precisione e la disponibilità, ho effettuato in questo istante l'ordine. Non vedo l'ora che arrivi il tutto per mettermi al lavoro.

Ciao Dandovino, ti aspetto, e ti ho scritto PM

Per tutti :smiley:
Ho iniziato a disegnare lo schema elettrico del controller, è la prima volta che ne disegno uno e sto usando Kicad, la bozza non è completa, mancano tutti i valori, ma vi chiedo se possibile un giudizio in generale su quello che ho fatto, se sono sulla giusta strada e se ne trovate eventuali errori. :blush:
Lo schema è in allegato.

Grazie in anticipo a chiunque vorrà dedicarmi qualche minuto. :slight_smile:

Riccardo

Non capisco quel potenziometro sull'alimentazione della backlight.
Perche' non ci hai messo il classico PNP collegato al pin7 del PCF8574, cosi' lo accendi o spegni da comando

Poi vedo inutili quei fotoaccoppiatori. Collegati come sono hanno solo la funzione di inverter per il pilotaggio della scheda rele' ( mancano comunque delle resistenze di pulldown).
Tanto vale usare due IC inverter o 8 transistor.
Ha senso usare dei fotoaccoppiatori se la parte transistors e' disaccoppiata dall'alimentazione della scheda

Poi, a parte qualche distrazione, come ad esempio il 7805 senza massa, o il PCF8574 (collegato ai fotoaccoppiatori) senza alimentazione.. anzi, in corto, etc etc etc..... stai andando bene

Ciao Brunello,
grazie infinite per avermi controllato, ne ho veramente e sinceramente bisogno…. Provo a risponderti, ma perdonami se scrivo Riccardate, in elettronica proprio non vado…

brunello:
Non capisco quel potenziometro sull'alimentazione della backlight.
Perche' non ci hai messo il classico PNP collegato al pin7 del PCF8574, cosi' lo accendi o spegni da comando

Il display, sarà sempre acceso, quindi non mi interessa di comandarlo in questo senso attraverso il PCF, con il potenziometro invece mi regolo a piacimento la luminosità e finisce lì, avevo anche pensato ad un potenziometro digitale, ma primo non so se ne esistono per questi scopi, secondo avrei rubato spazio alla poca memoria disponibile di Arduino per le routine per pilotarlo, quindi ho rinunciato.

brunello:
Poi vedo inutili quei fotoaccoppiatori. Collegati come sono hanno solo la funzione di inverter per il pilotaggio della scheda rele' ( mancano comunque delle resistenze di pulldown).

Ha senso usare dei fotoaccoppiatori se la parte transistors e' disaccoppiata dall'alimentazione della scheda

I fotoaccoppiatori, sono un mezzo per poter usare il PCF, che da solo non riesce a pilotare i darlington, dell’ULN2803 sulla scheda relé. Collegati come ho fato io prendendo spunto dalla figura 4 di questo link http://www.laurtec.it/brief-notes/programmazione-pic/125-bn0013-it-pcf8574-i2c-io-expander-libreria-ed-utilizzo mandando a zero le uscite del pcf che mi interessano mando 5v pieni col giusto amperaggio ai darlington che così funzionano, quindi non sono un traguardo ma un mezzo. Ad ogni modo i vantaggi sono che mi sono liberato dello shift register, che se anche fino ad ora funzionava bene, ad ogni avvio mi faceva sfarfallare tutti i relé, ho guadagnato tre pin liberi ed infine con la sola libreria IOexp leggo sia i tasti che piloto i relé, c'è anche che così ottengo un doppio isolamento galvanico e la cosa non mi dispiace affatto :smiley: , in merito alle resistenze di pulldown, se mantenessi questo schema, come dovrei collegarle? Forse all’uscita dei fotoaccoppiatori?

brunello:
Tanto vale usare due IC inverter o 8 transistor.

Perdonami, ma gli IC inverter non li conosco, (non lo scrivo mica per caso che sono un’analfaelettronico) oggi mi metto a googlare e vedo di approfondire in merito, se hai tu qualcosa e possibilmente in italiano da farmi studiare, te ne sarei molto grato, poi secondo te se volessi fare delle prove, quali sono quelli più comunemente usati per questi scopi?
I transistor li ho provati, in particolare i BC347 mi pare, con lo schemino classico, ma i darlington dell’ULN2803, non mi funzionavano, non so forse/sicuramente ho fatto io qualche errore…

brunello:
Poi, a parte qualche distrazione, come ad esempio il 7805 senza massa, o il PCF8574 (collegato ai fotoaccoppiatori) senza alimentazione.. anzi, in corto, etc etc etc..... stai andando bene

Ho sistemato il 7805, e l’alimentazione del pcf, ma non riesco a vedere il corto… :blush:
Bho riallego lo schema e mi rimetto nuovamente alla pubblica gogna…

Grazie infinite Riccardo :slight_smile:

Start OT...Perdonatemi se inquino il topic, volevo chiederti riciweb se ricevi i miei PM visto che non me li segna in uscita. Grazie e scusate...End OT

, c'è anche che così ottengo un doppio isolamento galvanico e la cosa non mi dispiace affatto

fotoaccoppiatori.png

Perdonami, ma gli IC inverter non li conosco, (non lo scrivo mica per caso che sono un’analfaelettronico) oggi mi metto a googlare e vedo di approfondire in merito, se hai tu qualcosa e possibilmente in italiano da farmi studiare, te ne sarei molto grato, poi secondo te se volessi fare delle prove, quali sono quelli più comunemente usati per questi scopi?
I transistor li ho provati, in particolare i BC347 mi pare, con lo schemino classico, ma i darlington dell’ULN2803, non mi funzionavano, non so forse/sicuramente ho fatto io qualche errore…

Grazie Brunello,
sei telegrafico, ma ti fai capire benissimo, :slight_smile: (l'avevo detto che scrivevo Riccarddate :blush:)
ok, ho imparato anche oggi qualcosa, ti ringrazio sinceramente, approfondirò sicuramente gli integrati che mi hai segnalato e di sicuro litesto.
Va meglio ora il disegno?
Grazie infinite.

Riccardo

Edit: scusate ho dimenticato l'allegato

ecco ragazzi, questo è lo sketch misero che ho utilizzato per la mia plafo, poi ho lasciato star tutto e smontato Arduino per diversi motivi, ma visto che non ho raggiunto minimamente ciò che avrei voluto ho deciso di riprovarci

PlafoDimmer.ino (9 KB)

Non vedo errori, ma due cose te le devo ancora dire.

  1. Togli quel trimmer sulla backlight. prima di tutto perche' in genere il modulo ha gia' la resistenza di limitazione a bordo, poi perche' montato come da schema, con positivo e negativo ai lati e la presa sul centrale riduci la tensione e invece devi limitare la corrente.
    Quindi ruotandolo hai pochi gradi in cui si regola e tutto il resto in cui rimane spento
    Al massimo scollegalo dal negativo, pero' va' sempre usato un valore bassissimo.

  2. l' I2C e' fantastica ( anche io la uso tantissimo e me la porterei pure a letto ) ma se il progetto e' completo, ti ritrovi un arduino ( o uno standalone che sarebbe meglio a progetto finito ) quasi inutilizzato.
    Hai a disposizione 20 porte e ne usi solo 5.
    Quindi, visto che la parte piu' "problematica" risulta essere la gestione dei rele', perche' non colleghi la scheda rele' direttamente ai pin di arduino ?
    Ti risparmi un PCF8574, 8 fotoaccoppiatori e un sacco di spazio necessario in una eventuale board.
    Un port expander si usa se mancano delle porte, ma qui avanzano. lo lascerei solamente se tu dovessi usare un ethernet, visto che si porta via 4 pin ( anche se rimangono comunque le altre 4 porte analogiche da poter usare come digitali )

  3. L'alimentazione. Due alimentatori sono esagerati. ( c'e' anche quello della scheda rele' ) . Se ne vuoi usare solo uno, quel 7805 mi sa' che dura poco.
    E poi se deve essere un progetto completo, pubblicabile, i rele' vanno integrati in questa scheda. Quindi prevedere un'alimentazione adeguata

  4. Ho perso un po' il filo di tutto il post... ma per gestire una acquario servono solo due rivelatori di temperatura ?

Beh una sonda andrebbe per regolare la temperatura dell'acqua e una per l'azionamento delle ventole sulla plafo se si vuole fare una cosa di lusso, altrimenti ne basterebbe una per l'acqua, sulla plafoniera fino ad ora non ho mai utilizzato le regolazione delle ventole che erano fisse, non credo ci sia il problema di freddare troppo quindi lo vedo quasi inutile. Si può monitorare la T in diversi punti della vasca magari, ma questo lo trovo utile solo in casi estremi con varie vasche collegate ma a distanza l'una dall'altra.

brunello:
Non vedo errori, ma due cose te le devo ancora dire.

  1. Togli quel trimmer sulla backlight. prima di tutto perche' in genere il modulo ha gia' la resistenza di limitazione a bordo, poi perche' montato come da schema, con positivo e negativo ai lati e la presa sul centrale riduci la tensione e invece devi limitare la corrente.
    Quindi ruotandolo hai pochi gradi in cui si regola e tutto il resto in cui rimane spento
    Al massimo scollegalo dal negativo, pero' va' sempre usato un valore bassissimo.

  2. l' I2C e' fantastica ( anche io la uso tantissimo e me la porterei pure a letto ) ma se il progetto e' completo, ti ritrovi un arduino ( o uno standalone che sarebbe meglio a progetto finito ) quasi inutilizzato.
    Hai a disposizione 20 porte e ne usi solo 5.
    Quindi, visto che la parte piu' "problematica" risulta essere la gestione dei rele', perche' non colleghi la scheda rele' direttamente ai pin di arduino ?
    Ti risparmi un PCF8574, 8 fotoaccoppiatori e un sacco di spazio necessario in una eventuale board.
    Un port expander si usa se mancano delle porte, ma qui avanzano. lo lascerei solamente se tu dovessi usare un ethernet, visto che si porta via 4 pin ( anche se rimangono comunque le altre 4 porte analogiche da poter usare come digitali )

  3. L'alimentazione. Due alimentatori sono esagerati. ( c'e' anche quello della scheda rele' ) . Se ne vuoi usare solo uno, quel 7805 mi sa' che dura poco.
    E poi se deve essere un progetto completo, pubblicabile, i rele' vanno integrati in questa scheda. Quindi prevedere un'alimentazione adeguata

  4. Ho perso un po' il filo di tutto il post... ma per gestire una acquario servono solo due rivelatori di temperatura ?

Ciao Brunello, :slight_smile:
mi fa sempre piacere leggerti, come sempre 'provo' a risponderti, ma sai già che potrei scrivere una serie delle mie solite riccardate...

  1. Appena ho tempo, provo a fare come mi dici tu, ossia scollegare il negativo e vedrò cosa succede, purtroppo ne so così poco che sono costretto alle prove pratiche, in generale però mi piace di solito regolare la luminosità del display sul bassino, e siccome penso che ognuno voglia poter decidere come regolarselo, ho pensato che l'uso del trimmer potesse essere la cosa migliore, nel caso, che valore bassissimo dovrei usare, attualmente è da 1K.

  2. E' vero, sembra in questo momento che Arduino sia inutilizzato ed in effetti da quando l'ho scoperta anche io sono follemente innamorato dell'I2C, tieni presente però che il progetto è tutt'altro che completo, per ora con gli amici che hanno deciso di seguirmi, abbiamo deciso di concentrarci sulle funzioni per la gestione delle luci lato acquisizione dati (orari di accensione, spegnimento e durata del fading per alba e tramonto) e gestione del fading, è decisione di pochi giorni, di portare le linee luci a tre; più avanti ci dedicheremo alla lettura del PH, della conducibilità, del cambio automatico e chissa cos'altro ed in quale ordine, ecco quindi che i pin fino ad ora risparmiati prima o poi verranno usati XD

  3. Non capisco cosa tu voglia dire, nel senso letterale della cosa, quindi ti spiego il mio ragionamento e dimmi dove e se sbaglio qualcosa: Attualmente, il 7805 lo uso unicamente per gli integrati, i pulsanti le sonde ed il display, probabilmente più avanti non so ancora bene come le altre sonde per PH e conducibilità, mentre con i 12v alimento Arduino e la scheda relè; la scheda relè a sua volta farà on/off ad altre periferiche quali termostati elettrovalvole alimentatori del led e via dicendo, tutte cose autonome in fatti alimentazione se uno lo desidera ovviamente, in questo modo se si rompe qualcosa, il resto continua a funzionare senza conseguenze disatrose per gli amati pescetti che sono in acqua, in pratica cerco di avere meno conseguenze possibili in caso di anomalie di qualcosa, certo non c'è limite all'imponderabile, ma cerco di pararmi il più possibile, sbaglio qualcosa?
    In quanto alla pubblicabilità del progetto, avrai capito che è tutt'altro che completo, ed in base a quello che ho scritto sopra sul pararsi il più possibile, tenderei ad avere più moduli separati, per poter qualora servisse sostituire o riparare solo quello che si rompe non tutto l'ambaradam, sbaglio a pensarla così o potrei agire diversamente e se si come?

  4. Inizialmente io avevo pensato a due sensori, ora giustamente dandovino a scritto qualcosa su cui si potrebbe fare una riflessione, di fatto tutto il progetto è work in progress ed assolutamente a disposizione di chiunque voglia prenderselo ed adatarlo alle proprie esigenze, vediamo come evolve, per il momento andiamo avanti per obbiettivi e sul primo: luci e loro gestione stiamo lavorando :slight_smile:

Perdonate eventuali miei strafalcioni sulle logiche usate, sto imparando nel senso letterale della cosa, e se sono su questo forum e per condividere quello che faccio, ma mi sembra di averlo dimostrato, ma anche per imparare :blush:

Ciao a tutti.

Riccardo

Quoto dandovino per la gestione temperatura, una sonda potrebbe bastare per monitorare, inserendo dei range per attivare un max di temperatura e superato quello potrebbe staccare la corrente del riscaldatore, visto che il termostato interno funziona con cotatto a lamelle ci potrebbe sessere il rischio che si saldino rimanendo sempre acceso, "esperienza vissuta".
Per il resto dei pin liberi come gia detto da riciweb si fara presto a occuparli visto che tutto èin fase di espansione

Ciao,
anche io sto realizzando un controller per un acquario....
Per adesso ho scritto solo la parte di gestione dei menù con la libreria MENWIZ (complimenti all'autore).
Mi devono arrivare i vari "pezzi" per proseguire.
Comunque seguo con interesse il post.
Ciao
Marco

Ciao,
grazie per aver scritto, come intendi gestirlo l'acquario?
Hai già degli schemi?
Seguici pure, ci fa sicuramente piacere :slight_smile:

Ciao Riccardo

Ciao,
il controller è per un acquario marino, per il momento servirà solo per le funzioni base:

  • Controllo luci Led con PWM
  • Rabbocco automatico
  • Alternanza pompe movimento
  • Controllo temperatura

Hardware:

  • Arduino Mega
  • Display
  • Scheda relè (4)
  • RTC
  • Sensore livello
  • Sensore temperatura
  • 6 pulsanti
  • 4 deviatori
  • Varie (scatola quadro elettrico, connettori, alimentatore, ecc.)

Utilizzerò la libreria MENWIZ per creare menù su LCD.
E' una libreria veramente fatta bene, facile da usare, con molte opzioni che possono essere utili.

Gli schemi per il momento li ho solo in testa e devo ancora scriverli.
Ci saranno 4 prese controllate da Arduino (pompa movimento Sx, pompa di movimento DX, pompa rabbocco, Termoriscaldatore).
Il segnale di comando proveniente da Arduino sarà interrotto da un deviatore per avere la possibilità di controllare il relè dal controller, manuale ON e manuale OFF.

I sensori temperatura per l'acqua e forse per la plafoniera saranno tipo DS18B20.
Il sensore di livello è quello utilizzato in questo progetto :
http://www.acquaportal.it/nanoportal/Articoli/fai_da_te/FDTOsmoregolatoreAresistenza/default.asp

Questo è quello che ho in mente, se vuoi sapere altro chiedi pure.

Ciao
Marco

Ciao a tutti,
abbiamo fatto dei passi avanti, sia sul lato HW che SW, così volevo aggiornarvi e chiedere alcune delucidazioni e consigli…

Per cominciare, si è formato un allegro gruppetto di persone, che via whatsapp comunica senza inquinare questo topic con post superflui, ma che tra fare solo test, proporre modifiche, ma anche intervenendo sul codice ha fatto si che il progetto sia andato avanti.

Sul lato HW, abbiamo seguito le segnalazioni di brunello sull’utilizzo del 7805, ed effettivamente tutti quei fotoaccoppiatori, lo mettevano a dura prova, provando ad attivarli tutti, diventava una vera e propria stufetta, anche aumentando il valore delle R, migliorava solo leggermente, così ho ordinato gli IC-inverter che mi ha segnalato i 74HC540N ed effettivamente è tutta un’altra cosa, sia come semplificazione circuitale che come assorbimenti. Grazie Brunello! XD

Abbiamo poi deciso di aumentare a tre il numero delle linee luci.

E di aggiungere un 6° tasto per l'ESC per migliorare l'utilizzo del controller :wink:

Sul lato SW, invece si può dire che siamo a dama sulla gestione delle luci:
Abbiamo semplificato e snellito la funzione di acquisizione dei dati utili/necessari e trovato un buon compromesso poi per la gestione dei singoli fotoperiodi, in pratica inizialmente abbiamo cercato di usare una funzione che in ogni momento in base all’ora corrente fosse in grado di calcolare e decidere cosa e quanto accendere per tutte e tre le linee, ma il povero Arduino sudava ben più delle proverbiali 7 camice, così abbiamo scritto una funzione che in caso di cambiamento dei dati da parte dell’utente o di riavvio/reset/black-out, ricalcola i valori di fading, di intervallo di fading ed altro e da poi in pasto i dati ad un’altra funzioncina che a questo punto esegue semplicissimi confronti temporali utilizzando millis(), che non ci fa più paura con i suoi overflow, dopo aver letto l’articolo di Leo72 http://www.leonardomiliani.com/2012/come-gestire-loverflow-di-millis/ :wink:
Abbiamo anche aggiunto una schermata per monitorare lo stato delle luci, e nella schermata principale visualizziamo la media in percentuale dei fading sulle tre linee.

Per la temperatura dell’acqua invece, abbiamo scritto due righe di codice per far si che se la temperatura sale o scende oltre un certo range (1,5°), il valore della temp inizi a lampeggiare sul display e si senta un allarme sonoro, disattivabile quest’ultimo premendo ESC.
Purtroppo siamo quasi al limite con la flash, pensando anche a quanto ancora vogliamo far fare al controller, così in questo momento oltre a pensare di implementare altre funzioni, stiamo cercando di capire come riscrivere tutto, mantenendo la funzionalità del codice ed allo stesso tempo alleggerendolo….

Più tardi uno di noi proverà a spiegare meglio che strada stiamo cercando di percorrere…

Nel frattempo allego sia qui che nei post di presentazione lo sketch ed il nuovo schema, dove è ancora in sospeso l’uso del trimmer sulla backlight del display.

Grazie in anticipo a chiunque voglia perdere un po’ di tempo per aiutarci a migliorare :slight_smile:

Riccardo.

EDIT 27/02/2013 19,07: Caricato per errore uno sketch errato, ora è giusto... :blush:

acquarium_controller_v2_1.ino (54.8 KB)