|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
malci Član
Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 793 Aktiv.: 3.92 Kraj: Polhov Gradec
|
Objavljeno: Ned Apr 09, 2023 12:13 pm Naslov sporočila: Arduino - povprečenje analognih meritev |
|
|
Pozdrav.
Pri meritvi toka moram oz sem za bolj stabilne/natančne meritve uporabil povprečenje. To deluje ok, tudi kodo, kjer odšteje največjo in najmanjšo vrednost sem sestavil in deluje.
Spodaj pa pripenjam del kode, kjer odštejem dve max in dve min vrednosti, za katero pa nisem več 100%,da deluje ok (da vrne pravo vrednost)? Ker če bo prva prebrana vrednost najmanjša od vseh 20-tih, potem ShuntIntMin[1] ostane na 8500....
Pričakovane vrednosti Shunt so od -80.00mV do + 80mV.
Kako rešiti to težavo? oz sploh če bi želel odštevati 5 max in 5 min vrednosti pri 30-tih meritvah?
lp
Uroš
Koda: |
//*********meritev toka na shuntu in povprečenje...******************
long ShuntTotal=0; // sešteta vrednost meritev
int ShuntInt; // integer vrednosti
int ShuntIntMax[2]={-8500, -8500};
int ShuntIntMin[2]={8500,8500};
for(int i = 0; i<20; i++){
Shunt= ina226.getShuntVoltage_mV(); // vrednost v decimalkah (npr 16.75mV) - Shunt je deklarian kot Float
ShuntInt=Shunt * 100; // preračun v integer (brez decimalk)
if (ShuntInt> ShuntIntMax[0]) { // preveri če je vrednost večja od max
ShuntIntMax[1]=ShuntIntMax[0]; // najprej iz ShuntIntMax[0] >> v ShuntIntMax[1]
ShuntIntMax[0]=ShuntInt; // potem nova v ShuntIntMax[0]
}
if (ShuntInt< ShuntIntMin[0]){ // preveri če je vrednost manjša od min
ShuntIntMin[1]=ShuntIntMin[0]; // ....in jo zapiši v ShuntIntMin[0]
ShuntIntMin[0]=ShuntInt; // ...itd
}
ShuntTotal=ShuntTotal + ShuntInt; // sešteva vrednosti
}
ShuntTotal=ShuntTotal - ShuntIntMax[0]; // odšetejem max in min vrednsoti...
ShuntTotal=ShuntTotal - ShuntIntMin[0];
ShuntTotal=ShuntTotal - ShuntIntMax[1];
ShuntTotal=ShuntTotal - ShuntIntMin[1];
Shunt= (ShuntTotal/16); // ostanek delim z 16
Shunt= float(Shunt)/100.; // da dobim nazaj float vrednsoti (decimalke)
//*********Konec meritev toka na shuntu in povprečenje...******************
|
_________________ Elektronika za hobi |
|
Nazaj na vrh |
|
|
lojzek Član
Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3356 Aktiv.: 16.96
|
Objavljeno: Ned Apr 09, 2023 1:19 pm Naslov sporočila: |
|
|
Če gre za relativno počasne spremembe meritev, narediš npr tri meritve eno za drugo in povprečiš.
Na koncu -lahko- preveriš, če to zares ne odstopa preveč od prejšnje (akceptirane) meritve. Če ne odstopa preveč, potem to novo izračunano vrednost uporabiš kot točno, drugače ignoriraš do naslednje meritve. |
|
Nazaj na vrh |
|
|
mosqito Član
Pridružen-a: Čet 07 Apr 2016 23:22 Prispevkov: 3246 Aktiv.: 33.10
|
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 78 dni
Powered by phpBB © 2001, 2005 phpBB Group
|