» »

Pic mikrokontrolerji in računanje povprečja za vrednosti s senzorjev

Pic mikrokontrolerji in računanje povprečja za vrednosti s senzorjev

neoto ::

Zanima me (za tiste, ki se s tem ukvarjajo), na kakšen način računate povprečje podatkov prebranih iz senzorjev. Npr. imamo senzor za razdaljo, pri branju katerega se pojavljajo napake oz. odstopanja. Za uporabo teh vrednosti moram izračunat povprečje in me zdaj zanima, po kateri metodi to počnete vi:
1) povprečje zadnjih n-tih meritev
2) po formuli povprecje=(povprecje*n+nova_vrednost)/(n+1), pri kateri n določa "gladkost" krivulje

Men je veliko bolj zanimiva druga metoda, moti me edino to, da je nihče ne uporablja. Je neprimerna za uporabo, al kaj :\ ?

Brane2 ::

Mogoče pa zato, ker je bolj računsko intenzivna, folku se pa ne da zaj* z množenjem in deljenjem na ubogem PICu ? :\

Sicer to ni nič takega, par ukazov in mikrosekund gor ali dol, če si jih lahko privoščiš in če se ti da pisat subrutine...
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

neoto ::

Katera je računsko bolj zahtevna?? Če računaš povprečje 100-tih meritev, jih moraš najprej vse imet shranjene v ramu, pol jih moraš vse skup seštet in delit s 100. Ni to več računanja??

Brane2 ::

Že, amapk zato pa ne računaš povprečja 100tih ampak denimo 128tih meritev in namesto deljenja samo rezultat zašiftaš 7 bitov v desno...
On the journey of life, I chose the psycho path.

neoto ::

:)) Nisem niti pomislil... Dobra fora
Ker drugače uporabljam c compiler za pic-e, se niti ne vbadam s tem, kako v assemblerju množit ali delit :D...
Drugače pa še vedno menim, da več proc. časa traja da 128 številk sešteješ kot pa da opraviš operaciji množenja in deljenja... Ali se motim?

Brane2 ::

Ne motiš se. VEndar je podatke traba sešteti tako in tako, tu pa prišparaš lahko množenje.

Poleg tega seštevanje te ne boli nujno, tako kot množenje. Če moraš na podatke čakati, da denimo priklapljajo po serijskem linku, potem pred nadaljnjo obdelavo pač rutinsko opraviš še tistih nekaj ukazov, torej ti zanj ni treba izgublati časa s seštevanjem vseh zajetih podatkov naenkrat.

Pri množenju pa izgubiš lahko brdo ciklov naenkrat- sploh če nimaš hardverskega množilnika in če množiš malce daljše cire- recimo 32 bitne...
On the journey of life, I chose the psycho path.

neoto ::

Potem pa je že problem z RAM-om. 32 bit * 128 bytov ... >:D
Ali je kakšna druga metoda, pri kateri ni treba shranjevati prejšnje podatke v RAM-u?

int47 ::

Lahko jih sproti seštevaš. Na ta način imaš novo povprečja na vsakih n rezultatov.
Če hraniš rezultate v RAM-u lahko izračunaš novo povprečje za vsak rezultat .

slawc ::

ja, nekaj takega je moving average

Link
LP, Slawc


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Deljenje in množenje

Oddelek: Šola
263536 (2388) DeeJay
»

Ideje kako racunati z vec decimalkami kot omogoca naprava

Oddelek: Programiranje
192869 (2037) blay44
»

Zna kdo razložiti kazalčne diagrame?

Oddelek: Elektrotehnika in elektronika
227052 (5313) CaqKa
»

Rusko množenje (strani: 1 2 )

Oddelek: Znanost in tehnologija
8910570 (7694) fireice
»

64 bitni procesor?

Oddelek: Kaj kupiti
212223 (1781) Brane2

Več podobnih tem