Vi spiego più o meno brevemente il mio attuale progettino e quindi il problema riscontrato.
Per realizzare un misuratore della produzione del mio impianto fotovoltaico utilizzavo un misuratore e2 della efergy che tramite connessione wireless mi consentiva di avere in casa un display con la potenza istantanea e memoria interna per le statistiche.
Il ricevutore ha anche una porta USB per scaricare i dati e visualizzare grafici, quindi è veramente utile e lo consiglio.
Il problema è che il formato di questi dati che si ottengono via USB è proprietario ossia non ci sono specifiche, e si vedono solo tramite il software in dotazione. Ho comunque trovato il modo di estrarli ma è una cosa molto manuale: devo collegare il ricevutore alla USB del PC, aprire il software, attivare il download, fare il backup dei dati, quindii con un programmino che ho fatto in C# acquisisco i file così prodotti e li converto in CSV che collego ad un foglio dove posso elaborarli e riorganizzarli.
Volendo creare qualcosa di più automatico, ho preso un SCT-013-030 (30A di corrente massima, 1V di segnale, resistenza burden da 62 Ohm interna) che ho collegato al posto della pinza dell' Efergy, quidni connesso ad un Arduino UNO come da schema classico (col partitore di tensione ossia 2 resistenze da 10k, più condensatore da 100nF) per portare a 2.5V la base della tensione del sensore amperometrico.
Tutto ok, ma per capire come misurare e tarare la lettura ho fatto, come di mio consueto, prima una prova separata, ossia con un apposito sketch, solo la pinza collegata ad uno dei cavi della una prolunga, ed un misuratore di consumi a Schuko passante che uso per monitorare l'energia accumulata dal mio scooter elettrico in ricarica (quindi già collaudato ed affidabile).
Uso la libreria Emonlib, ovviamente, e questo è lo sketch di test:
#include "EmonLib.h"
EnergyMonitor emon1;
// Italia 230V
#define RETE 230.0
//Pin del sensore SCT su A1
#define SENS_CORRENTE A1
void setup()
{
Serial.begin(115200); //Apro la comunicazione seriale
// Qualche lettura a vuoto per stabilizzare
Serial.print("Calibrating...");
for (int i=1; i<=4; ++i)
analogRead(SENS_CORRENTE);
delay(500);
// Pin, calibrazione - Corrente Const= Ratio/Res. Burden 1800/62 = 29.
emon1.current(SENS_CORRENTE, 29);
Serial.println();
}
void loop()
{
// Calcolo della corrente e potenza
double Irms = emon1.calcIrms(1480);
// Ignoro correnti piccole (<30W)
if ( Irms <= 0.13 ) Irms = 0;
// Calcolo la potenza ed approssimo (precisione=10W)
int watt = (Irms*RETE)/10; // Corrente*Tensione=Potenza
watt = watt * 10;
// Mostra i valori
Serial.print(Irms,2);
Serial.print(" ");
Serial.println(watt);
delay(1000);
}
A me, come vedete dal listato, non interessa avere una misura precisa al Watt, mi basta una precisione anche solo di +/-50W, anche considerando la precisione della pinza amperometria, del convertitore A/D di Arduino, e del calcolo della corrente RMS.
A quel punto ho collegato un phon ed acceso alla massima potenza, per confrontare la potenza mostrata nel display con quella della pinza amperometrica ed ho riscontrato una differenza ben maggiore di quello che mi aspettassi: a fronte di un consumo di 1.700W del phon l'SCT mi dava solamente 950W ossia un 44% in meno! Ovviamente ho fatto varie prove, e so bene che la misurazione dipende dal tipo di carico e dalla tensione di rete per cui non mi aspettavo una precisione assoluta, mi andava bene pure un delta di 100-150W, ma qui la differenza mi pare eccessiva visto che siamo a 750W di differenza!
Ho quindi provato ad aggiungere un fattore di correzione pari a 1700/950 ossia moltiplico per 1.79 la corrente misurata da emonlib, ed in queste condizioni le letture più o meno rientrano nel range che mi sarei aspettato di vedere senza fattore di correzione.
Collegato poi il misuratore ad un cavo dell'uscita dell'inverter al posto della pinza dell'Efergy, noto che la differenza tra la misura rilevata e quella mostrata dal pannello LCD dell'inverter è ancora più marcata ma anche apparentemente poco lineare ossia a basse potenze la differenza è poco rilevante (es. misura 150W invece di 200W), mentre ad esempio con una produzione di 3.100W l'SCT misurava 2.900 nonostante la presenza del fattore di correzione a 1.79.
Per cui mi (e vi) chiedo: avete idea di come mai la misura da parte dell'SCT è così diversa da quella del misuratore di consumi? Se qualcuno di voi ha realizzato un misuratore di consumi (o produzione come nel mio caso) con lo stesso SCT-013-030 ha una precisione maggiore? Avete fatto prove come quelle che ho fatto io, e con quale esito?