Fórum témák
» Több friss téma |
Hali,
A problémám a köveztkező. A mellékletben csatolt digitális accelero IC-vel kellene mérnem egy telót bekapcsolt vibrával. Konkréten nem találtam erre leírást se az adatlapokon sem az interneten. Nagyjából értem a működését, de teljesen nem vagyok tisztában mit is mérek ilyenkor (menete, mértékegység....). Valaki dolgozott már hasonló témán? A fő kérdés az lenne, hogy sokszor kapok 0 értéket mind a 3 tengelye normális ez? Nincs a mérésnek negatív tartománya? Azt tudom hogy az értéket 2-es komplemensben tároljuk, de nem vagyok tisztában pontosan a méréssel és lehet hogy ezért hiányolom a negatív értékeket . Az átlag tartományom 0-350-ig terjed. Ha valaki össze tudná foglalni a mérés elmélet az lenne az igazi Előre is köszi mindenkinek! Üdv kohlern
Szia! Mivel a mobiltelefonok "vibrátora" nem más mint egy DC motor tengelyére szerelt excenter, ezért az általa keltett rezgés közel harmonikus. Ha ismered a frekvenciáját, és amplitúdóját, valamint le tudod mérni a rezgő tömeget (magyarul, hogy hány gramm telefon), akkor mindent tudsz róla.
Hali,
Köszi a gyors választ. Szóval ha jól értem akkor a mérés eredménye nem mehet negatív tartományba? Arra esetleg tudnál tippet adni, hogy ha a vibra működik miért lehet az, hogy sok esetben 0 értéket ad mindhárom tengely?
Egy rezgőmozgás esetén a pozitív gyorsulás mellett mindig van negatív gyorsulás is. Ha nullát kapsz eredményül, akkor valami ezt kiintegrálja, vagy a szenzor túl lassú.
Talán épp az a "normális" működése - ez esetben. Ahogy a motor forog, az excentrikus tömeg - a szenzor szempontjából - ugyanannyit gyorsul, mint lassul.
A kapacitív érzékelés után integrátor van, ha a két érték egyenlő, akkor nullát ad. Épp csak beleolvastam, lehet, hogy mégsem ez a helyzet...
Nem mindegy milyen frekire állítod az adatsebességet. 400Hz fele 200Hz, az már le tudja követni a rezgés frekijét. A 100Hz-es beállítás esetén az alsó frekiküszöb 50Hz, ami már kevés lehet, eredmény összevissza értékek sokszor nulla.
Az érzékelés menete az lenne, hogy egy periódikus rezgést kell detektálnod adott időtartamig, kb 100Hz környékén, de ezt meg kell mérni(a motor által keltett rezgés frekijét).
Ezt megpróbálom kibogarászni. Sajna a mérés úgy néz ki hogy van egy adott dll fájlom aminek az egyik függvénye a három tengely kiovasása. TestStand-et használva bekapcsolom a vibrát, parányi várakozás majd meghívom ezt a függvényt és ő adja át a három tengely értékét. Nekem bőven elég lenne ha az egyik tengely nem lenne 0, de sokszor előfordul hogy mind a három az. Szóval a dll-ben kellene megnéznem a CTRL_REG1 DR bitje mire van állítva?
Sajnos nem tudom milyen dll-ről van szó.
Sajnos a dll fájl kommunikál az IC-vel a TestStand tőle kapja az adatokat. A dll-t készen kaptam és nem tudom mivel megnyitni . Közben feltettem a kérdést az ST-nek, mert ők gyártják IC-t, ha a válasz pozitív lesz megkérdezem a dll íróját. A megoldásért jár a pont, ha lesz időd esetleg ki tudnád pontosabban fejteni a mérést, mert sajna ezen a területen nem mozgok teljesen otthonosan.
Ketté kéne választani a dolgokat.
1. A rezgés detektálásának elve. 2. A gyorsulásmérővel való komunikáció, azaz hogyan és milyen adatok jutnak a PC-be. Az 1. pontot már kifejtettem. A gyorsulásmérőt olyan sebességre kell állítani, hogy a rezgést fel meg tudja mérni. Ha jól olvastam az adatlapban, akkor a 400Hz-es ODR esetén a System bandwidth 200Hz, ami már elég egy 100Hz körüli freki detektálására. Én úgy gondolom, hogy nem is kell 3 axis, de ha mind a 3-at méred, akkor is egyenként elég őket feldolgozni. Bármelyik detektálja a kérdéses frekit adott időtartamig(mert ugye ki kell szűrni, ha más forrásból származik rövid időre a rezgés, pl. leteszik a mobilt az asztalra. Vagy ez rögzített készülék lesz?) azt el lehet fogadni. 2. Az általad csatolt mindkét Gmérő SPI vagy I2C porton keresztül kommunikál. Gondolom már valahogy rákötötted egy adatfeldolgozóra, mivel 0..350-es értéket mérted. Ez az érték számomra fura, mert én az adatlapból azt vettem ki, hogy az Out x,y,z regiszterek csak 8 bitesek. Ezért csak 255 lehetne a legnagyobb érték. De hogy őszinte legyek az adatlapban nem találtam meg(eddig), hogy pontosan hány bites felbontású az A/D. Ha erről van infód írd meg! A 0 gyorsuláskor ha 8bites a felbontás 128 körüli értéket kéne kapjunk. Innen számolódik a + és - gyorsulás. A rezgés, amit a teló kelt, valószínű kiakasztja a csatornákat, de legalább egyet biztos, ezért a 0 és a 255 érték közötti periódikusan változó értéket kell kapj. Ehhez viszont az szükséges, hogy legalább 200Hz ütemben feldolgozd az adatokat! A változások ütemét feldolgozó program mérhet periódus időt, vagy adott idő alatti változás számát is. Ha jól gondolom néhány tized(pl. 0,3sec) másodperc alatt mindkét elven meg lehet mérni az esemény bekövetkeztét. Ami kicsit bekavarhat, az az, ha a teló mozog, vagy más és más helyzetbe kerül lerakásra. Mindenesetre ki kell próbálni, hogy milyen jelalakokat küld a Gmérő a rezgés közben. Ezt adatgyűjtéssel és grafikonba illesztéssel tudod megoldani. Az is jó kérdés, hogy a PC tud e ilyen sebességgel kommunikálni az eszközzel. Elvileg igen, de nem vennék mérget rá(nem számoltam utána, milyen SPI CLK freki kéne). Gondolom a printer porton keresztül kommunikálsz? (Jó lenne többet írnál le, ne nekem kelljen találgatni!)
A telefon mindig ugyanabban a helyzetben kerül mérésre és nincs mozgatva közben. A kommunikáció USB porton keresztül történik. A 0-350-ig pedig úgy jön ki hogy ugye az output regiszterek 8 bitesek, amelyből az MSB bit az előjel (2-es komplemens). Ha végigolvasod az adatlapot kiderül, hogy két mérési skálát tudunk használni +-2g vagy +-8g. Attól függően hogy az FS bit értéke 0 vagy 1, az outputregiszter értékét kell megszoroznunk 18 mg/digit-el ill 72 mg/digit-el. Vagy én olvastam félre valamit?
Idézet: „A 0-350-ig pedig úgy jön ki hogy ugye az output regiszterek 8 bitesek,” 8biten csak 0-255-ig lehet számokat megjeleníteni. Nem értem, hogy jön ez ki neked? Természetesen van egy szorzószám, ami megadja a mért G értéket, de ezt könnyen lehet a föld 9,8G-jével kalibrálni, ellenőrizni(nézz utána, hogy a lakhelyeden mekkora a valós G!). Idézet: „A kommunikáció USB porton keresztül történik.” Akkor biztosan van valami mikrokontroller, ami feldolgozza a jeleket? (Nem akarod elmondani hogy épül fel az egész? Így nem tudok segíteni hatékonyan.) Most egy hétig nem biztos hogy net közelbe leszek, ha nem válaszolnék, akkor ezért van.
Lehet hogy most nagy hülyeséget fogok írni , de elmondom én hogy gondoltam idáig a mérést:
A vibráció hatására a teló valamerre el kell hogy mozduljon, ennek a pici elmozdulásnak a következtében ugye valamekkora erő kell hogy hasson. Függően attól hogy a tengelyek mentén merre hat az erő (merre mozdul el a teló), így kapunk egy pozitív vagy egy negatív számot (-128-tól +127-ig), amit kettes komplemensben tárolunk az output regiszterekben. Ha ezt a számot felszorozzuk az FS bit értékétől függően 18mg/digit ill 72mg/digit-el úgy kapjuk meg a mért értéket mg-ben. Én így gondoltam el a működést, de kérlek javíts ki ha tévedek, mert ebben a témában tényleg nem vagyok jártas. Ezért is hiányolom a negatív számokat és gondolok esetleg arra, hogy mikor negatív számot kapnék az 0-ként tér vissza, mert valami el van írva a progiban (nem tudja kezelni a negatív tartományt) ami kommunikál az IC-vel (?). Nem én írtam a programot, nekem "csak" a hiba okára kellene rájönnöm ezért nem is vagyok teljesen tisztában a működési elvvel, ezért még egyszer bocsi, ha nagy butaságot írtam. Mi a véleményed?
Nos, szerintem jól gondolkodsz. Egy a baj, hogy még mindig nem tudom milyen programról beszélsz. A PC programjáról, vagy ha van, a mikrokontroller programjáról?
De végül is mindegy, mert az általad említett előjelbit, csak értelmezés kérdése, hogy előjel-e. Ha C-ben gondolkodunk, akkor úgy lesz ebből negatív szám, ha signed változót deklarálsz. Ha unsigned-et, akkor 0-255-ig értéket fogsz kapni.
Szóval mint már leírtam, van egy szekvencia teststandban írva. E indítja be a vibrát it vannak megírva maguk a tesztlépések. Ez a szekvencia meghív egy dll fájlt mármint neki egy függvényét ami ugye kommunikál az accelero IC-vel, ő olvassa ki az output regisztereket. Magának a dll-nek sajnos nincs meg a forráskódja . Valószínűleg C/C+-ban van írva csak nem tudok olyan progit amivel vissza lehetne konvertálni. Meg kell keresne a dll íróját, de butasággal nem akarok eléállni, ezért szeretném pontosan kivesézni a mérés elvét. Most hogy írtad tényleg nem lehet gond az előjel kérdése, mert akkor legfeljebb "elcsalom" magát az értéket (ugye kettes komplemesben a negatív szám nem egyenlő az abszolút értékével ).
Még egy kérdésem lenne. Magánál a vibránál két paraméter adható meg a rezgési idő és az ún duty_cycle. Az utóbbi a fordulatszám akarna lenni %-os értékben? Olvastam a duty_cycle kifejezést acceleroval kapcsolatban is (egy labormérés leírása), de pontosan nem tudtam kivenni a lényeget. Szóval az előjel hiánya nem okozhatja a 0 méréseket . Az adatsebességen kívül tudsz még esetleg másra gondolni? Köszi az eddigi segítséget! Idézet: „teststandban” Bevallom,fogalmam sincs mi ez. Idézet: „E indítja be a vibrát” Azt írtad, USB-n keresztül kommunikálsz a PC-vel. A Gmérő pedig SPI-s, vagy I2C-s. Áruld már el, milyen eszközzel alakul át USB-re az említett két kommunikációs protokoll egyike? Olyan sok az ismeretlen, hogy én már nem értek semmit! Egyet tudok, hogy én minden gond nélkül oszcillogrammot rajzoltam a Gmérő jelével, ahogy a mélyhangszóró rezgette az asztalom lapját. Ehhez megfelelő hardver kell. Nem tudom, hogy neked ez hogy van megoldva, mivel nem írod le. (ha ez a testand a hardver, akkor azt meg nem ismerem, illetve nem érthetőek az erre való eddigi utalásaid.)
- Interaktív fejlesztői környezet teszt-szekvenciák
készítésére és futtatására - Különböző nyelvekben és formátumokban készült tesztmodulokat hajt végre - Párhuzamos végrehajtás - Automatikus riportgenerálás adatbázis, XML és HTML kimenettel - Felhasználói jogosultságok kezelése A National Instruments TestStand szoftvere tesztszekvencia szerkesztő és tesztfuttató (test executive) környezet, amely alkalmas a gyártás során elvégzendő teszteknek elemi teszt-rutinokból történő összeállítására, végrehajtására és riportok előállítására. A TestStand moduláris és konfigurálható rendszer, amely lehetőséget ad egyedi igények kielégítésére, beleértve az operátori interfész kialakítását, a teszt-szekvenciák végrehajtását és az előállított riportok felületének szerkesztését. A TestStand használatával a felhasználó a fontos, megoldandó mérnöki problémákra koncentrálhat, mint a tesztstratégia és az egyes teszteljárások, miközben a szekvenciákat, a modulok végrehajtását és a riportok előállítását a TestStand automatikusan kezeli. A rendszer magja a több szálon futó "executive engine", amely az erőforrások optimális felhasználásával gyors átfutási időket tesz lehetővé. Az executive engine kompatibilis az összes korszerű, tesztprogram-fejlesztő környezettel, mint például a LabVIEW, a LabWindows/CVI, a Visual Basic, vagy a Visual C++. Ugyanakkor együttműködik régebbi szoftverekkel is (HT Basic). Nemcsak végrehajtható (exe) modulokat kezel, de DLL-eket és ActiveX szervereket is. A széleskörű kompatibilitás lehetőséget nyújt meglévő és új tesztprogramok összeépítésére egyetlen teszt-szekvenciába.
Találtam az IC adatlapján egy részt ami az adatvesztéssel foglalkozik. Ennek csak holnap állok majd neki mert ehez szótár kell nekem és át is kell gondolni.
A táblázatban T0min=2.5ms és T0max=10ms ez 100Hz-re és a 400Hz-re is vonatkozik vagy nem véletlen a 4X-es érték és egyik az egyikre másik a másikra? Egyik hozzászólásodban írtad hogy a 100Hz fele az 50Hz ami kevés lehet ez a fele pontosan hogy is jön ki? Bocsi, de ez tényleg nem az erősségem, de itt az ideje megtanulni .
Tehát, ha jól értem ez egy gyári áramköri modul, ami USB-vel kommunikál a PC-vel és van I2C portja, amire a Gmérőt kötötted.
Meg kell tudd, hogy ez milyen sebességgel tud kommunikálni, azaz képes e 400 adatot kiolvasni másodpercenként, és ezt képes-e átküldeni a PC-nek feldolgozásra. Nekem egyébként az a tapasztalatom az ilyen gyári modulokkal(mi OPTO-kat használunk), hogy nem a mintavételi sebességükről híresek. De ezt meg kell nézni, mielőtt temetnénk a dolgot. Az 50Hz úgy jött ki, hogy az adatlap szerint ha a beállított ODR 100 Hz, akkor a System bandwidth annak a fele. De erről műr részletesen írtam.
Szerintem jól elbeszélünk egymás mellett . Ez egy olyan teló ami gyárilag tartalmazza az accelerometer-t. Ugye a telóm USB-n kommunikál a PC-vel. Rezgetem a vibrát folyamatosan adott ideig és a rezgés közben akarom kiolvasni a három tengely értékét, semmi plusz hardver elem.
És ezt szerinted honnan a frászból találtam volna ki az eddigi irományaidból?
Most, hogy ezt tudom, azt kell mondjam, hogy ez nem fog menni. A teló tuti nem ad 200/sec jelet neked, hanem időbként egyet egyet, az adott pillanathoz tartozó értékkel. Csak azt tudnám, minek csatoltál adatlapokat? Hogy kapcsolódik ez a telóhoz? Itt már nem a Gmérő határozza meg a végeredményt, hanem a teló áramkörei. Kicsit hiábavalónak érzem az eddigi eszmecserét. Legközelebb tisztán vázold a problémát, ne csak azt, amit te kihámozol belőle...
Azt hittem ez az első kérédsemből adódik, de ha nem sorry . Lenne még egy kérdésem folytatva a témát. Van ugye az overrun bit, ami ugye akkor vált egyre ha az olvasás lassú, még jutunk el az adat olvasásáig (túl hosszúra sikeredik), de már az új érték elérhető, erre írja is, hogy adatvesztéssel járhat. Nem lehet esetleg a problémám az hogy egyes ilyen adatvesztések 0 értéket produkálnak vagy ez nem kavarhat be?
|
Bejelentkezés
Hirdetés |