Pages: [1] 2   Go Down
Author Topic: Strumento di misura  (Read 1419 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti,
ricorro al vostro aiuto per un consiglio.
Devo realizzare uno strumento di misura, basato su arduino, per prove su materiali.
L'obiettivo è acquisire l'uscita di una cella di carico con portata 100g con risoluzione minima di 0,01g.
La cella di carico è dotata di uscita 4-20mA, a 0g corrispondono 4mA, a 100g ne corrispondono 20 mA.
Trattandosi di uno strumento di misura, leggo l'uscita del suddetto sensore su una resistenza di precisione (1%) da 250ohm.

Per la risoluzione desiderata, l'ADC dell'arduino mega a 10bit non è sufficiente, pertanto vorrei capire se è possibile utilizzare un ADC ad hoc con prestazioni maggiori.

Un'altro consiglio che vi chiedo è questo: ci sono particolari accorgimenti sull'alimentazione che devo curare per evitare fluttuazioni elettriche che possono influenzare la misura acquisita?
Dovrei utilizzare un'alimentatore stabilizzato o un normale regolatore tipo lm7805 può essere sufficiente?

Grazie per l'aiuto prezioso.



Logged

Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per la risoluzione desiderata, l'ADC dell'arduino mega a 10bit non è sufficiente, pertanto vorrei capire se è possibile utilizzare un ADC ad hoc con prestazioni maggiori.
Ma se poi devi entrare su Arduino sempre 10 bit avrai  smiley-fat
Considera anche che 4-20 corrispondono a 1-5 per cui il range di risoluzione e' ulteriormrnte ridotto

Quote
Un'altro consiglio che vi chiedo è questo: ci sono particolari accorgimenti sull'alimentazione che devo curare per evitare fluttuazioni elettriche che possono influenzare la misura acquisita?
Dovrei utilizzare un'alimentatore stabilizzato o un normale regolatore tipo lm7805 può essere sufficiente?
Io ho fatto una cosa simile per acquisire dei sensori di amperaggio
Ho usato il 7805 per alimentare i sensori ed anche l'ingresso AREF ; lo 0 dei sensori e' a Vin/2 per cui avevo necessita' che il riferimento fosse uguale al Vin dei sensori
Collegamenti fatti interamente con cavetti schermati con calza sul GND di Arduino

Non so se dico una c***ta ma mi viene da pensare che la resistenza sia meglio metterla dal lato Arduino ; il circuito in corrente dovrebbe essere meno disturbato che quello in tensione
Ciao
« Last Edit: April 13, 2012, 04:19:40 am by brunol949 » Logged

Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9864
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La cella di carico è dotata di uscita 4-20mA, a 0g corrispondono 4mA, a 100g ne corrispondono 20 mA.
Trattandosi di uno strumento di misura, leggo l'uscita del suddetto sensore su una resistenza di precisione (1%) da 250ohm.

Dato che la resistenza è al 1% è inutile usare un ADC con una risoluzione maggiore di 10 bit, 1024 step, in quanto l'errore introdotto dalla resistenza è 10 volte la risoluzione.
Esempio pratico, 20 mA sono 100 grammi, con 1024 count hai una risoluzione pari a 0.1 grammi, però la precisione della resistenza comporta che invece di leggere 100 grammi leggi un qualunque valore compreso tra 99 e 101 grammi.
Per fare la misura in modo preciso devi dare l'alimentazione a Avcc del 328 disaccoppiandolo dal Vcc generale del micro tramite una resistenza da 10-30 ohm e un condensatore da 100 nf, inoltre devi usare un riferimento di tensione molto preciso e stabile su Aref, va benissimo il riferimento a 1.1 V interno del 328.
Dato che su Arduino Avcc è in parallelo a Vcc a meno che non ti metti a modificare la scheda non puoi fare nulla per questa cosa, puoi solo usare il riferimento interno a 1.1V, con una resistenza da 55 ohm 1%, in modo da ottenere una stabilità e precisione nettamente migliori di quelle standard utilizzando come riferimento i 5V della alimentazione.
L'ideale è alimentare Arduino tramite una batteria o un alimentatore ben stabilizzato e pulito piuttosto che tramite la USB che ha valori di tensione mai esattamente a 5V ed è molto sporca.
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9864
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma se poi devi entrare su Arduino sempre 10 bit avrai  smiley-fat

Se usi un ADC esterno la risoluzione sarà quella di quest'ultimo e non certo quella del ADC di Arduino.
Logged

Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma se poi devi entrare su Arduino sempre 10 bit avrai  smiley-fat
Se usi un ADC esterno la risoluzione sarà quella di quest'ultimo e non certo quella del ADC di Arduino.
Ma se poi i calcoli li fa Arduino da dove passi per avere una risoluzione maggiore ??
Logged

Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9864
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma se poi i calcoli li fa Arduino da dove passi per avere una risoluzione maggiore ??

E da quando i calcoli di Arduino sono limitati a 10 bit ?
Se non hanno cambiato il compilatore stamattina mi risulta che i calcoli li puoi fare fino 32 bit  smiley-mr-green
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non mischiamo le cose smiley
con un adc esterno, il valore della campionatura viene comunicato ad arduino (tramite il protocollo che prevede l'adc) il quale non esegue nessun calcolo, semplicemente legge il valore che gli è stato passato.
Logged

Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma se poi i calcoli li fa Arduino da dove passi per avere una risoluzione maggiore ??

E da quando i calcoli di Arduino sono limitati a 10 bit ?
Se non hanno cambiato il compilatore stamattina mi risulta che i calcoli li puoi fare fino 32 bit  smiley-mr-green
Intendevo dire che dovendo entrare da un AIn sempre 1024 avra' ed a lui servono 10000 punti ; lasciando perdere la storia del 1%
Logged

Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non mischiamo le cose smiley
con un adc esterno, il valore della campionatura viene comunicato ad arduino (tramite il protocollo che prevede l'adc) il quale non esegue nessun calcolo, semplicemente legge il valore che gli è stato passato.
Ok
Ci vuole una schedina che oltre al ADC comunichi con arduino via bus
Logged

Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9864
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Intendevo dire che dovendo entrare da un AIn sempre 1024 avra' ed a lui servono 10000 punti ; lasciando perdere la storia del 1%

Dove sta scritto che un ADC esterno si collega ad un ingresso analogico di Arduino ?
Un ADC esterno o comunica tramite interfaccia parallela, tanti pin impegnati, oppure tramite un bus seriale come la I2C, SPI etc, e ovviamente passa i dati con la sua risoluzione, ovvero se è da 12 bit avrai un valore intero contenente un valore al massimo pari a 4096.
Logged

Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dove sta scritto che un ADC esterno si collega ad un ingresso analogico di Arduino ?
Da nessuna parte
Inizialmente si e' parlato di ADC per cui io intendo un coso nero con dei piedini
Per essere precisi si deve allora parlare di "Scheda di acquisizione analogica completa di sistema di comunicazione"
Ecco l'origine del mio malinteso
Purtroppo sono abituato a immaginare limitatamente a quello che leggo
Logged

Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9864
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Inizialmente si e' parlato di ADC per cui io intendo un coso nero con dei piedini

Si ma il coso nero pieno di piedini in qualche modo deve comunicare con il mondo esterno, ovvero una parte di quei piedini sono un qualche bus di comunicazione.

Quote
Per essere precisi si deve allora parlare di "Scheda di acquisizione analogica completa di sistema di comunicazione"

Un conto è una scheda intera, che potrebbe anche lavorare totalmente stand alone e magari salvare i dati su una SD, e un conto è parlare del singolo componente, inteso come circuito integrato, ADC che per forza di cose deve possedere un modo per comunicare con il mondo esterno.

Logged

Rovereto
Offline Offline
Full Member
***
Karma: 0
Posts: 152
La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Forse, io non ho mai provato, si può utilizzare l'ADC interno dell' ATmega con la tecnica dell'oversampling per aumentare la risoluzione dell'ADC, come descritto nella Application Note AVR120 di Atmel dopo avere eseguito la calibrazione dell'ADC.
Il prezzo da pagare per l'oversampling è la diminuzione della bandwidth che a 10 bit corrisponde a 7600Hz e scende a 475Hz con 12 bit.

Ciao
QP
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9864
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Forse, io non ho mai provato, si può utilizzare l'ADC interno dell' ATmega con la tecnica dell'oversampling per aumentare la risoluzione dell'ADC

L'oversampling e conseguente decimazione per aumentare la risoluzione del ADC funziona solo se il segnale analogico è rumoroso, e c'è tutta una serie di considerazioni su come e quanto deve esserlo, in fin dei conti questa tecnica è un compromesso di condizioni e non una soluzione assoluta.
Una cella di carico fornisce un segnale abbastanza pulito quindi l'oversampling non è applicabile a meno di non introdurre volontariamente un rumore su Aref, ma qui le cose cominciano a farsi molto complicate e difficilmente gestibili a livello amatoriale senza disporre di idonea strumentazione per la messa a punto del sistema.
Esempio pratico, l'oversampling funziona bene con uscite analogiche da sensori mems che sono molto rumorose di loro, non funziona per niente se la applichi ad una tensione presa da un partitore resistivo alimentato da una tensione pulita.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

io nel mio intervento parlavo di protocollo non a caso smiley
Per avere un esempio teorico/pratico prendete inesame il MAX127 o il 128 (è quasi uguale)
http://www.maxim-ic.com/datasheet/index.mvp/id/1890
quei 3 condensatori esterni sono tutto quello che serve per farlo funzionare (il lo ho montato su una protoshield), la risoluizione è ottima e con i2c ne vieni fuori solo impegnando 2 pin di arduino smiley-wink
Logged

Pages: [1] 2   Go Up
Jump to: