Moin, als Nichtprogrammierer habe ich ab und zu etwas mitbekommen, nach meinem Verständnis:
Es wird sehr oft gemessen und alle 200ms der Durchschnitt berechnet und übermittelt. Dadurch werden statistisch die Schwankungen der Quelle und des Wandlers zuverlässig glattgebügelt. Dieser "mittlere" Stromwert passt dann ziemlich genau.
Code:
analogRead(_pinCurrent) ; // make a first read to let ADCMux to set up
delayMicroseconds(200) ; // wait to be sure
//currentData.sumCurrent += analogRead(_pinCurrent) ;
sumCurrent += analogRead(_pinCurrent) ;
cnt++ ;
milliTmp = millis() ;
if( ( milliTmp - lastCurrentMillis) > 200 ) { // calculate average once per 200 millisec
currentData.milliAmps.value = ((sumCurrent / cnt) - offsetCurrentSteps ) * mAmpPerStep ;
// if (currentData.milliAmps.value < 0) currentData.milliAmps.value = 0 ;
currentData.milliAmps.available = true ;
Für die "Digitalen", wie Mstrens, ist das das ganz normale Procedere im Umgang mit Sensoren. Beim Vario zum Beispiel wird so oft gemessen, wie es nur geht, um halbwegs plausible Daten zu bekommen, die dann wieder in einem Kalman Filter weiterbearbeitet werden. Eine einzelne Messung ist fast wertlos, die Menge macht's.