Salve,
ho uno spezzone di codice che conta degli impulsi e calcola la potenza (utilizzando un contatore di energia con uscita S0) il codice è il seguente:
// == CALCOLO POTENZA ==
void onPulse(){
lastTime = pulseTime;
pulseCount++; // contatore impulsi per energia
newLett = (pulseTime - lastTime); // tempo tra gli impulsi
pulseTime = micros();
power = (3600000000 / (newLett))/ppwh; // calcolo potenza 3600000000uS = 1ora
}
Quando da una potenza elevata (= intervalli brevi di lampeggio) passo ad una bassa (= intervalli più lunghi) la lettura calcolata non rispecchia la realtà del consumo. Questo comportamento è normale ma volevo migliorarlo cercando di far calare in maniera artificiosa i valori con step non legati al consumo reale. Il problema si rende ancora più evidente con l'azzeramento del carico che mi fa rimanere la lettura su l'ultimo valore calcolato in maniera indefinita. Probabilmente questo ultimo problema è risolvibile con una certa facilità mentre il primo illustrato è veramente complicato... per me.
Ho provato ad usare i millis in parecchi modi ma non ne vengo proprio fuori.
Qualcuno mi può dare uno spunto su cui lavorare ?
Grazie