Efektivní (střední) hodnota ze signálu o neznámé frekvenci

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

Efektivní (střední) hodnota ze signálu o neznámé frekvenci

#1 Příspěvek od Wolfik »

Tohle bude asi trapný dotaz narážející na krátery ve znalostech ohledně zpracování signálu, ale rád bych si v tom udělal jasno :oops:

Mám několik zdrojů signálu, které mají stejnou frekvencí (přesněji jde o napětí získáné ze senzorů, snímacích rezistorů, převodů z transformátoru apod měřící proud v jedné smyčce). Jenomže tu frekvenci neznám, ale vím, že signál může být i stejnosměrný nebo dosahovat maximální hodnoty frekvence - řekněme konkrétně 100kHz. Další zjednodušení předpokládá, že se perioda v delším čase (jednotky sekund) nemění. Signál může být libovolně komplexní (obdelník, harmonický...).

Otázka zní jak přes MCUčko, které nějak získá vzorky (z interního nebo externího AD) vypočítat efektivní hodnotu. Je vztah RMS = √(∑ (V1^2 + ... + Vn^2) / n), kde Vx jsou jednotlivé vzorky a n je jejich celkový počet.
Jak určit počet vzorků a jakou frekvencí by měli být vzorky vzorkovány, aby pro signál nabývající frekvence od 0 do max. frekvence dal algoritmus rozumné přesné hodnoty rms? Existuje jiná cesta?
Příklad: ARM mcu, co má 12bitový převodník a umí vzorkovat 1Mhz(T=1us). Vzorkuju celou jednu vteřinu, abych pokryl výpočet rms ze signálu o frekvenci 0 až 100kHz, takže pro maximum 100kHz (T=10us) bych měl mít 10 vzorků. Budu mít v každém případě po vteřině vzorkování 1 000 000 vzorků o 16bitech (12 bitů převedu do 16bitové integeru). Když zanedbám nějaké zarovnání v datové paměti, tak zaberu 16 * 1 000 000 = 2 kB paměti. Krapec overkill ne? Je nějaký trik, jak to zjednodušit (průměrování, plovoucí okno). Bude nutné získat pro mcu informaci o frekvenci signálu, aby stanovil kolik period změří?

Určitě je řešení v použití specialních integrovaných obvodů, co na svém výstupu (analogově nebo digitálně) dávají RMS se slušnou přesností, ale jsou pěkně drahé (800kHz za 1000Kč), ale ušetřily by mi spoustu starostí :roll:

EDIT: Viz dále. Z původního zadání počítající s vypisováním efektivní hodnoty se vyklubala střední hodnota
Naposledy upravil(a) Wolfik dne 06 říj 2015, 18:24, celkem upraveno 2 x.

Uživatelský avatar
kony2807
Příspěvky: 305
Registrován: 29 črc 2007, 02:00
Bydliště: Ostrava

#2 Příspěvek od kony2807 »

Jaký je požadovaný dynamický rozsah?

EDIT:
Co tohle? http://www.analog.com/en/products/linea ... d8436.html. Do 300Kč/ks v kusových množstvích.
Naposledy upravil(a) kony2807 dne 01 říj 2015, 21:08, celkem upraveno 1 x.
________________________________
"Představte si to ticho, kdyby lidé říkali jen to, co vědí." K.Čapek

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#3 Příspěvek od ZdenekHQ »

Já bych to s tou cenou převodníků TRUE_RMS -> DC zas tak nepřeháněl.

Třeba LTC1966 - www.linear.com/docs/3396

se dá sehnat už od 300Kč. To je cena jedné hodiny práce návrháře.

http://www.ebay.com/itm/LTC1966CMS8-LTC ... 0596201245

Pak si to musíš spočítat, jestli strávit desítky hodin laděním softu (vyplatí se pro velký série) nebo koupil speciální IO (pro kusovku).
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
Bernard
Příspěvky: 3614
Registrován: 27 kvě 2005, 02:00

#4 Příspěvek od Bernard »

On ten soft nemusí být nějaká hrůza:
* umocňovat vzorky
* vypočítat střední hodnotu N-vzorek (inspirace)
* vypočítat odmocninu, třeba tabulkou a lineární interpolací

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#5 Příspěvek od ZdenekHQ »

Nedávno jsme tady vedli debatu o memristoru - tohle je podle mě krásnej příklad kontrastu analogová/digitální technika a příklad jeho aplikace, kde by se dal krásně použít.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#6 Příspěvek od mtajovsky »

Longin píše:... že signál může být i stejnosměrný nebo dosahovat maximální hodnoty frekvence - řekněme konkrétně 100kHz...Vzorkuju celou jednu vteřinu, abych pokryl výpočet rms ze signálu o frekvenci 0 až 100kHz, takže pro maximum 100kHz (T=10us) bych měl mít 10 vzorků. Budu mít v každém případě po vteřině vzorkování 1 000 000 vzorků o 16bitech (12 bitů převedu do 16bitové integeru). Když zanedbám nějaké zarovnání v datové paměti, tak zaberu 16 * 1 000 000 = 2 kB paměti.
1) Potřebná paměť by byla 2MB (ne kB), pokud předpokládám, že MCU nestíhá mezi vzorky počítat druhou mocninu a sčítat.

2) Je třeba stanovit dolní frekvenci, něco - 100 kHz ne 0 - 100 kHz. To určí dobu vzorkování. Čistě ss složka na to nemá vliv. Takže doba vzorkování 1s by odpovídala dolní hranici 1, Hz abychom zachytili celou periodu.

3) Teď nevím jak to dokázat, ale intuitivně si myslím, že pokud bychom vzorkovali náhodně, tak můžeme vzorkovat i s nižší frekvencí než je 1 MHz. Statisticky by to mělo dát efektivní hodnotu. Když uděláme 100 tis. vzorků náhodně rozložených v čase 1 s, troufám si říct, že i tu sinusovku na 100 kHz celkem přesně navzorkujeme. Nejde o to zrekonstruovat ze vzorků původní průběh, ale trefit se do co největšího počtu různých fází signálu. Pokud se použije MCU s 32 bitovou floating point ALU, tak by se mělo stihnout za 10 µs udělat druhou mocninu a součet; dokonce možná i bez té ALU.

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#7 Příspěvek od ZdenekHQ »

Myslím, že ta Tvoje myšlenka v bodu 3 - t.j. metoda Monte Carlo - ten původní plán úplně pohřbí, to je skoro téma na diplomovou práci... :)
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

#8 Příspěvek od Wolfik »

Problém se týkal univerzálního měřáku pro několik senzorů proudu s hall-effectem (galvanicky oddělené), který měřily stejný zdroj. Šlo ověřování přesnosti při různých teplotách (do 125 °C), čiže tu bylo určité omezení v součástkové základně (průmyslovejch 85°C versus 120°C a trošku výš).
Vedlo to na rozdělení problému, kdy modul se senzorama se bude strkat do teplotní komory a z něho povedou dráty k modulu s mcučkem, který bude na displej zobrazovat měřené hodnoty se senzorů resp. posílat do počítače a další zpracování.
Narážel jsem na senzory, co měli analogový výstup (většinou napětový výstup typicky 0-Vcc senzoru), protože u digitálního výstupu (typicky I2C, SPI, UART) jsou ty senzory většinou jenom pro DC.
V zadání stálo, že budeme měřit efektivní hodnoty. Jak poznamenal ZdenekHQ, jedná se o kusovku pro jednu firmu, takže ideální by bylo použtí rms-to-dc integráčů, protože jsou dělané do 125°C a SW pro mcu by byl čistě o automatizaci a nemusel bych se babrat se zpracováním signálu, integritou signálu a dat mezi drahými převodníky (nároky na rozlišení a teploty) a mcučkem, který není pár cenťáků vedle od výstupu senzoru.
Jenomže před chvílí jsem se dozvěděl, že primární cíl je stejnosměrná oblast a v případě střídavého signálu (ss + st složka) nás zajímá střední hodnota, i když původní rozkaz byla efektivní hodnota . Tedy to, co by naměřil multimetr na stejnosměrným rozsahu. (dělat diplomku pro firmu je občas jako kecat s holkou, co neví, co chce :D )
Takže původní problém se krapec mění. Teď zkoumám řešení v průměrování vzorků nebo použití integračních převodníků nebo jiný způsob...

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“