acs712

buongiorno,
io sto provando il seguente componente nell'impianto di casa , acs712 20A col seguente sketch.
Tutto funziona abbastanza bene fino a 2500w poi si perde.
praticamente se attacco un utensile di 2000w più uno da 1000w più 300wdi utensili vari mi da 2700w.
se gentilmente qualcuno mi può aiutare , (magari stò sbagliando componente).
grazie in anticipo

void setup() {
 
  Serial.begin(9600);
}


float watt0; // Potenza letta dal sensore su A0
void loop(){
watt0 = rilevaConsumo(sensorPin2); // Rilevazione dal Sensore A0

}

float rilevaConsumo(const uint8_t sensore){
// float lettura;
float totLetture=0;
// double rmsLetture;
// float ampere;
for(int i = 0; i < 1000; i++) { 

totLetture = totLetture + sq(((float)analogRead(sensore)) – 511);
delay(1);
}

return 220 * ((float)((double)sqrt(totLetture/1000)) * .048828) * .9;

Serial.println("totLetture");

}

dovresti scaricare il data-sheet e verificare se la risposta del sensore è lineare per tutta la gamma, in caso contrario devi compensare via software.

Per calcolare esattamente la Potenza Attiva o Reale (P) bisogna conoscere tensione, corrente e angolo di sfasamento tra tensione e corrente (fi) espresso da cos(fi).

Infatti, P = V * I * cos(fi) ove V ed I possono essere calcolati come la radice quadrata della somma di N campioni al quadrato diviso N, ovvero RMS (Root Mean Square).

Nel tuo sketch hai fatto alcune assunzioni:
1 - tensione rete costante a 220V (in realtà sono 230V)
2 - sfasamento costante cos(fi) = 0.9 (in realtà dipende dal carico)
3 - tensione ADC 5V costanti (in realtà può essere leggermente diversa, ad esempio 4.9 oppure 5.1)
4 - N periodi in esame con N intero, cioè multipli di 20ms (in realtà con 1000 campioni, essendo la velocità 8620 campioni/secondo, N non sarà intero)

Tutte le assunzioni portano a degli errori, alcuni tollerabili, altri meno.

In particolare, l'errore più grande è quello del cos(fi) costante.

quindi mi stai dicendo che è praticamente impossibile trovare i watt giusti, perchè dovrei sapere il cos fi e le varie cadute di tensione che variano a seconda del carico?

Esatto, imponendo il cos(fi) = 0.9 in pratica riduci del 10% la Potenza Apparente (Papp = V * A).

Facciamo un esempio.
Supponiamo che il carico sia 2000W e di tipo resistivo (una stufetta) e che la tensione sia costante a 230V.
E' facile calcolare la corrente che circola: 2000W / 230V = 8.7A

Con il tuo circuito ed il tuo sketch (trascurando anche gli altri errori) misurerai un potenza del 10% inferiore e cioè 1800W.