Visualizza messaggio singolo
Vecchio 23 aprile 09, 09:20   #9 (permalink)  Top
Milus
User
 
Data registr.: 20-12-2006
Messaggi: 252
Citazione:
Originalmente inviato da Mrk89 Visualizza messaggio
Si, certo!! Se diminuisci la tensione di riferimento superiore,oppure amplifichi la tensione che esce dal sensore aumenti la risoluzione di conversione!!
Tutto questo però ti crea un po' di problemi:

1- Il sensore ti restituisce come tensione di zero VCC/2 con un'escursione a 30A di 1.2V.
soluzione punto 1- Hai bisogno di un'amplificatore operazionale in configurazione differenziale per portare i 2.5V a zero e deve amplificare per portare la tensione da un'escursione di 1.2V ad un'escursione di 5V.

Complicazioni punto 1- Per utilizzare un amplificatore operazionale intorno agli zero V devi avere una tensione negativa oltre che positiva, il che significa o utilizzare un'alimentatore duale, oppure utilizzare una pompa di carica.
Tutte queste cose naturalmente occupano spazio e costano.

2-Il sensore ha un'escursione di 1.2V.
soluzione punto 2- Prendi riferimenti di tensione esterni.
In questa maniera devi creare due stabilizzatori abbastanza precisi che ti stabilizzino le tensioni Vref- e Vref+ a quanto desideri ( VCC/2 e VCC/2+(Escursione in volta di 30A= 1.2V) ).
Complicazioni punto 2-Anche questi sarebbero componenti esterni in più, che potrebbero essere o semplici resistori, oppure stabilizzatori integrati tipo LM341.

Soluzione a tutto.IMHO
Imposti il PIC per avere le tensioni di riferimento 0 e VCC.
5 volt divisi in 1024 passi => 5/1024~5mV.
Questo valore corrisponde a 1/8 di A ( Tenendo conto che ogni ampere corrisponde a 40mV ).
Leggi la tensione direttamente dal sensore, che per una corrente di 0A ti restituisce una tensione di VCC/2, che corrisponde al numero binario 512.
Prendi la lettura, sottrai 512 ed arvai nella variabile letta e convertita il valore 0.Da qui poi imposti il fattore di scala ed hai finito.
Non so se conosci il C, eccoti 2 righe di codice per fare il tutto:

unsigned int a;
signed int b;

void main()
{
----------
-------------
--------
a=Adc_Read(0);
b=(a-512)/8;
//a questo punto b avrà un valore che si incrementerà di Ampere in ampere.
//Se vuoi aumentare la risoluzione, invece di dividere 8 dividi 4 ed avrai una risoluzione doppia, b avrà un valore che si incrementerà di 1/2 Ampere in 1/2 ampere.
}

Spero di essere stao chiaro, e spero di non averti creato altra confusione...
No, no, sei stato chiarissimo e non mi hai aumentato la confusione.
Passo dopo passo imparo un sacco di cose.

Grazie mille.

Ciao

Massimo
Milus non è collegato   Rispondi citando