Go Down

Topic: lettura mV ad alta precisione (Read 1 time) previous topic - next topic

mikiti

ciao a tutti,

vorrei leggere da uno strumento un segnale (di output) in tensione. Il segnale ha un range da 0 a 500 mV e una precisione di 0,01 mV fino a 200 mV e di 0,1 mV da 200 a 500 mV.
Vorrei quindi poter fare letture fino alla seconda cifra decimale, ma mi "accontento" della prima cifra decimale.

Se non ho capito male, è possibile cambiare la Vref dei canali analogici, settandola per es. a 1,1 V. Ma in tal caso, avendo precisione a 10 bit, avrei passi a 1,1V / 1024 = 1,07 mV.

Qualcuno sa consigliarmi un metodo per fare letture del genere?



speedyant

Intanto per quella precisione si necessita di un riferimento esterno e preciso, quindi bisogna procurarsi specifici integrati.

Standardoil

no, aspetta
per precisione alla prima cifra decimale intendi una cosa del tipo distinguere tra 498.0 MVe 498.1 mV?
vorrebbe dire una parte su 5000, lascia stare, serve ben più di un arduino e una sorgente ben stabilizzata
Prima legge di Nelson (che sono io): A parità di risultato maggiore è il pensiero, minore il lavoro. Quindi prima di fare pensa!
Non si da retta a studenti: andate a copiare da un'altra parte...
Lo hai visto su Youtube? -> lo chiedi su Youtube

gpb01

Come dice giustamente Standardoil, per quel tipo di precisione occorrono ADC ben più precisi di quello di Arduno e generatori di tensioni di riferimento di ben altro livello.

Se vuoi Arduino puoi usarlo giusto per leggere l'uscita (magari in I2C) di un tale convertitore ADC e visualizzarla su un display ... o poco più.


Guglielmo
Search is Your friend ... or I am Your enemy !

mikiti

Intanto per quella precisione si necessita di un riferimento esterno e preciso, quindi bisogna procurarsi specifici integrati.
Ammettiamo che io abbia un riferimento di tensione molto preciso. Come potrei procedere poi? Il riferimento può essere anche molto piccolo? Tipo 10 mV?

Ha senso amplificare il segnale che vorrei leggere per portarlo sul range 0...5V ?

Le letture dovrebbero essere del tipo:

(poco probabili quelle sotto i 30 mV)
35,23 mV
123,56 mV
212.4 mV
255,2 mV
(poco probabili quelle sopra 250 mV, pressochè a probabilità nulla quelle sopra 300mV)

Amplificando il segnale, diciamo con un guadagno 50, potrei portare es. 50 mV a 2,5V e 500mV a 25V, in tal caso avrei passi da 5 mV che corrispondono a 0,1 mV. Ovviamente dovrei usare un partitore di tensione fornendo i soliti 5V max ad arduino.
Temo di star dicendo un po' di cavolate...

brunello22


Quote
Il riferimento può essere anche molto piccolo? Tipo 10 mV?
No, la tensione minima del Vref è di 1V



Quote
Ha senso amplificare il segnale che vorrei leggere per portarlo sul range 0...5V ?
etc etc etc
Al massimo puoi amplificarla di 10X ( mi spieghi che vantaggio avresti ad amplificarla di 50X se poi devi ridurla con un partitore !! ) ed anche in questo caso non potresti apprezzare i decimali
Ma scusa, ti hanno suggerito di usare un ADC esterno, ad esempio c'è l'ADS1115 che costa niente ed è un 16 bit, collegabile in I2C. E mi pare che sul range richiesto abbia un risoluzione di 15µV

daysleeper

Amplificando il segnale, diciamo con un guadagno 50, potrei portare es. 50 mV a 2,5V e 500mV a 25V, in tal caso avrei passi da 5 mV che corrispondono a 0,1 mV. Ovviamente dovrei usare un partitore di tensione fornendo i soliti 5V max ad arduino.
Temo di star dicendo un po' di cavolate...
Beh, l'usare un partitore di tensione giusto dopo esserti amplificato il segnale (apposta) no, non ha molto senso. La risoluzione è come l'energia, bene che vada si conserva, ma non ha mai rendimenti superiori a uno!  :D

Comunque la vedo dura fare quelle misure senza strumenti adatti ad un laboratorio, la teoria è facile, poi in pratica accendono un neon nella stanza di fianco e non ti capisci più coi numeri che leggi.

In ogni caso, almeno a livello teorico, con un ADS1115 te la potresti cavare, è un ADC a 16 bit (qui o qui).
Impostato col guadagno corretto, va abbastanza vicino alle tue richieste.
Code: [Select]
 // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
La pratica è comunque molto lontana dalla teoria, 0.01mV di accuratezza non saranno mai reali, ma per il costo che ha forse vale la pena provare, i decimi di mV potrebbero essere precisi.
Se è stupido ma funziona allora non è stupido.

Datman

Prima di andare avanti: che cosa vuoi fare, esattamente?
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

mikiti

Prima di andare avanti: che cosa vuoi fare, esattamente?
in laboratorio abbiamo un vecchio termometro che oltre a dare la misura a display, fornisce un'uscita in mV, con due cifre decimali (perciò 24,45°C corrispondono a 24,45 mV). Vorrei poter monitorare tale uscita, interfacciandola col PC (usando Lab*iew), con un hardware molto semplice, tipo un arduino. L'interfacciamento non è un problema, la misura sì...
L'alternativa sarà usare i costosi moduli della National In*truments... oppure spendere ancora di più e comprare un altro termometro...

zoomx

Un multimetro con uscita seriale?

Domanda: il termometro è vecchio, quando è stata fatta l'ultima calibrazione? Perché se vuoi il centesimo di grado dovresti avere un termometro calibrato da recente e non con acqua e ghiaccio ma almeno una cella tripla.

Standardoil

al di la' della precisione del termometro, che condivido
io credo che un prodotto di adafruit un ADS1115 o un ADS1015 (rispettivamente a 16 o 12 bit di risoluzione) possano andare bene, per cominciare, vedi tu se ti serve a 12 bit (una parte su 4000) o 16 bit (una parte su 32000) ma per la differenza di prezzo....
non avevo pensato al multimetro con usicta in seriale, ma è un'idea sopraffina (se zoomx è d'accordo me ne approprio)
Prima legge di Nelson (che sono io): A parità di risultato maggiore è il pensiero, minore il lavoro. Quindi prima di fare pensa!
Non si da retta a studenti: andate a copiare da un'altra parte...
Lo hai visto su Youtube? -> lo chiedi su Youtube

Standardoil

e aggiungo, se per caso il termometro avesse un'uscita di calibrazione potresti usare uno degli ingressi che ti avanzano per leggere il valore della calibrazione e auto-correggere la scala della conversione
Prima legge di Nelson (che sono io): A parità di risultato maggiore è il pensiero, minore il lavoro. Quindi prima di fare pensa!
Non si da retta a studenti: andate a copiare da un'altra parte...
Lo hai visto su Youtube? -> lo chiedi su Youtube

mikiti

Un multimetro con uscita seriale?

Domanda: il termometro è vecchio, quando è stata fatta l'ultima calibrazione? Perché se vuoi il centesimo di grado dovresti avere un termometro calibrato da recente e non con acqua e ghiaccio ma almeno una cella tripla.
esatto, il termometro verrà mandato in un centro accreditato, per la ricalibrazione (probabilmente su 15 punti, ovviamente seguendo le procedure per le certificazioni LAT); dato il costo di questa operazione stiamo però indagando sulla eventualità di dotarci di un nuovo termometro di precisione (che purtroppo costa 3000+ euro). All'interno di questa "indagine" ci siamo posti il problema dell'acquisizione dati dal termometro...
Come detto, oltre al display, lo strumento ha un'uscita in tensione.

Probabilmente verrà acquistato anche un calibratore di mA/V, per altre attività, con accuratezza 0,02 mV, che potrebbe essere usato anche per leggere questo "benedetto" termometro. Ma purtroppo quest'altro strumento non ha uscita seriale o comunque interfacciabile col pc. Per inciso, io sarei per l'acquisto di un nuovo termometro ma... la ricerca ha pochi soldi...

Sono andato fuori tema... cmq, l'ipotesi ADS1115 è interessante. Nei 16 bit mi pare di capire che 1 bit è per il segno, quindi avrei quantizzazione su 32768, o sbaglio?

zoomx

@Standardoil
Anche il multimetro con uscita seriale va calibrato se si vuole quella precisione.

@mikiti
conosco la problematica degli acquisti nel mondo della ricerca.
Tu hai espresso già quello che stavo per suggerirti, conviene un nuovo termometro già tarato con una bella uscita per PC.
Le soluzioni che ti possiamo proporre purtroppo non sono certo certificate e avrai sempre bisogno di qualcosa per il confronto o la calibrazione.
Immagino che il termometro che già avete usi una PT100 di qualità e abbia un buon amplificatore la cui uscita è quella che è messa a disposizione.

Ci sarebbe una terza via, una telecamera che riprende lo schermo e un programma di riconoscimento cifre. Non è un'idea mia, l'ho letto in rete, ci sono progetti con RaspberryPI, la sua camera e openCV.
C'è anche gente che intercetta ed interpreta i segnali che vanno all'LCD ma qui la vedo molto più complicata.


mikiti


@zoomx
eh, infatti andrebbero certificati tutti gli strumenti usati nella catena di misura. Abbiamo un multimetro idoneo (e certificato) ma senza uscita seriale.
Il termometro in questione è ovviamente con Pt100.
Per la verità, la soluzione di "acquisire" il display la stavo già esaminando, ma senza ricorrere ad un sistema di visione avanzato. Avevo pensato di usare un arduino mega e 15 fotoresistenze. In pratica, dovrei costruire un circuito per leggere i 7 segmenti di cui è composta la cifra, leggerei le ultime 2 cifre (decimali) indicate dal display. Ovviamente ogni 99 dovrei incrementare di 1 °C. 
Il display è molto luminoso, per cui dovrei poter leggere facilmente gli on/off dei segmenti. Ovviamente leggerei in analogico. Dovrei usare un delay() molto breve per evitare di perdere troppe letture.

Tenete presente che in realtà a me serve la possibilità di visualizzare un grafico per vedere quando la T misurata dallo strumento si stabilizza intorno ad un certo valore.

Che ne pensate? E' una soluzione molto "agricola" (con rispetto parlando per gli "agricoli") ma forse ha un po' di senso...

 

Go Up