Go Down

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

riciweb

Grazie infinite Michele,
mi rimetto a caccia e a breve come mia abitudine ormai vi metto al corrente dei miei strafalcioni  XD

Riccardo.
Riccardo

leo72

Un op-amp valido che si trova in formato DIP8 è il TLC2262, è rail-to-rail e può lavorare anche con una tensione singola.
Lavora a 5V senza problemi.
http://it.rs-online.com/web/p/amplificatori-operazionali/3312154/

lesto


l'LMV358 opera a 2,7-5V tensione singola, ho detto che è usato su Arduino, dove la trovi su Arduino una tensione duale, Lesto è un seminatore di zizzania :smiley-mr-green:


io mi riferivo al NE5532AP vs NE5532P
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

riciweb

Ciao a tutti,
ho provato ad usare l'LM358, con il circuito consigliato dal datasheet, pensavo di ottenere un aumento del range di lettura, ma non è cambiato nulla, prima in analogread
con circuito divisore di tensione leggevo da 790 (acqua a livello minimo) a 512 (acqua a livello 20cm del sensore), quindi 278 rampe pari ad una rampa ogni 0,71mm con tensione che variava da 2,5v a 1,25
con circuito op-amp leggo da 3 (acqua a livello minimo)  a 252 (acqua a livello 20cm del sensore), quindi 249 rampe pari ad una rampa ogni 0,8mm con tensione che varia da 0,.03v a 1,20v
Da quel poco che ho capito però con l'amp-op avrei dovuto avere in uscita un guadagno pari almeno alla tensione di alimentazione, ma non è così dove sbaglio?
Cosa devo fare per arrivare a sfruttare il più possibile tutte le rampe di lettura in analogread?

Ho usato i circuiti che metto qui sotto:



nel circuito con op-amp, ho usato valori per r1 e r2 pari per entrambe e corrispondenti a 560, 1k, 1,5k,  2,2k ma il risultato è sempre lo stesso.

Non so cosa fare...  :smiley-roll:
Riccardo

Michele Menniti

L'amplificatore differenziale amplifica la differenza di potenziale che cè tra i due rami. Se ho ben capito la RRef deve avere il valore di partenza della RSense ed R1-R2 devono essere uguali e rapportate a RRef-RSense. Io proverei con due da 10k, mentre la RRef deve corricpondere al valore di partenza del sensore.
Ciò detto a me pare che le due R finali da 100k rappresentino un guadagno unitario, quindi questo circuito ti porta in uscita solo la differenza di potenziale tra i due ingressi. Poiché disponi di un secondo op-amp nel 358 potresti usarlo come amplificatore vero e proprio del segnale in uscita da primo o, più semplicemente, la prova che farei io è quella di aumentare la R da 100k posta tra - e Vout, che dovrebbe generare il rapporto di amplificazione; metti una 330k e dovresti avere una amplificazione di circa 3 volte, ma fino al limite della tensione di alimentazione (credo un poò meno in realtà, mi pare che quella sia una caratteristica essenziale dei modelli rail-to-rail). Per la verità la formula che mi ritrovo sembrerebbe richiedere un valore inferiore rispeto a quello iniziale, quindi se ottieni un risultato attenuato invece che amplificato, prova a mettere una 33k.
Le mie conoscenze sugli op-amp sono minime e scadenti, ho iniziato a leggere qualcosa, ma mille altri impegni mi hanno impedito di approfondire e soprattutto di sperimentare. Prova, male che vada non succede nulla   e proviamo ad aggiungere un secondo stadio :smiley-sweat:
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

Ciao Michele, grazie per il tempo che mi stai dedicando,  :)
ho avuto tempo di fare un pò di prove ed ecco i risultati:

Rsens al minimo = 2k        Rref = 2K

R sul vout 330K
R1 e R2    liv min        liv max          Vliv min     Vliv max   
  1K            686             402                1,37           2,33
  1,5K         587             309                2,00           0,97
  2,2K         489             230                1,66           0,85
10,0K        230               60                0,57           0,2

Il bello è che cambiando la R sul Vout e mettendola 33K il risultato non cambia.  :smiley-red:

P. S. Oggi a furia di googlare sono incappato in questi due link

http://www.youtube.com/playlist?list=PLqfphHIMAuVBQf17RT25EgyrUIcJaorHa Video lezioni di elettrotecnica
http://www.youtube.com/playlist?list=PLqfphHIMAuVDBMfOuGQdDCos_mBD8cXZH Video lezioni di elettronica applicata

Magari possono tornare utili nel tuo post sui link, ho iniziato a guardarli...
Riccardo

Michele Menniti

Ma la RRef te la sei calcolata? non la riporti nei tuoi esperimenti, invece è un fattore fondamentale, perché in pratica stabilisce il punto di partenza del tuo sensore.
La tua tabella è fatta bene, ma io come la leggo? alla prima riga quei 686 e 402 sono dei valori che corrispondono ai livelli minimo e massimo, ma la loro unità di misura qual'è? e dove rilevi questi valori?
Come detto non sono praticissimo di op-amps, sicuramente quel circuito è un amplificatore differenziale, ma i componenti devono essere correttamente "tarati", altrimenti puoi avere comportamenti strani in uscita.
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

Ciao,
La RRef, l'ho misurata, così come la RSens, anche se sul datasheet la danno per 1,5k bho!!!
Mentre i valori di cui parli li leggo in analogread() perdonami, dovevo specificarlo  :smiley-red:

Code: [Select]

byte levelsensor = A0;
int levelvalue = 0;
void setup() {
   Serial.begin(9600); 
}

void loop() {

  levelvalue = analogRead(levelsensor);   
  Serial.println(levelvalue);
           
}


Nel file in allegato, c'è un circuito che sfrutta un operazionale, ma utilizzando "virtual ground", da quello che ho capito però serve per gli operazionali a doppia alimentazione...

Riccardo
Riccardo

Michele Menniti

Che vuol dire che la RRef l'hai misurata?
Non è una resistenza di riferimento che devi scegliere tu?
Puoi mettere un link al datasheet del tuo sensore?
Infine, affinché possa capirci qualcosa, prendiamo p.es. la riga con R1-R2 = 1k5, i due valori 587 e 309 li stai leggendo col micro all'uscita dell'op amp con l'analogRead? ed invece i due valori 2,00 e 0,97 che sono? Di sicuro non una corretta conversione delle letture analogiche in Volt.
L'altro circuito lascialo stare, questo deve funzionare; vuoi fare una prova semplicissima, abbandonando un attimo questo tuo circuito?
0 - predisponi il sensore come in quello schema: R1 da 1k5 tra +5 e sensore, l'altro capo del sensore a GND, il punto in comune è l'uscita del sensore.
1 - collega l'uscita del tuo sensore al + dell'op-amp
2 - metti una R da 10k tra il - dell'op-amp e GND
3 - metti una R da 22k tra il - e l'uscita dell'op-amp
4 - misura con un multimetro la tensione che hai all'uscita del sensore: p.es. 1V
5 - sull'uscita dell'op-amp dovresti trovarti tale tensione moltiplicata x3,2, quindi appunto 3,2V
Vediamo i valori minimo e massimo che escono; non so nemmeno se il sensore lavora in "positivo" o in "negativo", ma la cosa non dovrebbe cambiare, al massimo invertiamo di posizione R1 e sensore.
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

Michele, grazie infinite  :)

Ecco il link: http://www.milonetech.com/uploads/eTape_Datasheet_12110215TC-8.pdf
Come vedi la Rref è fissa, i valori sono letti in analogread all'uscita dell'operazionale ed anche i voltaggi li ho misurati li, ora non posso fare la prova che mi chiedi, ma appena posso ti aggiorno.
Grazie ancora.

Riccardo

P.S. Hai visto i link delle videolezioni?
Riccardo

Michele Menniti

di nulla, speriamo invece di risolvere :~
allora ora ho capito, la RRef è interna al sensore è serve per l'eventuale compensazione di temperatura, quindi il circuito originale lo devi sfruttare mettendo R1-R2 a 1,5kohm.
Invece tornando alla nostra prova, rispetto a quanto ti ho detto devi invertire R1 e sensore, visto che dal ds si evince che lavora in negativo (la resistenza diminuisce all'aumentare del livello).

I link non li ho guardati, purtroppo sono a corto di tempo e devo finire al più presto un progetto, quindi a parte qualche intervento sul Forum, ogni secondo libero lo dedico lì. Fai una cosa, intervieni in Link utili e mettili lì come suggerimento, così mi resta come promemoria. ;)
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

Ho trovato un po' di tempo, ed ho montato il circuito che mi hai suggerito, ma sul Vout dell'operazionale ho senpre 0,0 V, in ogni caso le misurazioni in uscita dal sensore sono:
con il sensore verso massa e R1 a +5v ho in uscita dal sensore V-livmax= 2,17 V-livmin = 4,13
con il sensore verso +5v e R1 verso massa ho in uscita dal sensore V-livmax = 4,94 V-livmin = 3,08

In più mi si è scaricata la batteria del multimetro  :~

:(

Più tardi mi rimetto all'opera
Riccardo

PaoloP

#87
Mar 09, 2013, 03:20 pm Last Edit: Mar 09, 2013, 03:22 pm by PaoloP Reason: 1
Col partitore fatto con una resistenza da 1.5K e il sensore a vuoto (resistenza dichiarata al livello minimo = 1.5K) dovresti avere dimezzata la Vin. Quindi se gli dai 5V in uscita dovresti ottenere 2.5V.
Che misure ottieni con un semplice partitore?

riciweb

Ciao Paolo,
le resistenze misurate sia la Rref che Rsens a vuoto, sono malgrado il datasheet, di 2K e come dici tu in configurazione partitore, ho 2,5v sia calcolati che misurati  :smiley-slim:
Riccardo

PaoloP

#89
Mar 09, 2013, 05:38 pm Last Edit: Mar 09, 2013, 05:50 pm by PaoloP Reason: 1
Puoi chiarire la cosa.
Se misuri a vuoto la Rsens hai 2Kohm. Se fai un partitore con una resistenza da 1.5Kohm ottieni 2.5V in uscita?
Dovresti avere 2.14.  :smiley-roll-blue:

A meno che non hai misurato la resistenza a vuoto ed il partitore in acqua col livello minimo.
Puoi essere che la Rsens asciutta valga 2K e bagnando il sensore al livello minimo scenda subito a 1.5K, ma mi pare strano visto che nella pagina evidenzia un andamento lineare.

Calcolatore per op-amp --> http://www.daycounter.com/Calculators/Op-Amp/Op-Amp-Voltage-Calculator.phtml

Go Up