Fórum témák
» Több friss téma |
Sziasztok!
Segítségeteket szeretném kérni a következő feladat megoldásában: Adott egy PIC 16F887-es és van hozzá egy analóg kimenetű gyorsulásmérő kötve. A mikroprocihoz 8db ledet is csatlakoztatok kimenetnek. Ahogy mozgatom a készüléket (jobbra-balra húzogatom), 'virtuális mátrixot' képez a 8db led és szöveg kiírásra szeretném használni. Amit mérni tudok, az a gyorsulás. Minden gyorsuláshoz más kiírási sebesség és idő tartozik (v=a*t)...ebből adódik, hogy egy elég összetett feladatról van szó. Csak egy irányban akarok kiírni, pont azért, hogy legalább a kiírandó szöveget ne kelljen kétféleképpen (oda-vissza) is megvalósítani, így már a fele ki van szűrve az adatoknak. Hogyan lehetne kiszámolni a gyorsulásokhoz tartozó időt és sebességet, van valakinek ötlete? Ti hogyan állnátok neki? Kevésbé lényeges kérdés, hogy komparálással vagy AD átalakítással lenne célszerűbb? Válaszaitokat előre is köszönöm!
Peldaul jo lenne tudni valamit a gyorsulasmerorol. Gondolom jobb lenne AD-vel feldolgozni a jelet, mert a komparator csak egy feszultseg osszehasonlitas IGEN-NEM kimenettel.
Érdekes feladatnak hangzik.
Ha jól értem, akkor van egy előre definiált szöveged, és a jobbra balra rángatással szeretnéd kiíratni a 8 leddel. Szerintem a megoldáshoz sok segítség a propeller clock. Ott sok leírást találsz. Mellesleg nemcsak gyorsulást tudsz mérni, hanem pl. időt is. így a következő egyenleteid lesznek: v=a*t+v0, s=a*t2/2+v0*t+s0. Természetesen előjelhelyesen kell használni. Ha jól sejtem, te pedig az s-re vagy kíváncsi, hogy merre vagy a síkon, hiszen az szerint kell a ledeket vezérelni. Megjegyzések: Szerintem fontos a a precíz megvezetés, hiszen a jó láthatósághoz min. 10 (de 20-25 jobb lenne) felvillanás szükséges minden másodpercben, ami elég intenzív rázás, kézzel talán lehetetlen is... A másik probléma, hogy mennyi lesz a mintavételezési (konverziós) idő, hogy minden karakterpont minden mozdulatra fel tudjon villanni. De kíváncsi vagyok, hogy hogyan sikerül megoldani. Kérlek, hogy ahogy haladsz, oszd meg velem(-ünk), hogy mire jutottál.
Kimaradt, de a t-időt válaszd a legrövidebbre, amibe a A/D konverzió, számítás, portbeállítás belefér. Minél kisebb t-t tudsz beállítani, annál jobb lesz a felbontása.
Ha a lent leírt s (út) képletet használod, akkor oda-vissza tudsz kijelezni, nem veszíted el az idő (és az út) felét. Természetesen még a rángatás előtt szükséges, hogy a szöveget feloszd síkokra, hogy az út melyik pontján melyik ledek legyenek bekapcsolva. Ez mondjuk az Epromban tárolod. Ha tudod hol vagy (s), kiolvasod az azon a címen levő byte-ot és kiküldöd a led vezérlő portra. Nagyon röviden kb. így oldanám meg.
Kétféle gyorsulásmérőm van, az egyik ADXL330, ami egy fesz értéket ad vissza, de lehet, h már halott a tápja, múltkor mértük, nem adott semmiféle jelet. Majd még megnézem, mert csak az X-et ellenőriztük. A másik valamilyen SCA, arról sok mindent nem tudok.
A lényeg az, h mindenképpen analóg kimenetűvel akarom megoldani, mert I2C kommunikációt nem tudom a rendelkezésre álló idő alatt megírni, dec elejére kellene megcsinálnom
Nem véletlenül írtam v=a*t-t, mert azzal a képlettel kezdtem el számolni, amit te is felvetettél, de abban az esetben ha hozzáveszed a v0-t, akkor a kiírt szöveg is elmászik.
A propeller clock-ot néztem én is, de az jelentősen könnyebb, mert ahogy a motor beáll egy adott fordulatszámra, onnantól nincs probléma a kijelzéssel. Ez viszont egy nagyjából sinus jelet definiáló mozgás, ami ráadásul csak közelít hozzá Biztos vagyok benne, hogy megvalósítható, mert egy szaktársam már megoldotta, de csak egyféle kiírási sebességet tett bele. Fogott egy komparátort, hozzáillesztette a gyorsulásmérő kimenetéhez, azt kötötte a pic-hez és, ha volt valami feszültség érték, akkor adott sebességgel írta ki a karaktersorozatot. Ennél valamivel precízebb megoldásra gondoltam. A másik dolog még amit írtál, az is jó ötlet, erről is volt már szó Mármint, a síkokra osztásról. De mivel változik a mozgás közben a sebesség, ezért változik minden más is :/... Ismerősöm ugrótáblás megoldást javasolt, ami nagyon jó lenne, csak ahhoz értékeket kellene tudni. Ezért érdeklődök, hátha valaki konkrétabban tudna valamit javasolni, esetleg értékeket megadni. A gyorsulásmérő mellesleg -3/+3 g-s gyorsulást érzékel. Ebből azzal a szűréssel, hogy csak balról jobbra írok ki már a -3-tól 0-s tartományt ki is zártam. Ez mind azért szükséges, mert nem lehet előre tudni mennyi memóriára lesz szükség, főleg, ha maradok az ugrótáblás megoldásnál, ami időben talán a legjobb. Az ötlet egyébként eddig így néz ki: gyorsulásmérő értékeinek digitalizálása 8biten, amiből ráadásul elég lesz a felső 4 bit is, mivel abból 16 féle sebesség és idő lesz. 16nál pedig nem hinném, h több kiírási sebességre lenne szükség, hiszen ilyen mozgatással nagyjából oda-vissza 40cm-t lehet megtenni. Van valakinek ötlet, hogy a kéz ilyen irányú mozgatása maximum hány g-t eredményezhet?
Hát mozgásérzékelőt rákötöd a PIC-re soros porton küldöd a mért adatokat a PC-re .Így minden kérdésedre pontos választ kapsz.Ez az egyszerű áramkör akár próbapanelen is összerakható.
Világért sem vitatkozni akarok, de szerintem pont akkor mászik el a szöveg, ha nem számolsz a kezdősebességgel. Illetve attól függ, hogy mit is számolsz.
Akárhogy gondolkodom, mindig arra jutok, hogy neked egy egyenes mentén kell meghatároznod a helyzetedet, amit én úgy ismerek, hogy távolság, ami az útból számítandó mennyiség. Fizikailag szerintem jó a képlet. (de régen volt már általános, lehet, hogy tévedek). Igen a propeller clock előnye, hogy tudod hová kerülsz a következő pillanatban. De ha az időt tudod (ezt te választod meg), és méred a gyorsulást (feltételezzük, hogy két mérés között elhanyagolhatóan kicsit változik) akkor a gyorsulásból és időből kiszámíthatod, hová kerültél. (előjelhelyes használat -g -is) Egyetlen A/D-vel és egy útszámítással több, mint a propeller clock. A síkokra osztás. Persze, hogy változik a sebesség. De neked nem is a sebességet, hanem az utat (távolságot a képzeletbeli origódtól) kell számolnod. Nem arra vagy kíváncsi, hogy milyen gyorsan mozog épp a kezed, hanem hogy hol is van. Nem? Az egyféle sebességgel működő kiíratás érthető a komparátorról. (Nem mozog = 0) Balra mozog (-g) jobbra mozog (+g). nem mér, csak irányt vizsgál. A szinkronizálást meg kézzel (mozgatás sebességével) oldja meg. Azt képzeld el úgy, mint két irányba is forgatható propeller clock-ot. Állandónak feltételezi a sebességet, csak irányt határozza meg. Ha precízebbet akarsz, akkor számolj utat. A kérdés, hol van épp a ledsorom? Annak megfelelően kell a ledeknek égni. Ahhoz meg kell, hogy hol voltam eddig, milyen sebességgel (nem állandó) hová jutottam. Pont mint a képlet, amit leírtam Bocs, az ugrótáblás megoldást nem ismerem, nem vagyok sem villamos, sem IT emberke, de matematikus sem. Biztos jó, de én leggyorsabbnak akkor is a fix adatokat gondolom a leggyorsabban elérhetőnek és talán egyszerűbb is. (számomra biztos) Ráadásul az Eprom teljesen jó hely, mert az "távolságadik" címet kell csak kiírni a portra. Mivel a -3g - 0 tartományt kizártad, ezért nem voltak jók a képletek. Teljes kiolvasás, előjelhelyes behelyettesítés és minden a helyére kerül. 16 féle sebesség az mire vonatkozik? A felső 4 bitre? Ebből valóban 16 féle gyorsulási érték lesz. De! ez még csak pontos sebességet sem ad, csak sebesség változást! Az út meghatározásához pedig elég pontatlan lesz. Csak ismétlem magam teljes, előjelhelyes kiolvasás, útszámítás, helymeghatározás. Ötlet, hogy hány g-vel mozog ilyenkor a kezünk??? Ez vicc vagy komoly? Nem egy gyorsulásmérőd van? Nem tudod megmérni vele? Ha a kiíratással van gond, akkor minek vannak rajta a ledek? Kiméred és kiírja a felső majd alsó byte-ot. Te meg összeolvasod és örülsz, mert tudod milyen gyorsulása van a kezednek. :yes:
Igaz is, ha máshogy nem, akkor így biztosan kapok eredményeket, vagy, ahogy Szpidi írta kiíratom a ledekre a gyorsulást
Nem vitatkozni akartam én sem, én is először úgy gondoltam, h kell számolni v0-al, csak igazából olyan személytől hallottam, aki 100%, h jobban tudja nálam
Igazából nem tudom belátni fizikailag, majd még beszélek a fizika tanárral is erről lehet, nekem is úgy lenne logikus, h kell számolni v0-al. A többi tanácsod jó, és használható is, azokat köszönöm. A készüléket pénteken próbálom majd összerakni, akkor tudok bemenni laborba, ott van szkóp, meg egyéb, amivel tudok is menni valamire. Ha működőképes lesz, természetesen megosztom azzal, akit érdekel
Elolvasgattam amiket eddig itt született. Hát elég összetett feladat de nem megoldhatatlan.
Hozzátenném még az eddigi gondolatokhoz, hogy célszerű lenne az egészet úgy elképzelni mint egy 8x8-as mátrixot mondjuk és ott ugye a mátrix oszlopai között adott egy távolság legyen ez mondjuk 3mm. Tehát a gyorsulást tudjuk mérni, és azt be kell digitalizálni az részlet kérdés már hogy hány biten oldja meg ezt az ember. Tehát ki kell számloni hogyha most ennyi a gyorsulsás akkor éppen mennyi idő múlva kell villantani.Fontos még hogy a képfrissítésnek mindíg ugyanott kellene kezdődnie.
Engem is érdekel, hogy milyen maximális és milyen átlagos gyorsulást tudsz csinálni hosszabb távon. Ha megvannak az eredmények, megoszthatnád velünk. Én még ilyet sose mértem, de érdekelne.
Olyan ember nincs aki 100%-ban jobban tudja nálad. Bízz magadban! Egyébként ki is tudod számolni, hogy melyik megoldás a helyes. Fogod az Excell-t, és random beleírsz 100 különböző +- gyorsulás értéket. Veszel egy konstans t-t mondjuk 0,01s és ezekből fizikailag kiszámítod, hogy hol lenne a led teljes távolság képlet pontosan behelyettesítve (s képlet). Hogy a valósághoz közelebb legyünk, 5-6-7 értékenként válts irányt, mondjuk 5-7 negatív g után 5-7 pozitív g. Kiszámítod utána a sebességet akár V0-al akár nélküle, de csak a sebesség önmagában nem lesz köszönőviszonyban az úttal (pozícióval) ami a ledek kapcsolásának alapja. Az egész nem több 5 percnél, és nem is kell erről beszélni a fizika tanárral. Ez is egyfajta modellezés. Legfeljebb arról beszéljetek, hogy megbizonyosodtál arról, hogy csak a sebesség ismerete nem elég. Arra jó a modellezés, hogy a rossz elképzelési irányokat kizárd a lehetséges irányok közül. Ha esetlegesen mégis találnál egyértelmű összefüggést a pillanatnyi sebesség és a pillanatnyi pozíció között, akkor kérlek jelezd, mert érdekelne. De nekem nagyon gyanús, hogy nem fogsz találni.
AVR-re van hasonló: Link Mellékel forráskódot, nézd meg segít-e. ("POV" néven érdemes rákeresni.)
Igazából múltkor már csináltunk egy ilyen táblázatot, ahol ezzel a képlettel számoltunk.
Meg tudnád esetleg nézni, hogy szerinted jók-e? Mert lényegében azokat vinnénk rá a pic-re, onnantól sok feladat nem lenne vele...
a baj csak az vele, h i2c, szóval nem kell semmit sem átalakítani, valamint, h nem ismerem az avr-eket
Ez is tetszetős, csak ennél azért talán egyszerűbb lenne amit én szeretnék
Sikerült megcsinálnom a feladatot.
Megnéztem pár verziót, amik keringenek a neten, de mindegyik elég gyenge volt. Úgy oldottam meg, hogy ADC átalakítót használok, mert mozdulatlanul a gyorsulásmérő középfeszültséget ad, 2,5Vot. 8biten konvertáltam, a felső két bitet teszteltem, ha azok 1-esbe kerülnek, akkor van kiírás, adott sebességen. A felülről harmadik bitet szintén ellenőrzöm, ha az nulla, akkor még teszek be egy beállított delayt, h legyen nagyobb távolság a betűk között is. Így lett két kiírási sebességem. Ennyire leegyszerűsítettem a feladatot. Meg csináltam hozzá karakterkészletet, amiből behívom a szükséges betűt
Mma7361 analóg kimenetű gyorsulás érzékelő modult szeretnék pic18f4525 A/D bemenetre kötni, gyorsulásmérőt szeretnék így, első körben. Poti segítségével kipróbáltam, a bemenetet működik, de ha a gyorsulásérzékelő kimenetét rárakom, nem reagál, és állandó 5V alatti feszültség van rajta. Próbáltam RC taggal kisimítani a jelet, ez nem segített, valami illesztési probléma lehet.
Hello, ha leválasztod a PIC-et akkor változik a gyorsulásmérő kimenetén a feszültség? Ha igen, akkor egy OPA-s feszültségkövető segíthet.
Igen, változik a fesz a gyorsulásmérő kimenetén, ha önmagában van csak
Melyik kimenetet használod?
Ahogy látom egy 3 tengelyes gyorsulásmérőről van szó
Igen, mind a három tengelyen ezt csinálja sajna
Tedd a g-Selectet 0-ba (így a kis gyorsulásokhoz lesz jó), és 0g-Detect-re írj egy megszakítást, ha ez a jel 1, akkor X-Y-Z 0. Vagy egyszerűen csak ellenőrizd, hogy milyen jelszinten van 0g-Detect.
Ok, de ettől nem jön rendbe az illesztés.
|
Bejelentkezés
Hirdetés |