Ahoj, stavím osciloskop a potřebuji určit jaký druh signálu mi přečetl ADC kvůli zjištění způsobu triggerování a vykreslování na 128x64 LCD.
Mám 1024 naměřených 8 bit hodnot v poli odpovídající tvaru signálu. Občas je celá perioda na 40 hodnotách, občas na 400, 500, 600... Perioda nezačíná na nultém prvku pole ale neznámo kde. Šum + chyba převodníku je na rozlišení 256 hodnot max +-4.
Měl jsem pár nápadů ale většinou skončili neúspěšně. Resp. fungovali tak napůl, sinus s periodou menší jak asi 40 hodnot to poznalo jako obdélník.
Co předem s jistotou z naměřených hodnot znám je minimální hodnota (včetně šumu ->až hodnota -4), maximální hodnota(včetně šumu ->až hodnota+4).
Potřebuji tedy určit, jestli hodnoty v poli jsou obdélníkového průběhu -> triggerování od spodku + dokreslení čáry mezi přechodem, sinus/pila/trojúhelník -> triggerování od středu, nebo DC -> triggerování v první nalezené hodnotě.
Nezajímá mě ani tak kus kódu ale spíš vaše nápady jak tohle vyřešit, děkují za váš čas popř. i pomoc.
Valky.
Fórum › C / C++
Rozpoznání signálu: sinus/pila/trojúhelník nebo obdélník nebo DC.
To valky : Hoj, nevím co jsi už zkoušel, ale je to tu trochu osiřelé, takže zkusím ...
K rozpoznání typu signálu bych vyzkoušel asi spočítat derivaci toho signálu a od toho se někam posunout, třeba by to mohlo +/- fungovat, když se to nějak rozumě zprůměruje. Obdélník bude mít +/- 0 až na hrany, kde bude velká změna, trojúhelník bude mít konstantní a ve vrcholech změnu znaménka a sinus bude mít holt zase sinus (posunutý), takže to bude plavat sem a tam. Ale úspěch bude vždycky +/- autobus.
Pokud bys chtěl neprůstřelné řešení, vyprdnul bych se na zjišťování co to je zač, dá se říct, že tě to vlastně ani moc nezajímá a poštval bych na to fourierku, ze která by, bez ohledu na šum, vypadlo k čemu se dá triggerovat (1. harmonická).
Edit: Tak jsem si ještě jednou a pozorně přečetl zadání :) S tou fourierkou to samozřejmě stále platí a pokud bys chtěl triggerovat vždy od jiného bodu, tak obdélník by měl snad jít od zbytku poznat podle vyšších harmonických, které bude mít každý signál dost jiné.
To voty : Ahoj, něco na způsob derivace jsem zkoušel, sinus/od obdélníku to v určitým rozsahu periody na dílek pozná, horší je to s DC/pomalými změnami.
Fourierovku tam mám taky, jen to při 512N aktualizuje cca po 1 sec. Takže triggerování podle harmonických není pro zobrazení průběhu zrovna ideální.
Problém jsem ale vyřešil jinak. MCU, které používám má analogové komparátory, takže přes PWM + RC člen nastavím referenční napětí a při přechodu signálu nad/pod něj se spustí čtení hodnot. Funguje to o moc lépe než triggerování podle naměřených hodnot. Tady mě pak ani nezajímá jaký druh signálu mám na vstupu.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Software developer C++ nebo C# nebo Java (Android) se znalostí AJ — založil Kateřina Mrkáčková
POROVNÁNÍ POLE NEBO POLOHY, nebo jinak — založil ASTONEK
Vytvoření záznamu (array nebo hash nebo?) — založil VencaT
C++ nebo C#? — založil Johnny
.com nebo .cz? — založil Garret Raziel
Moderátoři diskuze