Sensore di corrente ACS712 30A

Salve sto cercando di monitorare i consumi per il mio web server domotico Costruzione web server domotico - Generale - Arduino Forum
per farlo ho acquistato questo sensore di corrente http://www.ebay.it/itm/ACS712-Sensore-corrente-30A-amperometro-Arduino-monitor-consumi-/121212262314
cercando in internet il modo per interfacciarlo con arduino ho trovato questo http://www.machiavellico.com/?p=364
collegato il tutto ho caricato questo scketch

// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3

#include "EmonLib.h"                   // Include Emon Library
EnergyMonitor emon1;                   // Create an instance

void setup()
{  
  Serial.begin(9600);
  
  emon1.current(2, 11.8);             // Current: input pin, calibration.
}

void loop()
{
  double Irms = (emon1.calcIrms(1480)-0.04); // Calculate Irms only
  
  Serial.print(Irms*230.0);	       // Apparent power
  Serial.print(" ");
  Serial.println(Irms);		       // Irms
  delay(2000);
}

e ho ottenuto i seguenti valori

2002.17 8.71
0.92 0.00
-0.40 -0.00
-0.39 -0.00
-0.95 -0.00
-0.30 -0.00
-0.48 -0.00
-0.41 -0.00
-0.36 -0.00
-0.36 -0.00
-0.59 -0.00
-0.41 -0.00
-0.91 -0.00
-0.39 -0.00
-0.48 -0.00
49.45 0.21
49.63 0.22
49.77 0.22
49.51 0.22
49.48 0.22
49.53 0.22
49.53 0.22
49.55 0.22
49.33 0.21
48.94 0.21
49.44 0.21
49.46 0.22
49.77 0.22
49.23 0.21
49.60 0.22
49.45 0.22
48.79 0.21
49.29 0.21
49.54 0.22
49.10 0.21

la cosa strana è che io sto usando una lampadina a incandescenza da 75W mentre il sensore calcola che la potenza utillizata sia di 49W e la corrente assorbita sia di solo 220mA
volevo sapere se tutto questo è normale. e il perche il primo valore sia cosi diverso.
in allegato le foto dei collegamenti
grazie

Prova a variar ivalori di calibrazione e vedrai la differenza, detto questo non fidarti ciecamente del valore di consumo dichiarato dal costruttore, non sempre corrisponde a realtà l'unico modo per essere sicuro al 100% e farne una perfetta taratura è mettere in serie all ACS un multimetro e misurare con precisione la corrente assorbita.
Ciao Alessandro

grazie ho aggiustato il valore calibration portandolo da 11.8 a 17 poi ho provato ad inserire prima una lampadina da 75W e la misura è stata abbastanza accurata poi ho anche provato ad inserire una lampadina da soli 7W e anche in questo caso la misura è stata accurata

Ottimo :slight_smile: il fatto è che quel sensore lo fanno con diverse correnti supportate da 5 a 30 A ed aumentando perde in precisione, modificando quel valore ti sei messo in linea su per giù col valore reale.
Ciao

per correttezza posto il codice che ho modificato:

// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3

#include "EmonLib.h"                   // Include Emon Library
EnergyMonitor emon1;                   // Create an instance

void setup()
{  
  Serial.begin(9600);
  
  emon1.current(2, 17);             // Current: input pin, calibration.
}

void loop()
{
  double Irms = (emon1.calcIrms(1480)-0.052); // Calculate Irms only (1480: no. of samples)
  
  Serial.print(Irms*230.0);	       // Apparent power
  Serial.print(" ");
  Serial.println(Irms);		       // Irms
  delay(2000);
}

la misurazione dovrebbe rimanere affidabile anche quando collego più di un carico vero?
grazie

Certo che si.

Siccome però la tensione di rete tende a fluttuare dovresti misurarla se desideri la misura precisa della potenza su carico resistivo

Ciao anch io ho preso questo sensore, mi chiedevo se posso collegarlo anche a una fase della 380..?

Certo che lo puoi collegare perchè il 230volt monofase viene ricavato collegando una fase del 400 e il neutro il quale viene ricavato dall centro stella del trasformatore che si trova nella sottostazione. Però per misurare la potenza bisogna misurare tutte e tre le fasi.
Leandro

se fai 10-20 letture e poi una media meglio ancora, non con un for che fai perdere tempo al micro, ma contando i cicli loop()

come non detto lo fa già la libreria

double EnergyMonitor::calcIrms(int NUMBER_OF_SAMPLES)
{
...
for (int n = 0; n < NUMBER_OF_SAMPLES; n++)
  {

nel caso ti servisse un loop() scattante quel for 1480 non è proprio indicato :slight_smile:
ciao

Corrente in tutte e 3 le fasi, Tensione in tutte e 3 le fasi e Zero crossing nelle 3 fasi sia in tensione che in corrente, al fine di calcolare il cosFI e quindi la potenza Attiva e Reattiva, se hai solo un carico resistivo misurare in cosFI non serve, ma nella Trifase è praticamente impossibile trovare solo carico resistivo

se volessi misurare anche:

  emon1.voltage

mi basterebbe un trasformatore con il secondario a 3v due diodi, o meglio un ponte di graetz, e qualche resistenza?

Grazie

Errata corrige
volevo scrivere :

  emon1.voltage

scusate :blush:

Che tipo di trasformatore? Ti serve un current tranformer, non un Voltage tranformer

per TuonoPayne
Ho recentemente utilizzato la versione monodirezionale, nella quale e' presente una uscita di circa 0,5 Volt con corrente uguale a zero.

// Corrente da sensore ACS713, fondoscala 30A, ofset 501mV, 132mV/A (ricavata a prova al banco)
   int ofset = 501;          // valore offset in mV         
   int mVA = 132;            // fattore di conversione in mV/A
   Ain = analogRead(Apin);
   mV = Ain*(5000.0 / 1023.0);
   Amp = (mV-ofset)/mVA;

Ciao

capitava anche a me, penso sia dovuto al fatto che nel calcolo della corrente noi visualizziamo solo le prime 2 cifre dopo la virgola mentre potrebbero essercene altre, io ho portato quasi del tutto a 0 il valore della tensione in assenza di carico cosi:

  double Irms = (emon1.calcIrms(1480)-0.052); // Calculate Irms only (1480: no. of samples)

quel -0.052 che vedi lo ho aggiunto io per avvicinarmi il piu possibile a 0V in assenza di corrente.

Scaricati il Datasheet del componente dal sito di Allegro.

ti copio due dati:

  1. Zero Current Output Voltage; IP= 0 A, TA= 25°C, VCC 5.0, = 0.5V
    (attenzione, la tensione varia leggermente al variare della alimentazione)
  2. Sensitivity Sens Over full range of IP , TA= 25°C, 63 - 66 - 69 mV/A per la misura di -30A a +30A (min-med-Max).

In pratica il dispositivo fornisce una uscita di circa 90% (meno offset)della tensione di alimentazione in funzione della corrente misurata. Ovvero, un dispositivo che misura 30A unidirezionale, avro un segnale che varia di circa 4V
mentre se uso un dispositivo bidfirezionale (-30-+30) e' come avere un dispositivo da 60A e la sensibilita si riduce del 50%.
Ciao

Scusate ma questo sensore (precisamente la versione a 10A ) è obbligatorio collegarlo sul pin A0 o è possibile collegarlo su altri pin analogici? In modo tale da poterne utilizzare diversi contemporaneamente
Grazie