Pages: [1] 2   Go Down
Author Topic: Amperometro con Sensore ACS758  (Read 4998 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sto cercando inutilmente di rilevare il giusto valore di corrente con il sensore allegro ACS758.
Mi manda al diplay valori caso che fluttuano.
Ho letto che tale sensore funziona in modo bidirezionale,in condizioni di riposo con il multimetro leggo 2,27V se faccio scorrere la corrente per accendere una lampada leggo 2,32V,quindi ne deduco che il sensore funziona correttamente.
Il problema è indubbiamente sul lato software. smiley-cry
Chi mi da una mano ???
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21188
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il sensore ACS758 esiste in diverse versioni con range di misura diverse (+50 a +200A e da +/-50 a +/-200A)

Presumo che hai un modello per alternata e misuri una corrente alternata.
Il valore che leggi dipende dal momento di lettura durante la sinusoidale. Devi fare una media e sottrarre l' offset.

Se le mie supposizioni sono sbaglaite descrivi meglio che sensore hai e che corrente misuri.

la differenza tra 2,27V e 2,32V sono 50mV percui malappena 10 ADC (con un riferimento di 5V). C'é una certo errore di misura che fa variare leggermente il valore letto.

Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco il sensore che utilizzo:
http://it.rs-online.com/web/p/sensori/7248739/
Vorrei impiegarlo per misurare corrente continua proveniente da batterie ad alto amperaggio.
Grazie.
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dal datasheet nella pagina di RS (http://docs-europe.electrocomponents.com/webdocs/0d88/0900766b80d885f6.pdf) il sensore a 0 Ampere rende Vcc/2, quindi circa 2,5V,.
Se è superiore la corrente va in un verso se inferiore va nell'altro, a te serve la differenza con valore a 0 Ampere.
Nella prima pagina del datasheet c'è anche lo schema di collegamento e i valori di Rf e Cf sono indicati nella tabella a pagina 5.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il circuito adesso è OK.
Adesso avrei bisogno di qualche riga di codice. smiley-evil
Come faccio a settare il valore zero a 2,5V nell'ingresso analogico?
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il circuito adesso è OK.
Adesso avrei bisogno di qualche riga di codice. smiley-evil
Come faccio a settare il valore zero a 2,5V nell'ingresso analogico?

Con analogread tu leggi un valore compreso tra 0 e 1023. Se lo moltiplichi per 5 e dividi per 1024 ottieni il valore di tensione. A questo sottrai 2,5 e ottieni la tensione riferita allo zero.
Moltiplichi questo valore per mille per ottenere i milliVolt e lo divisi per 20 per ottenere gli Ampere. (dal datasheet la sensibilità del sensore è 20mV/A)
Sono col tabelt è non ho a disposizione l'IDE per scrivere e convalidare il codice. Comunque in giro qualche cosa dovresti trovarla. (cerca esempi sulle misure di temperatura, il procedimento è simile)

Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21188
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dal datasheet nella pagina di RS (http://docs-europe.electrocomponents.com/webdocs/0d88/0900766b80d885f6.pdf) il sensore a 0 Ampere rende Vcc/2, quindi circa 2,5V,.
Se è superiore la corrente va in un verso se inferiore va nell'altro, a te serve la differenza con valore a 0 Ampere.
Nella prima pagina del datasheet c'è anche lo schema di collegamento e i valori di Rf e Cf sono indicati nella tabella a pagina 5.

La versione unipolare cha ha Rumberopie é il ACS758ECB-200U-PFF-T; 200 A unipolare. Per quello vale:
VIOUT(QUNI) Unidirectional variant, IP = 0 A, TA = 25°C, VIOUT(QUNI) is ratiometric to VCC: Typ. 0.6 V

Percui a 0A dovrebbe dare 0,6V in uscita.

Ciao Uwe
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Seguendo l'esempio riportato qui (http://arduino.cc/forum/index.php/topic,103399.0.html) applicabile cambiando poche cose, il codice dovrebbe essere qualcosa del genere:
Code:
 // let's get measurin'
sensor = analogRead(analogpin);
millivoltage = (sensor*5*1000)/1024; // convert raw sensor value to millivolts
millivoltage = millivoltage-600;        // remove voltage offset (0,6V)
ampere = millivoltage/20;         // convert millivolts to Ampere
oppure tutto su una riga
Code:
float ampere = ((float)((analogRead(analogpin)*5000)/1024.0)-600)/20
riducendo
Code:
float ampere = (float)(analogRead(analogpin)/0.24414)-30
« Last Edit: May 31, 2012, 12:19:42 pm by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie PaoloP,domani mi fiondo a provarlo. Vi faccio sapere!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi cospargo il capo di cenere!Ho sbagliato a postare il link.
Il sensore che sto usando può misurare 200A bidirezionali.
il link corretto:
http://it.rs-online.com/web/p/sensori-effetto-hall/6807551/?searchTerm=680-7551&relevancy-data=636F3D3126696E3D4931384E525353746F636B4E756D6265724D504E266C753D656E266D6D3D6D61746368616C6C26706D3D5E5C647B337D5B5C732D2F255C2E5D5C647B332C347D2426706F3D313426736E3D592673743D52535F53544F434B5F4E554D424552267573743D3638302D373535312677633D4E4F4E4526

Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bidirezionale con sensibilità di 10mV/A e zero a Vcc/2.
Code:
// let's get measurin'
sensor = analogRead(analogpin);
millivoltage = (sensor*5*1000)/1024; // convert raw sensor value to millivolts
millivoltage = millivoltage-2500;        // remove voltage offset (2,5V)
ampere = millivoltage/10;         // convert millivolts to Ampere
oppure
Code:
float ampere = (float)(analogRead(analogpin)/0.48828)-250
« Last Edit: May 31, 2012, 12:20:16 pm by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Adesso fuonziona !!! smiley
Ho confrontato i valori che mi restituisce con quelli misurati con un amperometro digitale.
L'unico problemico consiste in una fluttuazione anche di qualche ampere nella misura.
Cosa posso fare per avere una misura più stabile?
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Campioni più volte e fai la media.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho trasferito tutto dalla board ad un pcb e adesso le letture sono più stabili.
Ho integrato anche la lettura di tensione e con una semplice operazione adesso riesco a sapere il valore di potenza in watt.
Chiedo aiuto per implementare la funzione  di memorizzazione del massimo valore di corrente raggiunto durante una scarica.
Ho provato inutilmente con il comando "max()",ma come mi confermerete è un comando di confronto fra due valori ,quindi non utile al mio scopo.
Please help me! smiley-roll-blue
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ho idea di come fare...
Please help me!
Logged

Pages: [1] 2   Go Up
Jump to: