Vai al contenuto
PLC Forum


misura corrente carica/scarica batteria


polmax

Messaggi consigliati

Bungiorno a tutti,

Il progetto consiste nella misurazione della corrente di carica scarica di due batterie (12+12V serie) tramite l'ADC di un pic (16f917) ed un sensore hall (ACS712).

In assenza di passaggio di corrente, il sensore ACS712 ha una OUT=zero V (con alimentazione di 5V)

L'OUT del sensore varia con una sensibilità di +/- 185mV x Ampere.

Per semplificare i calcoli ho pensato di creare una Vref per l'ADC del pic di 3785mV con un TL431. (3785mV/1023passi=3,7mV x passo) in modo tale da ottenere una risoluzione di 20mA.

Per cui avremo:

 

alimentatore -> sensore corrente -> batterie

                      > carico

 

e vorrei misurare la corrente (ed il senso) che fluisce a/dalle batterie

Come gestire il software (in assembler) per l'ADC?

Grazie

polmax

 

Link al commento
Condividi su altri siti


56 minuti fa, polmax ha scritto:

Come gestire il software (in assembler) per l'ADC?

 

Scusa non capisco cosa intendi.

Vuo sapere quali istruzioni bisogna usare per leggere un ADC di un pic?

Link al commento
Condividi su altri siti

No Livio, la lettura dell'ADC riesco a farla. Non so come gestire la lettura che è sempre positiva (passi di 3.7mV) ma che deve essere interpretata al di sotto dei 2500mV come negativa (devo visualizzare la lettura su un display.

In pratica, dallo step 676 (che coincide con lo zero) posso moltiplicare x 20mA ed ottenere la corretta visualizzazione.

Nel caso che la corrente sia inversa (sotto lo step 676) devo sempre moltiplicare x 20mA ma con il segno meno.

Il problema è che lo step 675 (il primo sotto lo zero Ampere) corrisponde a 1x20mA e non 675x20mA.

Come fare?

La mia soluzione che non credo sia quella ideale è quella sottrarre lo step letto allo step 676 (zero A) ottenendo 676-675=1 che moltiplicato x20=20mA

In questo caso (al di sotto dello step 676) antepongo il segno "meno"

E' una mia soluzione... ma credo che ci siano soluzioni migliori.

 

1 ora fa, Livio Orsini ha scritto:

 

Scusa non capisco cosa intendi.

Vuo sapere quali istruzioni bisogna usare per leggere un ADC di un pic?

 

Link al commento
Condividi su altri siti

4 ore fa, polmax ha scritto:

In pratica, dallo step 676 (che coincide con lo zero)

 

Ti basta sottrarre 675 dalla lettura, se è positivo hai la corrente positiva, altrimenti se il risultato è negativo hai corrente negativa. Se 676 corrisponde al massimo negativo dovrai complementare  a 676 per ottenere il valore reale. Esempio 674-675 = -1 ==> 676 - 1 = 675.

 

Non è che ci siano tante altre strade perchè avendo lo A/D unipolare sei costretto a "offsettare" lo zero a metà scala.

 

PS. Ma che riferimento di tensione hai? perchè con 5V e 1024 passi, ogni passo è pari a circa 4,88mV

 

Link al commento
Condividi su altri siti

3 ore fa, Livio Orsini ha scritto:

 

Ti basta sottrarre 675 dalla lettura, se è positivo hai la corrente positiva, altrimenti se il risultato è negativo hai corrente negativa. Se 676 corrisponde al massimo negativo dovrai complementare  a 676 per ottenere il valore reale. Esempio 674-675 = -1 ==> 676 - 1 = 675.

 

Non è che ci siano tante altre strade perchè avendo lo A/D unipolare sei costretto a "offsettare" lo zero a metà scala.

 

PS. Ma che riferimento di tensione hai? perchè con 5V e 1024 passi, ogni passo è pari a circa 4,88mV

 

Allora avevo intuito correttamente la soluzione anche se la tua esposizione è molto più chiara.

Per quanto riguarda la Vref, come sopra esposto, l'ho fissata a 3785mV per ottenere un valore passo di 3,7mV che corrisponde esattamente alla Vout del sensore a 20mA.

Con un passo di 4.88mV la corrispondenza in mA sarebbe stata di (out sensore: 0.185mV x mA) 4,88/0.185=26,38mA

Quale errore sto commettendo? perchè sicuramente la mia "trovata" è sciocca!

Link al commento
Condividi su altri siti

Se usi il tradizionale 1024 conteggi per 5 V, quindi 4.88mV a passo, avrai lo zero a 512 conteggi e, se osservi il numero in binario, vedi che è più semplice eseguire il cmplemento per i negativi e la sottrazione dell'offset.

Invece di avere il fondo scala giusto al limite hai anche la possibilità di avere un margine positivo e negativo.

La risoluzione non cambia.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

2 ore fa, Livio Orsini ha scritto:

Se usi il tradizionale 1024 conteggi per 5 V, quindi 4.88mV a passo, avrai lo zero a 512 conteggi e, se osservi il numero in binario, vedi che è più semplice eseguire il cmplemento per i negativi e la sottrazione dell'offset.

Invece di avere il fondo scala giusto al limite hai anche la possibilità di avere un margine positivo e negativo.

La risoluzione non cambia.

proverò questa strada che mi permetterà inoltre di di risparmiare una porta AN.

Grazie ancora una volta Livio!

Se non ci fossi tu... i miei dubbi rimarrebbero tali.

polmax

Link al commento
Condividi su altri siti

2 ore fa, polmax ha scritto:

Se non ci fossi tu...

 

Ci sarebbe qualcun altro🙂

Comunque ti garantisco, per esperienza personale pluridecennale (il primo micro l'ho usato, lo SCMP, all'incirca 50 anni fa), che non c'è come sbatterci la testa sui problemi, per riuscire ad imparare. Si prova, si leggono note applicative, articoli e altro, vengono le idee e si riprova. Oggi le cose sono un poco più facili c'è la rete che ti permette di consultare tutto, ci sono i forum.

Però che fa sempre la parte maggiore è sempre l'olio di.....meningi.

Link al commento
Condividi su altri siti

1 ora fa, Livio Orsini ha scritto:

 

Ci sarebbe qualcun altro🙂

Comunque ti garantisco, per esperienza personale pluridecennale (il primo micro l'ho usato, lo SCMP, all'incirca 50 anni fa), che non c'è come sbatterci la testa sui problemi, per riuscire ad imparare. Si prova, si leggono note applicative, articoli e altro, vengono le idee e si riprova. Oggi le cose sono un poco più facili c'è la rete che ti permette di consultare tutto, ci sono i forum.

Però che fa sempre la parte maggiore è sempre l'olio di.....meningi.

... concordo sull'uso predominante delle meningi, in tutti i campi, ma il confronto con altre "meningi" amplifica esponezialmente le visuali personali e, per altre meningi, intendo tutte! anche quelle che apparentemente sembrano inadatte.

Link al commento
Condividi su altri siti

  • 2 months later...
Il 5/11/2022 alle 06:36 , Livio Orsini ha scritto:

Se usi il tradizionale 1024 conteggi per 5 V, quindi 4.88mV a passo, avrai lo zero a 512 conteggi e, se osservi il numero in binario, vedi che è più semplice eseguire il cmplemento per i negativi e la sottrazione dell'offset.

Invece di avere il fondo scala giusto al limite hai anche la possibilità di avere un margine positivo e negativo.

La risoluzione non cambia.

Ho ripreso, dopo una lunga pausa, il problema lì dove lo avevo lasciato.

Vorrei seguire il tuo consiglio (Vref=5V) ed utilizzare 1024 passi da 4.88mV ma secondo le mie capacità riesco ad ottenere (con l'aggiunta di un partitore) una risoluzione di 30mV anzichè di 20mV.

Il sensore hall OUT è di 185mV x 1000mA

Il passo dell'ADC è di 4.88mV

4,88/0.185=26.4mA

Con l'inserimento di un partitore (che aggiungerebbe instabilità) potrei arrivare ad una risoluzione di 27mA da portare a 30 per una lettura di più facile comprensione

Mentre con una Vref=3789mV avrei un passo di 3.7mV corrispondente a 20mA esatti misurati dal sensore (senza l'ausilio di partitori)

La mia non è testardaggine ma curiosità di capire cosa mi sfugge, cosa non capisco.

Se hai voglia e pazienza di spiegarmi te ne sono molto grato.

polmax

 

Link al commento
Condividi su altri siti

Scusa ma non riesco a capire quello che intendi.

Fai uno schemettino con i collegamenti con riferimento a 5V ed un'altro dei collegamenti con riferimento a 3.789 V.

Link al commento
Condividi su altri siti

2 ore fa, Livio Orsini ha scritto:

Scusa ma non riesco a capire quello che intendi.

Fai uno schemettino con i collegamenti con riferimento a 5V ed un'altro dei collegamenti con riferimento a 3.789 V.

la Vref a cui fa riferimento l'ADC del pic è fissata a 3.789V tramite un TL431 ed applicata all'apposita porta (RA3 nel caso del PIC 16F917) mentre volessi fissare la Vref a 5V non dovrei fare altro che settare il PIC a Vref=Vdd.

Le letture sul display corrispondono a quelle misurate con un tester.

La mia curiosità, spinta dal desiderio di imparare, scaturisce dalle tue affermazioni riguardo l'adozione della Vref=5V con la quale otterei la stessa risoluzione.

Questa affermazione mi induce a pensare che mi sfugge qualche cosa e che probabilmente ho scelto una strada sbagliata anche se il risultato è identico.

La scelta di 3.789V scaturisce dall'esigenza di avere un multiplo di 3.7mV che il sensore di corrente eroga per ogni 20mA misurati (3789mV/1024steps=3.7)

Con 5Vref ed lo step da 4.88mV avrei un incremento di step = 4.88/0.185mV=26.4mA   (0.185mV corrisponde alla OUT del sensore per ogni mA misurato)

Link al commento
Condividi su altri siti

Stando ai tuoi dati di partenza con riferimento di 3785 mv e con 185mV == 1A il tuo trasdure ha una portata fs di +/- 10,81 A .

Con 5 V di riferimento la portata fs del trasduttore passa a +/-13.51A, anche se in realtà ci si deve limitare a +/- 10A per problemi di linearità

 

Inoltre, stando alle specifiche del costruttore dell'ACS712 (che tra l'altro lo dichiara obsoleto), con corrente = 0A da una tesnsione din uscita di 2.5V per tutti e 3 i modelli, ovvero con fs da 5A, da 20A o da 30A.

Usando il riferimento a 3785mV ti perdi circa 1/4 della scala, infatti ti ritrovi conlo zero pari a 676 counts invece che 512 counts

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

7 minuti fa, Livio Orsini ha scritto:

Stando ai tuoi dati di partenza con riferimento di 3785 mv e con 185mV == 1A il tuo trasdure ha una portata fs di +/- 10,81 A .

Con 5 V di riferimento la portata fs del trasduttore passa a +/-13.51A, anche se in realtà ci si deve limitare a +/- 10A per problemi di linearità

 

Inoltre, stando alle specifiche del costruttore dell'ACS712 (che tra l'altro lo dichiara obsoleto), con corrente = 0A da una tesnsione din uscita di 2.5V per tutti e 3 i modelli, ovvero con fs da 5A, da 20A o da 30A.

Usando il riferimento a 3785mV ti perdi circa 1/4 della scala, infatti ti ritrovi conlo zero pari a 676 counts invece che 512 counts

Concordo con quello che dici ma, utilizzando la versione da 5A (per misure massime di 3A) anche se è considerata obsoleta (cosa non è obsoleto un attimo dopo il lancio sul mercato) mi sembra che che assolva il proprio compito.

La questione è comunque la scelta della Vref atta a ottenere un +/- 20 mA per step che permette una semplicità di lettura anzichè una Vref=5V  (con step da 26,4mA): è secondo te corretta o no?

Link al commento
Condividi su altri siti

29 minuti fa, polmax ha scritto:

(cosa non è obsoleto un attimo dopo il lancio sul mercato)

 

In questo caso è sconsigliato per nuovi progetti.

Comunque la scelta è solo tua.

la mia opinine lìho espressa chiaramente, ma il lavoro è tuo e non mio.

Link al commento
Condividi su altri siti

E' da un po' che leggo questa discussione e la scelta di usare una vref esterna, oltre che prevista è anche giusta.

Il l'ad di quel pic ha una risoluzione di 10bit e scala i suoi 1024 punti tra -vref e +vref.

Il progettista sceglie in base alle proprie esigenze come gestire questi 2 riferimenti a patto che rimangano entro Vdd e Vss.

Link al commento
Condividi su altri siti

Ringrazio tutti per l'interessamento.

E' proprio grazie alle vostre critiche e consigli che posso plasmare la mia ignoranza sull'argomento.

Ma il mio ultimo quesito riguarda puramente un ragionamento logico:

Considerando che non sono un  progettista al servizio di una grande industria (ma questo si era capito!), gli obiettivi in ordine di importanza sono:

1) imparare

2) impiegare l'obsoleto ACS712 che ho in casa (versione 5A poichè me ne bastano 3A) per misurare una corrente

3) impiegare l'ADC di un altrettanto anziano PIC (16f917) per elaborare e visualizzare la corrente

4) sfruttare al meglio i 1024 passi dell ADC per monitorare le correnti

 

In funzione dell'uscita del sensore hall che prevede 2.5V a zero A ed un incremento/decremento di 185mV su un passaggio di 1A mi è sembrato logico "adattare" lo step dell'ADC a tale valore. Da qui la scelta di una Vref esterna (tra l'altro più stabile della Vdd del PIC)

E' vero che non sfrutto tutti gli steps... ma è anche vero che ottengo un valore di step di 20mA anzichè 26.4mA (numero più leggibile su un display)

Inoltre, per conteggiare i 5A max dell'obsoleto ACS712 sono sufficienti 20mAx250step... cosa potrei farmene dei 26.4mAx512step?

 

Concludendo, è ovvio che le scelte sono mie, il lavoro è mio, ma se sono qui è per chiedere umilmente aiuto, una correzione motivata, uno spunto per migliorare, imparare...

Il progetto inziato più di tre mesi fa è cresciuto proprio grazie a voi che con i vostri consigli corredati di motivazioni lo avete plasmato.

 

Ringrazio pertanto in modo particolare Ctec (mi ha fatto affacciare al mondo degli switching) e LivioOrsini (che se fosse dotato di diplomazia quanto lo è di conoscenze tecniche sarebbe un Nobel)

 

Ognuno, a modo suo mi ha aiutato ed io sono grato a tutti

polmax

Link al commento
Condividi su altri siti

15 ore fa, dott.cicala ha scritto:

e la scelta di usare una vref esterna, oltre che prevista è anche giusta.

 

Stefano la Vref esterna, se ricavata da un generatore di tensione stabile e pulito, è sicuramente migliore per precisione e stabilità.

Però, in questo caso, io avrei scelto una Vref più vicina a 5V, per poter avere tutto la scala del trasduttore disponibile.

Ma, come ho scritto prima, queste son scelte di chi fa il progetto, quindi ha stabilito la sua filosofia progettuale.

 

PS

Stefano mi fa piacere che tu continui a seguirci, peccato che non intervieni più. Fatti leggere un po' più spesso.🙂

 

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

10 ore fa, polmax ha scritto:

impiegare l'obsoleto ACS712 che ho in casa (versione 5A poichè me ne bastano 3A) per misurare una corrente

 

Ecco se misuri correnti <= 3A, allora la tua scelta sul valore di riferimento è giusta.

 

10 ore fa, polmax ha scritto:

LivioOrsini (che se fosse dotato di diplomazia quanto lo è di conoscenze tecniche sarebbe un Nobel)

 

Dipende dai punti di vista, potrei ribaltare il concetto riferendomi alla tua suscettibilità.

Quando si discute di questioni tecnico-scientifiche non non c'è diplomazia, i concetti, fortunatamente, sono precisi.

La diplomazia è una cosa più adatta a questioni politiche, anche di politca spicciola ristretta al solo ambito delle conoscenze personali.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...