Klouzavý průměr rutiny pro 24 bit ADC

R

ravi_p

Guest
Ahoj

I práce na projektu, kde jsem se prolínal 24 bit ADC na AT89S52.Chci zavést klouzavý průměr window metodu pro lepší rozlišení.

Jakékoliv jeden může navrhnout mi, jak implementovat klouzavý průměr, nebo pokud někdo má rutinní můžete prosím podělte se o rutinní.

Díky
Ravi

 
Ahoj!
Myslím si, že můžete použít fomular:
X = (X1 X2 ... Xn) / n
X1, X2,... Xn je vzorek v jedné vteřiny!Ale myslím si, že musíte mít dobrý matematický.
Hodně štěstí na U!

 
Udržujte akumulátor pro přidané celkem.

Při nové hodnoty přijde, odečíst z nejstarších hodnotu.Pak se přidá na nejnovější hodnotu.

Váš akumulátor celkem / hloubka je vaše průměrná, pokud jste udržení posledních 16 hodnot, pak je to acc/16 atd..

Pokud používáte říct 16, stále máte zachovat všech 16 tak budete mít 16. nejstarší odečíst.Ale stačí do 1 a 1 odečíst přidat pro každý nový příchozí hodnoty, nemáte-li přidat všechny 16 pokaždé.Dalších 15 hodnoty v historii mají ještě celkem v akumulátoru, stačí odečíst z nejstarších a přidat na nejnovější, dalších 15 ještě jsou v akumulátoru.

To je důležité, aby se tímto způsobem, pokud budete mít jako hodnotu 256, to je hodně přidává pro každý nový hodnotu, pokud nechcete mít akumulátor s 255, které se nemění tentokrát již přidány.

Nezapomeňte si dát na své další vyšší byte do akumulátoru.32 kousků se bude držet až 256 z 24 bit přidaných hodnot atd..

Použijte index na vaše uložené hodnoty.Když dostanete novou hodnotu, odečíst z původní na index, přidejte do nového a dát to na index, pak se přesuňte index jednu.

ACC = ACC-(valueatindex)
ACC = ACC (newvalue)
newvalue se stěhoval do index umístění
index = index 1
klouzavý průměr = ACC / počet hodnot ve vyrovnávací paměti

A najetím index kolem v horní části bufferu ..Alan

 

Welcome to EDABoard.com

Sponsor

Back
Top