Go Down

Topic: Ardu-Aquarium Controller v. 3.3.1 (Read 71 times) previous topic - next topic

riciweb

Ciao Michele,


Scusami ma stasera mi viene difficile interpretare le tue contorsioni :smiley-sweat: tarare l'acqua invece del sensore? da sballo :smiley-yell: però capisco la tua preoccupazione e ti dico che NON ESISTE UNA SOLUZIONE "FISSA" proprio a motivo della GRANDE TOLLERANZA DEI SENSORI che stai adottando che fanno davvero torto al costo che hanno.
Cioè devi capire che se anche trovi il modo di arrivare a 3,3V o 5V di range di segnale cosa ti cambia? Non avrai sempre il problema che uno arriva a fondo scala, l'altro lo supera e l'altro resta sotto???
Se ti è chiaro il concetto appare ASSOLUTAMENTE ovvio che chiunque adotti questa soluzione dovrà fare una taratura per il proprio personale sensore, e l'operazione alla fine diventa piuttosto semplice:
1 - Sostituisci una delle due R con un trimmer di valore doppio (direi di usare un 47k al posto della 22k fissa), poi magari a tentativi con i TRE sensori troverai una combinazione idonea per tutti.
2 - a vasca piena nella norma fissi il sensore per far combaciare il livello con il punto max del sensore
3 - inizi a ruotare il trimmer finché non leggerai il valore 1023; poi togli un po' di acqua in modo da arrivare alla tacca immediatamente inferiore del sensore e poi correggi la taratura, quindi riempi nuovamente, poco alla volta e verifichi se appena raggiungi il max hai 1023 sull'ADC.

Trovata la combinazione di R/Trimmer che vada bene per tutti, qualsiasi sensore deciderai di adottare dovrai fare questa rapida taratura, senza costringere il tuo utente a vuotare o sovrariempire la vasca che poi gli saltano i pesciolini fuori :smiley-mr-green:


in effetti hai ragione, mi sono riletto questa mattina eeee…  :smiley-red:
Ad ogni modo ho capito l'uso del trimmer e mi sembra già una soluzione.
E' vero questi sensori sono costosi, ma non ho trovato nient'altro di simile in giro, solo sensori switch di ogni tipo: a galleggiante a infrarossi a ultrasuoni…, ma niente che legga in continuo come questi senza elettrodi in acqua, mi pare però che piano piano si stia arrivando a dama e con una precisione non indifferente, anche eccessiva in un acquario se vuoi,  quindi grazie davvero per il tuo tempo,  :)  ora è intervenuto anche Lesto, ho voglia di fare ed imparare i metodi di approccio, spero che continui a seguirmi.

Ciao Lesto


ti chiedo un favore, i dati mettili in un foglio excel on-line come google-docs, così possiamo applicarci qualche formuletta pure noi senza ricopiarci a mano i dati.


Non sapevo esistesse una cosa del genere, stamane ho cercato e provato, per il momento ti mando il link delle prove fatte fino ad ora.

https://docs.google.com/spreadsheet/ccc?key=0Ah2GzeM3ZZu4dFg5cmRxVUVyQ2FpMFBtRklDN1JPd2c&usp=sharing


1. fai uno schetch che invia al pc i dati di analog read, o meglio di 2 analog read, una per sensore. ricordati di buttare una sempre le prime due/tre letture analogiche quando cambi pin di lettura o farai misurazioni "sporche". Puoi abbassareil clock dell'ADC ma è un problema che per ora non ci poniamo, se non serve.


Questo lo so fare, in quanto ai dati che ho campionato e che se continuiamo campionerò, fino ad ora a parte le letture del multimetro, ad ogni lettura ho atteso qualche secondo, poi ho fatto copia incolla di 100 letture in excel ed ho inserito la media di queste nelle tabelle, ti va bene così o devo fare diversamente?


2. fai un programma lato pc che legge i campionamenti e li salva su un file (anzi due, uno per sensore).


Questo non lo so fare o meglio dovrei capire da dove si parte e poi provare, ma penso che mi ci vuole un po' troppo tempo, si può soprassedere?
A meno che tu non abbia qualcosa di già pronto, ma non so di cosa sto parlando, quindi mi sa che ho appena scritto una fesseria…  :.


3. fai partire il tutto e immergi i sensori in un secchio di acqua normale, uno di acqua fredda, e uno di acqua calda, magari facendo una pausa di un secondo ogni centimetro che immergi.


Acqua fredda, cosa intendi? Pensi ad una temperatura in particolare o metto una bottiglia in frigo e basta?
Mantenerla costantemente fredda per il tempo della misurazione, mi riesce difficile, potrei però partire da 15° che è la temperatura attuale dell'acqua di rubinetto a casa mia e misurare anche a 22,5° e 30° i riscaldatori li ho..


Poi visto che hai le possibilità, failo stesso esperimento usando differenti metodi di amplificazione


Vorrei usare il circuito che ho usato per ultimo con Michele, perché mi pare fino ad ora il più performante, se sei d'accordo e se mi dai qualche giorno, c'è pure Pasqua di mezzo, mi metto all'opera, questo è il circuito:




per esempio ecco la mia IPOTESI:
la R di partenza dei sensori è differente, ma la variazione (quindi Rbase - Rletta) di R in base ai CM di acqua è uguale per tutti i sensori, e varia in modo piccolo (meno di 1/2mm di errore) in base alla temperatura.
se ciò è vero, basta dire all'utente accendi e prima di immergere il sensore attendi. Intanto tu leggi la temperatura (con apposito sensore), e quando vedi che è stabile, calcoli la Rbase in base alla temperatura, ed voilà hai calibrato il sensore. poi magari fai fare un paio di testdi prova, e se i conti non tornano di al povero utente di contattarci qui :)


E tu vuoi che la piaga degli acquariofili si abbatta su questo forum!!!  :smiley-mr-green:
Non vi basto già io e le mie cialtronate!!!  :smiley-roll-blue:

Grazie Riccardo

Riccardo

Michele Menniti

Per la prossima prova verifica il comportamento con il partitore /10, cioè usa una pull-down da 12k ed un trimmer da 4k7-5k, 120k sono tantini come pull-down, potrebbero crearti instabilità nelle letture.

Una volta ottenuto il risultato desiderato prova anche gli altri due sensori (anche quello "difettoso") e vedi se il trimmer è sufficiente (dovrebbe esserlo) per tararli correttamente, altrimenti prova ad aumentarlo, ma non penso ce ne sia bisogno.

A regime dovrai usare componentistica SERIA: tutte le R fisse dovranno essere del tipo a strato metallico di precisione (0,5%, max 1% di tolleranza), il trimmer dovrà essere del tipo a multigiri (10 o 20) in modo da permetterti una regolazione "fine" di elevata qualità.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

riciweb

Grazie dei consigli Michele, sei sempre preziosissimo!

Riccardo
Riccardo

Michele Menniti

#143
Mar 29, 2013, 05:20 pm Last Edit: Mar 29, 2013, 05:47 pm by Michele Menniti Reason: 1
Figurati, in verità mi aspetto, a cose finite, di vedermi arrivare a casa un paio di squali da mettere sul comodino di mia moglie ]:D
Scherzi a parte sono curioso di vedere se troviamo una soluzione univoca per i tre sensori, credo di sì, e sarebbe tutto più semplice: se si riesce a far funzionare indifferentemente i due nuovi e quello iniziale, non penso possano esserci più problemi legati a questo sensore. :)
Tornando alla questione del materiale di qualità, nello specifico è indispensabile usare quel tipo di R, sono molto meno sensibili alle variazioni di temperatura e molto più precise rispetto al valore nominale, e nel tuo caso, con le normali R al carbone e 5% di tolleranza, rischi di vanificare almeno parzialmente, la compensazione dell'RRef. Inoltre un trimmer multigiri ti permette una regolazione molto più semplice e precisa, ti basti pensare che con quello normale effettui in 270° di rotazione una variazione da 0 ohm a 47-50.000 ohm, mentre il multigiri da 10 ti permette una variazione lineare di circa 5.000/giro (360°!); ancora i trimmer normali in plastica hanno un notevole attrito tra il corpo fisso e la parte rotante, meglio vanno quelli della serie CERMET, ma nessun paragone con i multigiri che hanno la parte rotante in metallo.
Io ne sto usando uno nel mio progetto "in cantiere" proprio sull'ADC, nel mio caso devo fornire una tensione fissa e stabile di riferimento all'ADC in modo da ottenere una lettura che valorizza una variabile di compensazione. E' un'idea che ho avuto quando ho visto che per tarare la lettura ho dovuto programmare il micro venti volte in qualche minuto, visto che dovevo ogni volta variare di ±1 una variabile numerica nel range 0-1000. Così non devo nemmeno preoccuparmi di quale sia il valore della variabile, ruoto il trimmer fino a leggere il valore desiderato ed è fatta, con questo sistema sono arrivato ad una precisione di ±5Hz su 1GHz, buono no? :)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

lesto



in effetti hai ragione, mi sono riletto questa mattina eeee…  :smiley-red:
Ad ogni modo ho capito l'uso del trimmer e mi sembra già una soluzione.
E' vero questi sensori sono costosi, ma non ho trovato nient'altro di simile in giro, solo sensori switch di ogni tipo: a galleggiante a infrarossi a ultrasuoni…, ma niente che legga in continuo come questi senza elettrodi in acqua, mi pare però che piano piano si stia arrivando a dama e con una precisione non indifferente, anche eccessiva in un acquario se vuoi,  quindi grazie davvero per il tuo tempo,  :)  ora è intervenuto anche Lesto, ho voglia di fare ed imparare i metodi di approccio, spero che continui a seguirmi.


misuri la resistenza dell'acqua... due fili di ferro a V (che non si tocchino però, e la parte più stretta della V verso l'alto), e hai replicato qualcosa di simile. Che però è influenzato dalla salinità dell'acuq, che però puoi calcolare con lo stesso sistema ma con i due fili paralleli ad una distanza fissa: così calcoli non solo l'atezza dell'acqua, ma pure la sua conducibilità elettrica!
:smiley-mr-green: :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

Quote
Acqua fredda, cosa intendi? Pensi ad una temperatura in particolare o metto una bottiglia in frigo e basta?
Mantenerla costantemente fredda per il tempo della misurazione, mi riesce difficile, potrei però partire da 15° che è la temperatura attuale dell'acqua di rubinetto a casa mia e misurare anche a 22,5° e 30° i riscaldatori li ho..


la temperatura deve essere nota, e non credo che per la durata dell'esperimento la temperatura cambi di più di un 1°, quindi errore accettabile. lo stesso vale con l'acqua calda.

Quote
Questo non lo so fare o meglio dovrei capire da dove si parte e poi provare, ma penso che mi ci vuole un po' troppo tempo, si può soprassedere?
A meno che tu non abbia qualcosa di già pronto, ma non so di cosa sto parlando, quindi mi sa che ho appena scritto una fesseria… 

si fa in 2 minuti ma ora son di fretta...
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up