Greg sez:
van egy periodikus jelem amit folyamatosan mintavételezek. ebben kellene megnéznem mi a jel frekvenciája. erre kellene egy egyszerű algoritmus, hogy megtaláljam a maximumokat, aztán a két csúcs közötti idő alapján már ugye megvan a frekcencia… mezei treshold-ot nem akarok használni, mert különböző amplitúdójú jelek frekvenciáját is meg kell tudni mondani.
és persze legyen egyszerű, mert egyrészt fel kell fognom
másrészt mikrokontrollerben kell megoldani a feladatot wiring nyelven.
![]()
Értem a problémát! Emberek! Tanuljunk! Hogy kell megoldani ezt?
Annyit már gyorsan kiwikiztem, hogy a mikrokontroller egy baromi egyszerű és olcsó integrált CPU, vagyis nem csak a processzor, hanem némi memória (RAM, ROM, Flash) és input/output interfészek is van benne, ami mindenféle egyszerű felhasználásra alkalmazható. Keveset fogyaszt, olcsó, legtöbb alkalmazáshoz remek. Példák: távirányítók, motor vezérlő rendszerek, irodai eszközök, játékok. Érdekes adat:
About 55% of all CPUs sold in the world are 8-bit microcontrollers. According to Semico, Over 4 billion 8-bit microcontrollers were sold in 2006.
Az most nem érdekes, hogy Greg mire akarja használni a projektet, nyilvánvalóan egy csapásszámlálót akar építeni, illetve egyszerűbben mondva, faszkorbácsot.
Namasté.
update: Greg adott egy grafikont is, illetve néhány további komment előjön a hozzászólás folyamban.

az ekg nagyon jó hasonlat, ezért mezei szélsőérték vizsgálat nem elegendő. csináltam egy mintát, a wiimote -ot végigtologatva a nappali padlóján, kicsit gyorsítva menet közben. ebben kellene a 6 csúcsot megtalálni algoritmikusan, illetve mindig csak az utolsó kettő az érdekes.
(…)
kérdeztétek a platformot: Arduino, open source embedded hardware. Én a kisebb fogyasztású, méretű változatot tervezem használni, ami 8MHz -en ketyeg. 14 általános, digitális I/O láb, 6 analóg bemenet amik közül tetszőleges számú digitális kimenetként is üzemelhet. 1KB RAM, 512byte eeprom… 40mA áramfelvétel.





Periodikus jelnél (frekvencia, ugye) a küszöb is működik akármilyen amplitúdó mellett…
Kevés az infó. Mérési tartomány, mérendő jelalak, stb.
“Amit nem lehet megírni assemblyben, azt nem lehet megírni!”
Amúgy nem csúcsokat keresnék (érdekel a MÉRETE..?), hanem megfelelő analóg jelformálás után az AD folyam előjelváltásait… Stb.
oszcilloszkóp + subler + papír, ceruza
elolvasod rajta a számot, aztán kinézed katalógusból.
Eloszor is meg kell hatarozni a legnagyobb merendo frekvenciat (megbecsulni, hogy kb mennyi lesz), a mintavetelezes frekvenciajat ennek megfeleloen kell mevalasztani (van vmi keplet amire nem emlekszem mar
Pontos freki meghatarozashoz egy furier analizis kell, google az algoritmusra. Nem lesz egyszeru… Viszont ha valamilyen ismert kontrollerrel dolgozik Greg akkor tobb mint valoszinu hogy fog kesz kodot talalni a problemara, amit csak kicsit hekkelni kell. (nepszeruenk pl. a PIC, Atmel etc.)
Mikrokontroller: annyiban kulonbozik egy CPU-tol, hogy memoria (data+code) illetve portok vannak egybetokozva a CPU-val. A “baromi egyszeru CPU” nem igazan fedi a valosagot
Az ar meg relativ, vannak baromi draga kontrollerek is.
PS: legegyszerubb keresni egy villanymernokot, aki Háréből/Jelekből penge volt az egyetemen, es tud segiteni neked. Nem rocket science, de azert nem is egy HelloWorld!
PS2: Egy DSP-vel (Digital Signal Processor) lehet hogy egyszerubb lenne megoldani a feladatot, azokat erre talaltak ki.
Van egy ismerosom aki uzemeltet egy (magyar) levlistat a temaban (mindenfele mikrokontroller programozas es egyeb elektronika) Ott biztosan lesz valaki aki tud segiteni. Ha erdekel dobj egy mailt, utananezek hogy lehet feliratkozni.
http://www.hobbielektronika.hu/cikkek/fourier_transzformacio.html
DFT? DSP? Mit vízionáltok Ti itt épp..? Ez már pont “rocket science”…
Az infó továbbra is kevés.
Lehet valóban azt is csinálni, hogy a maximumokat számolod, de az csak impulzus-jellegű jelalaknál jó, amúgy félrevezető lehet.
A politikailag korrekt megoldás az FFT, azaz gyors Fourier transzformáció. Ehhez persze megfelelően kell mintavételezni. Ha jól emlékszem az aliasingot úgy lehet elkerülni (ami egy evil thing lenne), hogy ha mondjuk 0 és 10 Hz között akarod az FFT-t, akkor minimum 20Hz -el mintavételezel.
Egyedül a faszkorbácsot értettem.
szerintem elso korben nyugodtan hasznalj egyszeru threshold-ot:
- ha a jeled bipolaris, akkor a kuszobszint lehet 0
- ha nem az, de az alapvonal stabil, akkor a kuszobszintet tedd picit a fele
- ha ez sem igaz, de az alapvonal csak lassan maszik, akkor a kuszobot allitsd a jel atlagertekere (mondjuk nehany [tiz] periodusidore szamolva)
- ha meg ez sem igaz, akkor lehet, hogy egy microcontroller nem eleg
ha zajos a jel, akkor esetleg erdemes egy moving average-et tenni ra (par mintat hasznalva).
Zsoltnal mintavetelezes otos, najkviszt tétel.
Szerintem Nyquist-Shannon
, mert a “sima” Nyquist-tétel csak a PI/periódusidőre mondja ki a mintavételi frekvencia minimumát.
Küldtem Józsinak linket a táblázatokhoz, illetve a grafikonhoz amin látszik kb milyen a jel. Annyit kell tudni, hogy egy olimpikon kajakos sprintben 100-130 csapást produkál percenként. Ez a alapján a mintavételi frekvencia 100-120Hz körül lesz.
Mint az a grafikonon is látszik, az eredeti jel elég zajos, ezért csináltam két szűrőt (mozgóátlag, IIR szűrő) és az látszik, nagyon hasonló az eredő jel hasznossága, ezért maradok a mozgóáltagnál, mert azt kevesebb clock-ból, processzor műveletből meg lehet oldani.
Ja és kérdeztétek a platformot: Arduino, open source embedded hardware. Én a kisebb fogyasztású, méretű változatot tervezem használni, ami 8MHz -en ketyeg. 14 általános, digitális I/O láb, 6 analóg bemenet amik közül tetszőleges számú digitális kimenetként is üzemelhet. 1KB RAM, 512byte eeprom… 40mA áramfelvétel.
Ez egy Atmel kontrolleres struktúra (egy kis környezet, mint a basic-stamp), ráadásul nem is egyszerű mikrokontrollerekkel. Lehet, hogy jobban jársz, ha valami célhardvert illesztesz ehhez (DSP vagy FFT).
)
Esetleg csinálsz egy célharvert (trigger, számláló, komparátor, soksikert
Ha még nem kötelezted el magad, akkor nézzél egyszerűbb dolgot. Nekem az INTEL kontroller már bonyolult volt (túl sok címzés, túl sok regiszter), szerény Assembly ismereteimhez.
A PIC ilyen szempontból szimpatikusabb. C-ben és Assemblyben is könnyű programozni, nagyon széles a hardver-kínálat. Most már van soros programozás is, ami miatt az illesztös könnyű. Nagyon sok cuccot le lehet szedni internetről.
ez kizárt dolog mer nemtudom
szerintem a legegyszerűbb papírt, ceruzát használni.
Greg, csak nem egy Szub-Éta Deket-O-Métert akaesz építeni?
Deket=Detekt ofkorsz…
Szenyo: a papírral az a baj, hogy a kajakban elázik miközben lapátolsz, a ceruzát meg nehéz megfogni a lapát mellé
azért arduino, mert könnyen programozható. aki látott már C-t, azt 5 perc alatt otthon érzi magát. az open source jelleg miatt rengeteg tudás van már amit nem kell nekem végigszopni és sok extra kütyü kapható hozzá. illetve olyan kompatibilis hw alternatívát választok ami az én célomra a legjobb, hiszen maga a hw is “open source” bárki gyárthat saját, okosított verziókat.
ráadásul olcsó technika, 3500 ft körül megvan az agy, ami már ciripel, villog. ehhez képest a dsp -s megoldás kb egy nagyságrenddel drágább. nagyobb, többet is fogyaszt. overkill. bőven elég ide egy mikrokontroller.
Volna 1 kérdésem. Melyik összetevő frekvenciájára vagy kíváncsi..? Ez eléggé DFT/FFT-ért kiáltó jelecske, abból meg válogathatod a mérőablak domináns frekijét egyszerű sorttal.
Mondjuk egy kondis csatolással az AD előtt eltüntetheted a “mozgóátlagot”, bár azt sejtem, hogy nem te digizel. Ha nem te digizel, akkor biza a szoftveres erőforrásigény lesz nagy.
Ha pontatlan és “olcsó” megoldás kellene nekem, akkor nézném az előjelváltásokat a mozgóátlaghoz viszonyítva, stb…
(Egy pici PIC 2 pillanat alatt FFT-zik neked izzadás nélkül évekig egy 4.5V-os zsebtelepről.
)
Le tudnam valahonnan tolteni a pelda adatsort valami tablazatos formaban? Nem akarok hulyesegeket mondani, de lenne par konkret otletem csak elobb kiprobalnam oket.
pozsy,
greg írja:
“itt van két minta amit most használok én is. kb az első felénél van az értelmes jel, utána meg csak alapzaj/alap állapot ahogy a padlón fekszik az eszköz. (wiimote távirányítóval meg a prototipizálás)”
http://plastik.hu/media/kajaktest2.csv
http://plastik.hu/media/kajaktest4.csv
a faszkorbacs nekem nem volt meg benne a szotaramban, de felutottem az internetz-et az ‘f’ betunel, s megleltem bizonyos nyelvesz jozsef definiciojat:
http://szleng.blog.hu/2008/10/04/faszkorbacs_1
huzos.
greg:
Ha jol ertem a kihivast a DFT/FFT implementacio adja, erre valoban jobb egy DSP (PIC). Azok olcsok, valoszinuleg talalhato ahhoz is hasonlo osszeszerelt panel es nem kell implementalni az algoritmust, mert adott hardverben. Gondolom atmel is gyart olcso DSP/uC-t, ott pedig ugyanazt a C-t hasznalhatod mint ennel a panelnel.
Greg, hagyd a picsába a matematikát! Vond ki a szomszédos értékeket, és ezt a delta számsort nézd meg a szemeddel, rá fogsz jönni a megoldásra.