Fórum témák
» Több friss téma |
Sziasztok!
Tudja valaki, hogy a Timer1 időzítőt hogyan kell helyesen beállítani 32khz-es kvarchoz, hogy ne másodpercenként (TMR1H := 0x80; TMR1L := 0; ) , hanem tized, vagy század másodpercenként legyen a megszakítás? A hozzászólás módosítva: Jún 24, 2014
Microchip timer1 clock
A hozzászólás módosítva: Jún 24, 2014
Hozzá kell tenni, hogy óra kvarccal maximum 4 tizedes pontosságot tudsz kreálni ha 10 az x-ediken időzítést akarsz. Ha pontosat akarsz ezen a módon akkor nem órakvarc kell, hanem amiből le lehet osztani pontosan.Pl: 1,2,4,8.. stb, MHz
Ezer hála! Valószínűleg elég lesz ez a pontosság is.
Egy kis segítség.
A hozzászólás módosítva: Jún 24, 2014
Hello! Az lenne a kérdésem hogy a PIC18F45K22 -nél hogyan lehet beállítani hogy mindegyik port digitális legyen. A "D" port kivételével mindegyik port kimenet. MikorC proban programozok. Köszi!
Szia!
Értem. Próbálom megérteni, de kell valami amin el tudok indulni, ez tűnt a leghasználhatóbbnak. Kezdeném az elejéről. A beállításokat értem, elindul a Timer1, jön a CCP-ről a megszakítás, elmenti az éppen aktuális értéket egy regiszterpárba, ha túlcsordul akkor beállítja a flag bitet. De mi van akkor ha két megszakítás között többször is túlcsordul? Mert ha jól értem kb 0,06 másodpercenként kellene egy kiolvasás, törlés, újraindítás ahhoz, hogy ne legyen túlcsordulás. Az a saját tervemnél maradva kb 70 km/h sebességnél jöhet szóba, ami kissé túlzás. Ennek jó ha 1/5-ével számolhatok, tehát legalább ötször, hatszor de inkább többször fog túlcsordulni. Ezt, hogy tudom figyelni, hogy hányszor csordul túl?
Minden túlcsorduláskor növelsz egy változót..
Sejtettem. Ezt megszakítással kellene megoldani? Vagyis azzal célszerű? Mármint úgy értem, hogy túlcsorduláskor megszakítást okoz és a megszakítási területen figyelem, hogy a timer miatt következett-e be és akkor léptetek egyet a változót?
Így van és a végén ennek a figyelembevételével számolod az eltelt időt és ebből a sebességet ( vagy amire szükséged van )!
De számolj először egy kicsit visszafelé: milyen pontosan akarsz mérni és ehhez milyen pontosan kell mérned az időt, majd ennek megfelelően válaszd meg a kvarc frekvenciáját és az esetleges osztásarányt! pl. ha 1 km/h pontossággal akarsz mérni és 1 ms-nál 10 km/h, míg 1,1 ms 11km/h a sebességed ( és ez fennáll a teljes méréstartományban, hogy 0,1 ms-al változik nagyjából km-ként), akkor ha 0,01 ms pontosan mérsz, az már megfelel és így pl. 8-as előosztót használva az előzőben írt 1 us-os léptetés már 8 us-os lesz, ami 8-ad annyiszor okoz túlcsordulást ( azaz az általad írt 5-6 túlcsordulás nem lesz!) és így ezzel nem kell foglalkoznod! Ezt persze át kell gondolni a feladattal kapcsolatban, csak arra akartam felhívni a figyelmedet, hogy érdemes átgondolni a feltételek alapján a megvalósítást!
A példádat feltölthetnéd az oldalra.
Egyébként fordítva is megközelítheted a probléma megoldását. A timer1-et beállítod másodpercenkénti megszakításokra, A hall impulzusok érkezésekor pedig növelsz egy szám változót 1-el. A timer1 megszakításakor kiíratod a változó értékét, és nullázod azt. Így minden másodpercben megkapod, hogy hány impulzus jött a hall szenzortól, és így már ki tudod számolni a fordulatszámot ill sebességet. Ez a megoldás akkor lehet hátrányos, ha gyakrabban akarod a sebesség kijelzését frissíteni mint 1mp. Idézet: Ja, meg ha pl. traktor sebességet akar mérni, ahol a kerék kerülete pl. 4-5 méter és nem fordul 1s-ként egyet, mert ha ott 1s-ként 5 m-t megy, akkor már 18 km/h-val halad, azaz ha nem jön be az impulzus, akkor nulla a kijelzés, ha bejön, akkor 18 km/h! 1 imp/ford jeladónál "nyűgös" az általad leírt módszer, bár néha használható! „Ez a megoldás akkor lehet hátrányos, ha gyakrabban akarod a sebesség kijelzését frissíteni mint 1mp.”
Sikerült működésre bírni a gyro sensort. Nem is olyan rossz az eredmény szögmérésre. Persze csak demonstrálni jó, használni elég pontatlan lenne Bővebben: Link Na majd a fordulatszám mérésre kíváncsi leszek!
Szia, nagyon jó lett, gratulálok. Ahhoz, hogy jobban látsd hogy mit is mér valójában és hogy milyen zajok jelennek megy amiket ki kellene valahogy szűrni sokat segítene ha keszítenél egy egyszerű grafikus felületet számítógépen amelyiknek folyamatosan küldené fel a PIC az adatokat (nyers adatoka, átszámított értékeket, bármit) és így jobban ki tudnád elemezni
Erre a legegyszerűbb a soros kommunikáció, pc oldali résznek pedig pl. LabWindows (CVI), ami hasonló pl a C#-hoz csak többnyire vezérlésekhez való (vannak benne gombok, kapcsolok, potméterek, egyszerűen kezelhető grafikonok (chart-ok), a LabView-nak testvére csak ezt c-ben kell programozni). Ez csak egy tipp, ami lehet hogy sokat segíthet, legalábbis nekem segített annó
Köszi Lehet az lesz, hogy írok hozzá C#-ban valamit. Labwindows-t még nem próbáltam. Van egy bluetooth modulom is, azzal tudnám az adatot küldeni a gép felé. Mert tényleg van pár dolog, amit nem értek még. Lehet az idő mérés van elrontva a programomban, mert az adatlap szerint 8,75mdps/digit a felbontás, de akkor nem lesz pontos. Kiegészítettem a kijelzést, hogy az aktuális fordulatszámot is írja ki. Referencia fordulatnak egy lemezlejátszót vettem alapul, annak elvileg tökéletes 33 fordulat/perc a fordulata . (Az oldalán van is ilyen kis glim lámpa, amivel a sebességet lehet látni, állni látszódnak a pöttyök a forgórész oldalán, ha pontosan forog). Szóval ráraktam a lejátszóra, de csak 198,00 dps helyett 193,8 dps-t mér.
De azt fogom csinálni, hogy egy hall sensoros fordulat mérőt is csinálok, és ahoz hasonlítom majd össze. A hozzászólás módosítva: Jún 25, 2014
Nos számoltam egy kicsit a tanácsod szerint. A jármű kerekének a kerülete 116 cm, ami azt jelenti, hogy kb 862 fordulat kell 1 km megtételéhez. Ha 1 km/h sebességet veszek alapul akkor kb 14,37 f/min a tengely fordulata. Ez azt jelenti, hogy kb 4,2 másodpercenként jön egy impulzus. Egy kis túlzással ez az érték fordított arányban áll a sebesség növekedésével. Tehát ha jól számolok akkor 5 km/h-nál 0,84 másodpercenként jön az impulzus. Szívem szerint azt céloznám meg, hogy az 1 km/h-t is meg tudjam mérni, de ez a 4,2 mp elég hosszú idő.
Ami a kvarcot illeti, 4 MHz-esben gondolkodom, kisebb nem jöhet szóba, mert a PIC a CCP1-en egy PWM-et csinál aminek a frekvenciája így is elég kicsi a többi kötöttség miatt. Nagyobb értékű kvarc jó lenne, de az a hosszú idő miatt nem használna (gondolom).
Nem tudod az impulzusok számát növelni?
Pl.:Hall elemnél több mágnes, optikai mérés?
Most, hogy mondod! Hall helyett használhatnék rés optót. A tengelyem kb 28 mm átmérőjű, erre tudok tenni egy nagyobb tárcsát amibe elég sok rés elfér. Ezzel többszörösére tudom növelni az impulzusok számát. Mindjárt skiccelek is valamit!
Na meg is született. 60 osztás elfér rajta, így talán könnyebb a számolás, de ennek még utána számolok majd. Köszi a tippet!
A hozzászólás módosítva: Jún 25, 2014
Ha ilyet csinálsz ( eltérően a kiindulástól ), akkor alkalmas időkapuval a beérkezett impulzusok száma akár a sebességet is adhatja !
Durván számolva ( finomítanod kell, csak az elv miatt!): a 862 fordulat óránként szerinted 1 km/h --> 14,4 ford/perc --> 0,24 ford/s --> 14,4 imp /km*s --> 1/14,4 s-ig (~ 70 ms ) mérve pont 1 imp/km, azaz kb. 70 ms-os kapuidőt használva ahány km/h-val mész, annyi impulzus jön be, így könnyű kijelezni ( mivel 1 imp/km, ezért adott esetben "ugrálhat" a kiírt érték --> pl. 4 v. 8 mintás átlag ! ) ! Remélem jó gondolatébresztőnek ?! A hozzászólás módosítva: Jún 25, 2014
Köszönöm! Elgondolkodom rajta! Valami olyan osztás kellene kitalálnom, hogy nagyjából egész számok jöjjenek ki.
Ja-ja , de az idővel jól tudsz manipulálni !
A hozzászólás módosítva: Jún 25, 2014
Rés optó egy járművön? Ráadásul- ha jól értem- traktoron? Nem fog az elkoszolódni az első 100m-en?
Neeeem traktor! Ezt csak példának hozta fel a kolléga! Amiről szó van az egy saját készítésű háromkerekű járgány a gyermekeim részére. Gondoltam tanulás céljából teszek rá ezt-azt.
Egyébként valami hasonló megoldás van a kétkerekű motorokon - ha jól gondolom - az ABS jeladónak.
ABS jeladónak fogaskerekes induktív érzékelőket vagy a csapágyba beépített mágnesek hall cellás feldolgozását alkalmazzák... !
Lehetséges, hogy úgy van. Én csak a csatolt kép miatt gondoltam, nem néztem utána.
Srácok a véleményetekre illetve tanácsotokra támaszkodnék a következő érdekességben.
Elkészítettem a Bináris óra programját ami működik is szépen, de olyan gondom van, hogy mikor világít egy LED akkor az utána lévő (ugyan abban a sorban) LED is halványan világít. Olyan mint, ha a PIC nem tudná teljesen lekacsolni az aktív oszlop utáni oszlopot. Mutatom a forrásom:
Próbáltam az időzítést növelni, de semmi eredmény. Előre is köszi az észrevételeket....
Nem csak átvilágít a másik ledbe El vannak választva egymástól a ledek fizikailag?
Előbb kapcsold ki a kijelzést, utána kapcsold be a LED-et.
Úgy látom, hogy az egy induktív érzékelő itt is !
|
Bejelentkezés
Hirdetés |