Salve a tutti!
Durante l'anno scolastico avevamo fatto un voltmetro usando un adc (0804, da 8 bit), un PIC (16f628a) e un display LCD. Questo voltmetro misura la tensione continua da 0 a 5 positiva con sensibilità 20mV (o errore di misura, chiamatelo come volete). Un voltmetro cosi non è un granchè perciò ho pensato di modificarlo aggiungendo inanzitutto un partitore all'ingresso per poter ridurre le tensioni che voglio misurare da 0 a 50V, a 0-5V. Poi ho aggiunto due operazionali, un raddrizzatore per fare il modulo della tensione così riesco a misurare anche quella negativa che la segnala un altro operazionale configurato da comparatore. A parte il fatto che il raddrizzatore si usa di solito per la tensione alternata (quindi non sono sicuro se sia la scelta migliore per fare il modulo di una continua) e a parte le alimentazioni che vorrei mantenere uguali per entrambi gli operazionali con V-=0 e V+=5 e non so se vada bene al raddrizzatore, vorrei poter ridurre quell'errore di misura che con gli 8 bit dell'ADC, da 0 a 50 diventa 200mV che non va bene per tensioni per esempio da 0 a 5. Se il resto va bene, vorrei chiedervi se potete per favore trovare un modo per mantenere sti 200mV per le tensioni da 10V-50V, mentre per quelle da 0-10 ridurre al massimo a 40mV (penso che bisogna giocare sul partitore e mettere degli interruttori o pulsanti per la scelta).
PS: ho visto che ci sono soluzioni migliori su internet per fare il voltmetro ma usano integrati che non conosco, vorrei capire se c'è la possibilità di migliorare questa soluzione qua. Al massimo potrei ridurre tutto usando un PIC con ADC interno.
Ho messo solo il circuito che precede l'ADC perché il resto è troppo lungo da fare con fidocadj e non c'entra tanto con il problema.Il primo operazionale funziona da raddrizzatore (che ho trovato su internet) mentre il secondo da comparatore rispetto a massa.
R=10kOhm. Il trimmer è usato per avere una resistenza da 90kOhm sul partitore secondo i calcoli.
Voltmetro usando ADC e PIC
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
24 messaggi
• Pagina 1 di 3 • 1, 2, 3
1
voti
Ciao,
allora, il circuito che hai postato necessita di un paio di considerazioni, in particolare il raddrizzatore di precisione:
Non capisco il segnificato della R in retroazione tra il partitore in ingresoo e l'ADC... perché l'hai messa? Per valutare quello che può o non può fare l'OPAMP, valuta l'escursione per tutti i possibili ingressi: vuoi che il tuo circuito funzioni solo per tensioni negative? In tal caso l'uscita dell'OPAMP assume un valore minimo di circa 0.6V (la caduta sul diodo D2): infatti D1 è spento e D2 è in conduzione. Quindi qui puoi utilizzare un'alimentazione singola, però la massima tensione sintetizzabile dall'OPAMP è 5V se l'OPAMP è rail-to-rail, ciò implica che la minima tensione che puoi misurare non sarà -5V ma circa 5-0.6V=4.4V circa, cioè 5V meno la caduta sul diodo. Rail-to-rail significa che la massima (e minima) tensione sintetizzabile sono molto prossime alle tensioni di alimentazione. Così un OPAMP suddetto se alimentato a +5V e 0V potrà portare l'uscita a massimo +5V e minimo 0V. Viceversa, un OPAMP non rail-to-rail sintetizzerà, ad esempio, al massimo +4.6V e al minimo 0.4V. Ovviamente per applicazioni del genere è d'obbligo un rail-to-rail, altrimenti i range di utilizzo si ridurranno drasticamente.
Per il comparatore, invece, suggerirei di invertire i due ingressi, così la presenza di una tensione negativa sarà segnalata da un'uscita alta, e da una configurazione a trigger di Schmitt per renderlo più resistente ai disturbi:
Detto ciò, per l'errore si può solo agire adattando al massimo il range in ingresso: se vuoi una modalità per il 0-10V e un'altra per il 10-50V basta solo metterci un commutatore:
Così avrai un partitore per il range 0-10V e un altro per i 0-50V. La risoluzione è dunque 40mV per il primo e 200mV per il secondo.
allora, il circuito che hai postato necessita di un paio di considerazioni, in particolare il raddrizzatore di precisione:
Non capisco il segnificato della R in retroazione tra il partitore in ingresoo e l'ADC... perché l'hai messa? Per valutare quello che può o non può fare l'OPAMP, valuta l'escursione per tutti i possibili ingressi: vuoi che il tuo circuito funzioni solo per tensioni negative? In tal caso l'uscita dell'OPAMP assume un valore minimo di circa 0.6V (la caduta sul diodo D2): infatti D1 è spento e D2 è in conduzione. Quindi qui puoi utilizzare un'alimentazione singola, però la massima tensione sintetizzabile dall'OPAMP è 5V se l'OPAMP è rail-to-rail, ciò implica che la minima tensione che puoi misurare non sarà -5V ma circa 5-0.6V=4.4V circa, cioè 5V meno la caduta sul diodo. Rail-to-rail significa che la massima (e minima) tensione sintetizzabile sono molto prossime alle tensioni di alimentazione. Così un OPAMP suddetto se alimentato a +5V e 0V potrà portare l'uscita a massimo +5V e minimo 0V. Viceversa, un OPAMP non rail-to-rail sintetizzerà, ad esempio, al massimo +4.6V e al minimo 0.4V. Ovviamente per applicazioni del genere è d'obbligo un rail-to-rail, altrimenti i range di utilizzo si ridurranno drasticamente.
Per il comparatore, invece, suggerirei di invertire i due ingressi, così la presenza di una tensione negativa sarà segnalata da un'uscita alta, e da una configurazione a trigger di Schmitt per renderlo più resistente ai disturbi:
Detto ciò, per l'errore si può solo agire adattando al massimo il range in ingresso: se vuoi una modalità per il 0-10V e un'altra per il 10-50V basta solo metterci un commutatore:
Così avrai un partitore per il range 0-10V e un altro per i 0-50V. La risoluzione è dunque 40mV per il primo e 200mV per il secondo.
0
voti
AndreaVez ha scritto: Un voltmetro cosi non è un granchè ...
I problemi di fondo sono due: la poca risoluzione e l'impossibilità di misurare tensioni negative.
Personalmente non amo mettere circuiti attivi che poi possono derivare e pregiudicare la qualità della misura, preferisco avere qualcosa che sia già adeguato di suo.
Invece di cercare di adattare un PIC a fare qualcosa per cui ha i suoi limiti, ti suggerirei di usare un ICL7106/7107. Con un minimo di sforzo hai un DVM con alimentazione singola, fondo scala +/- 200 mV e risoluzione 4000 punti, quasi 12 bit. L'ADC interno è a doppia rampa ed è specificato per misurare 0 con 0V in ingresso grazie all'autozero. L'IC costa qualche euro
0
voti
gill90 ha scritto:Non capisco il segnificato della R in retroazione tra il partitore in ingresoo e l'ADC... perché l'hai messa?
Grazie per la risposta. Effettivamente hai ragione, non serve questa resistenza. L'ho trovato su internet ma non mi sono accorto che era praticamente quello che avevo già analizzato senza di essa, un raddrizzatore che non fa passare le tensioni negative, solo quelle positive. A proposito dei rail to rail - non sapevo che ci fossero e ho già propvato a fare una simulazione e funzionano meglio.
Grazie edgar. Darò un'occhiata a questi integrati.
0
voti
Il problema non sono le cadute, perché in uscita ti ritroveresti sempre la tensione in ingresso in modulo. Il punto sono le massime tensioni che puoi misurare: in questo caso non potrai misurare meno di -4.4V circa, cioè non puoi arrivare al -5V perché l'operazionale sautra e oltre non ci puoi andare con una singola alimentazione da +5V. Utilizzare un integrato a switch CMOS secondo me è un'idea migliore, anche perché non ti servono particolari applicazioni ed è sufficiente invertire il senso della commutazione. A dire la verità io non ne ho mai usati quindi nella pratica non so dirti quanto sono le cadute resistive interne e le tensioni massime... Guardando il datasheet direi che può fare al caso tuo, ha una resistenza in stato ON piuttosto alta ma siccome a valle ci metti l'ADC si ritroverà una resistenza di ingresso molto elevata e di conseguenza non avrà cadute apprezzabili. Prova con questo sistema (intanto per la fascia [-5V, 0V]), e se funziona puoi aumentare anche il range di tensioni in ingresso. Non aspettarti grandi cose però!
0
voti
Che io sappia non si mette un raddrizzatore per misurare tensioni positive e negative.
In genere si aggiunge un offset a metà tensione di riferimento e si acquisisce.
In questo modo le tensioni di ingresso sono sempre positive.
Questo metodo, naturalmente, ha il costo di un bit, ma ci sono tecniche per stabilire il segno della tensione di ingresso (con il micro è sufficiente vedere se la tensione digitalizzata è superiore o inferiore a 2^(n-1) dove n è il numero di bit del convertitore) e poi, se la tensione è positiva, annullare l'offset e se è negativa porlo a fondo scala.
Credo che con il micro non sarebbe troppo difficile da fare.
In genere la rete di ingresso consiste in soli elementi passivi con qualche MOS per il cambio del fondo scala (ma con il micro si potrebbe configurare una o più uscite in open-drain e utilizzare direttamente il MOS della logica di uscita).
Previo che se io dovessi davvero fare un voltmetro con un micro cercherei di ricondurmi ad una misura in frequenza, facendo, per esempio, un voltmetro a integrazione doppia.
Sarebbe bello avere il parere di
DirtyDeeds, se ha un attimo di tempo.
Ciao,
Pietro.
In genere si aggiunge un offset a metà tensione di riferimento e si acquisisce.
In questo modo le tensioni di ingresso sono sempre positive.
Questo metodo, naturalmente, ha il costo di un bit, ma ci sono tecniche per stabilire il segno della tensione di ingresso (con il micro è sufficiente vedere se la tensione digitalizzata è superiore o inferiore a 2^(n-1) dove n è il numero di bit del convertitore) e poi, se la tensione è positiva, annullare l'offset e se è negativa porlo a fondo scala.
Credo che con il micro non sarebbe troppo difficile da fare.
In genere la rete di ingresso consiste in soli elementi passivi con qualche MOS per il cambio del fondo scala (ma con il micro si potrebbe configurare una o più uscite in open-drain e utilizzare direttamente il MOS della logica di uscita).
Previo che se io dovessi davvero fare un voltmetro con un micro cercherei di ricondurmi ad una misura in frequenza, facendo, per esempio, un voltmetro a integrazione doppia.
Sarebbe bello avere il parere di
Ciao,
Pietro.
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
0
voti
Io taglierei la testa al toro ed utilizzerei un ad a 16 bit con interfaccia I2C come QUESTO.
Per fare un voltmetro va più che bene e costa pochissimo, meno di 2 euro.
Ovviamente con 0 centrale (senza raddrizzatore, a metà della tensione di ingresso come ha detto
PietroBaima).
Si otterrebbero comunque 15 bit in positivo e 15 in negativo.
Per fare un voltmetro va più che bene e costa pochissimo, meno di 2 euro.
Ovviamente con 0 centrale (senza raddrizzatore, a metà della tensione di ingresso come ha detto
Si otterrebbero comunque 15 bit in positivo e 15 in negativo.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
3
voti
PietroBaima ha scritto:In genere si aggiunge un offset a metà tensione di riferimento e si acquisisce.
Sì, in genere si fa così. Per poterlo fare, però, la tensione di riferimento dell'ADC deve essere accessibile.
Ciò detto, volendo fare un voltmetro con caratteristiche decenti, opterei per una delle seguenti possibilità:
- Sostituzione dell'ADC con un delta-sigma bipolare: ce ne sono di buone caratteristiche a prezzo contenuto. Eventualmente il micro può essere utilizzato, oltre che per interfacciare l'ADC, anche per realizzare un sistema di auto zero nel caso non fosse presente nell'ADC. Visto che l'OP sta già usando un ADC esterno al micro, questa mi sembra la strada più percorribile.
- Se le specifiche non sono stringenti si può pensare di prendere un micro con ADC interno e poi metterci un po' di circuiti ausiliari per traslare il campo di misura e per migliorare un po' le caratteristiche.
- Realizzare, come suggerito da
PietroBaima, un ADC discreto controllato dal micro. Farei questa scelta solo se volessi realizzare un voltmetro con caratteristiche superiori a quelle degli ADC comunemente trovabili in commercio, con tutte le difficoltà che questo comporta, però (e a quel punto cercherei di realizzare un ADC a integrazione multipla o un delta-sigma).
gill90 ha scritto:se vuoi una modalità per il 0-10V e un'altra per il 10-50V basta solo metterci un commutatore:
Questo non è, in generale, un buon modo per fare un partitore variabile: perché?
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
0
voti
DirtyDeeds ha scritto:Questo non è, in generale, un buon modo per fare un partitore variabile: perché?
Azzardo che ho omesso un disaccoppiatore per rendere il partitore insensibile alla circuiteria a valle, giusto?
24 messaggi
• Pagina 1 di 3 • 1, 2, 3
Chi c’è in linea
Visitano il forum: Nessuno e 113 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)







pigreco]=π