Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszi! Világos.
Még csak annyi hogy mivel nekem 2 érzékelőm lessz, két Analóg bemenetre van szükségem. Hogy váltogatok a két bemenet között hogy melyikről olvasson? Attól függ hogy az ADCON0(CHS2:CHS0) biteket hogyan állítom be? Ezt minden váltásnál át kell állítani? Csak kiváncsiságból miért nem lehet olyan variációt beállítani hogy a referencia fesz. -ek a tápról, és csak 2 analóg bemenet. Miért csak hármat lehet?
Megbocsátjuk, ha ideírod, hogy hány bites a config szó, és a 0044 szerint bitenként hogy néz ki a konfig!
Icserny jóvoltából ráterelődött a figyelmem egy égetőáramkörre(LVP programozónak indult). Nem akarom két helyen tárgyalni a kérdést, de úgy néz ki, nem csak a PICKit2 topicba való a téma, ill. inkább nem oda, mivel nem csak a PK2 felprogramozására jó, hanem bármilyen PIC-et felprogramoz, amihez találni megfelelő égető programot.
A rajz rémesen egyszerű: Kép: Hivatkozás Kipróbáltam és még tesztelem, de eddig hiba nélkül működik. Az égetési folyamatot leírtam a PICKit2 topicban. Ha lesz időm, és nem találok, vagy találtok benne hibát, hamarosan írok róla egy cikket is.
Nem rossz. Ahogy nézem az elv hasonló az Oshon-hoz és a WPB-hez. Gondolom a programkompatibilitás megvan.
Hali
Na valami ilyen szekvenciaval lehet megoldani a csatornak kozti valtast:
A lenyeg: ha csinaltal egy konverziot utana rogton at kell valtani a csatornat mert a mintavetelezo kapacitas feltoltesehez ido kell. A masik kerdesedre: lehet ugy is hasznalni de mindenfelekepp elhasznal 3 bemenetet. Ha 16F684-690-et hasznalsz ott minden analog csatornat kulon tudnal valasztani. Udv Vili
Igen. Kipróbáltam a WPB-vel és a WINPIC800-al, de 100%. hogy megy az oshon 16F-es és 18F-es programjával is. A PGD és PGC mindegyik program beállításánál nem invertált. A többi vonal nem számít, mivel kézzel van kapcsolva.
Köszi!
Teljesen fullos a válasz. Most már meg kell vennem a PIC - et.
Hali
Majd elfeledtem : Minden AD konverzio utan be kell szurni az int bit torleset bcf PIR1,ADIF mert ez nem megy automatikusan. Udv Vili Idézet: „WOrd alatt csak egy byte hosszu adat van: 0044” Ooo, hat 0044 elfer 1 byte-on, nem ertem mi a problemad
Micsoda megközelítéseket ismersz fel! Valóban...
Köszi!
Még lenne egy olyan hogy a két szenzor mennyire fog azonos jeleket adni. Szóval mi van ha A/D konvertálás után leszz kis eltérés a két érték között? Mondjuk az egyik digitális 700 a másik pedig 701. Nem rángatózhat állandóan a motor. Hagyjak neki egy határt hogy mondjuk ha 690 és 710 között mozog a két szenzor értéke akkor még egyenlőnek tekinthető? Idézet: „Még lenne egy olyan hogy a két szenzor mennyire fog azonos jeleket adni. Szóval mi van ha A/D konvertálás után leszz kis eltérés a két érték között? Mondjuk az egyik digitális 700 a másik pedig 701. Nem rángatózhat állandóan a motor. Hagyjak neki egy határt hogy mondjuk ha 690 és 710 között mozog a két szenzor értéke akkor még egyenlőnek tekinthető?” Digitalis filtert kell beepiteni...
Az a megoldás, hogy több mérést csinálsz és átlagolod, akkor nem fog annyira ugrálni az érték. Egyébként sem kell folyamatosan beavatkoznod, elég másodpercenként, vagy még ritkábban, és akkor nem fog ugrálni össze vissza. Közben a mérés is pontosabb lesz.
A beavatkozás mértékét pedig az eltéréssel arányosan kell megtenni, akkor gyorsan rááll és finoman rajta marad. Ez még nem PID, de már jobb az ON-OFF szabályzónál.
Gondolom, hogy a ket szenzor egy-egy feszoszto resze lesz. Az ellenallasok szornak, megpedig elegge, ugyhogy valoszunuleg kompenzacio szukseges, ez lehet egy kis potmeter vagy fixen bekotott plusz ellenallas a megfelelo oldalon. A masik dolog, hogy valoszinuleg a ket fotoellenallas sem lesz tokeletesen egyforma meg valoszinuleg a karakterisztikajuk sem.
(mas lesz az elteres gyengebb es mas eros fenyben). Az egyik megoldas, hogy ugyanazt a szenzort hasznalod mindket oldalra valami mechanikus vagy fenyveto cuccal - ez azonban szerintem csak ujabb problemakat szul. Mindenkeppen kell hagyni nemi mozgasteret, hogy milyen tartomanyon belul vegye elteronek a ket erteket. Elegendoen nagy belso EEPROM eseten tablazattal elvileg minden egyes ertekhez rendelhetsz szabalyozo erteket, szoval a karakterisztika es az eltero ertek kikuszobolheto, az oregedesi valtozas azonban igy sem. Latom, napkovetot epitesz, ez egytengelyes vagy kettengelyes lesz? Tehat kell valami fokuszpontba gyujto dolog vagy csak forduljon a nap fele siman? Az erzekelo mindket esetben elegge egyszeru, ket fotoellenallas egymas melle es kozejuk egy fekete lap fuggolegesen. Ha kettengelyes, akkor ugyanezt a MASIK mozgathato tengelyre, de vizszintesen. A beallas sorrendje: 1:odafordul, 2:odabolint vagy odaemel.
Köszönöm a válaszokat.
Nekem csak az elektronikát kéne megépítenem. Egy ismerősöm épít forgató mechanikát és neki kéne szabályzás hozzá. Úgyhogy elkezdtem vizsgálgatni hogyan tudnám megcsinálni és mivel mostanában tanulgatok PIc - ezni kapóra jön hogy kicsit tanuljak A/D konvertálni meg ilyesmi. Viszont bármelyik megoldást választom mindnél 10 bites értékkel kell dolgoznom mert ugye a digitális érték az (ADRESH:ADRESL) regiszterpárban tárolódik le . Kicsit megzavar a 10 bit. Hogyan adok össze pl. két 10 bites értéket, és az eredményt hogyan tárolom el majd hogyan osztom egy számmal? Ilyen programozástechnikai dolgok érdekelnének.
Két 8 bites regisztert kell 16 bitesnek értelmezni és velük a műveleteket elvégezni, kezelni az átviteleket.
Sok ilyen jellegű rutint lehet találni a microchip oldalán, érdemes nézelődni. Ez nem PIC kérdés, inkább bináris matematika. Mindegyik gép így csinálja. Idézet: „Hogyan adok össze pl. két 10 bites értéket,” Ugyanúgy, mint papíron ceruzával! Helyiértékenként, s azután az átvitelt (ami itt a STATUS regiszter C bitjében keletkezik) hozzáadod a magasabb helyiérték összegéhez. Természetesen "jobbraigazított" eredményt kérj az ADC-től! Az átlagolás menete: Kezdéshez kinullázod az összeget tároló rekeszeket. (Mondjuk SUMH:SUML) Azután ciklikusan mérsz, majd: 1. SUML = ADRESL + SUML 2. Ha STATUS.C=1 akkor SUMH=SUMH+1 3. SUMH=ADRESH+SUMH Ha lejárt a ciklus, akkor már csak be kell osztani... Idézet: „majd hogyan osztom egy számmal?” Ha jót akarsz magadnak, akkor ne 10 mérést átlagolj, hanem kettő hatványa legyen a mintavételek száma. Így 2^n db. minta esetén n bitnyi jobbraléptetéssel megúszható az osztás. Speciálisan pl. 256 minta átlagolásánál elhagyod az alsó bájtot...
Sziasztok!
Találkozott már valaki olyannal, hogy ha végzek egy AD converziót, akkor meghülyül, az egész PIC, olyan mintha folyamatosan újra indulna, de közbe nem, viszont tévesen érzékeli a bemeneteket a konverziók után, holott az ad átalakítás megfelelően véghez megy. Ez egy 16f917 lenne. Ha kikapcsolom az a converziós részt, akkor minden megfelelően működik. Még sosem találkoztam ilyen hibával, pedig már használtam párszor PIC-et és Ad-t is. Van valakinek valami tippe? Üdv Robi
Nem okoz megszakítást az A/D amit nem kezelsz le?
Sajnos nem, le van minden tiltva a tmr0-án kívül.Sőt a periféria megszakítások sincsenek engedélyezve.
Köszi a tippet!
A pic errataja mond valamit?
Masik, ugyanolyan pic? Masik, hasonlo pic? Esetleg peldaprogram, ami biztosan jo? Ha nem billented be e GO bitet, de egyebkent minden ugyanaz?
Néztem már azt is, nincs benne semmi ilyen. A másik picre gondoltam, de sajnos nincs belőle több. Ez a projekt egyik napról a másikra kellene, egyébként többet szoktam tartani. Amint bebillentem a Go bitet, onnan kezdődik a gáz, az AD már az inicializálás során engedélyezve van.
Probalj meg (csak kiserletkeppen) minden, erre vonatkozo utasitast egyenkent kiszedni (vagy az osszeset kikommentelni es egyenkent betenni), csak a GO bebillentes maradjon.
A konfig bitek jol allnak? UGYE assemblyben irod, nem valami magasszintu(bb) izeben???? Az orajelet honnan veszi az AD es mekkora ez? Kosd le vagy szakitsd meg teljesen az AD labat. PIC feszultsege rendesen szurve, MCLR rendesen felhuzva?
Hali
Idézet: Ennel az alkalmazasnal nem kell 10 bites AD-val dolgoznod. Ez nem egy precizios felhasznalas. Itt csak komparalni kell a ket beolvasott es atlagolt erteket. Ezert alkalmas a "balra igazitott" AD ertek mert csak az ADRESH-t kell hasznalnod. Igy az also ket bit nem kerul felhasznalasra. Ezert egyszerubb lesz a proggid. Mar csak az osszegzes es az osztas marad. „Hogyan adok össze pl. két 10 bites értéket” Javaslom hogy a csatornak olvasasat vegzd 1-2 mp-kent, mert nagyon lassu a valtozas. Termeszetesen a meghajtast is lassura kell megcsinalni mert kulonben az emlitett bologatassal fog dolgozni a mechanika. Ajanalatos vasarolni 10-15 LDR-t es ellenallasmerovel osszevalogatni. Esetleg meg a felso agba az ellenallasok ele tehetsz egy potit kiegyenliteni a ket erzekelo kozotti kulonbseget. En beraktam mindket erzekelot 1-1 hozzaillo fekete csobe es igy kis szogvaltozasra is elegendo differenciat kapsz. A csovek hosszat ki kell kiserletezni. Egyenlore ennyi Udv Vili
Sziasztok!
PIC12F683-al ismerkedek, Hi-Tech C fordítót használok. Kezdésnek egy egyszerű LED villogtatót próbálok összehozni TMR0 megszakítással. A PIC a belső oszcillátoráról megy, a LED egy 10k-s ellenálláson keresztül a GPIO2-es lábon van, áramot a PK2 ad neki, a táplábain ott a 100 nF kerámiakondi. Sajnos villogás helyett csak annyi történik, hogy kb 2 másodperccel a táp bekapcsolása után elkezd világítani a LED. Kiváncsiságból felraktam a Hi-Tide-ot, a szimulátorában jól futott. Az adatlapot átnéztem, de csak nem látom a hibát. Mellékelem a kódot. Valaki legyen szíves megnézni, hol rontottam el! Köszönöm
Köszi!
Teljesen érthető. Tök jó megoldás. Az osztásban sokat fog segíteni.
Köszi a tanácsokat. Tényleg csak egy regisztert érdemes nézni. Mondjuk lehet hogy ha a konverzió digitális értéke 255- 256 körül alakul akkor érdekes a dolog. De remélem messzebb esik majd tőle.
Idézet: „Tényleg csak egy regisztert érdemes nézni.” Inkább átlagolj és csak a végén kerekíts! Adj esélyt a zajnak, hogy kiátlagolódjon...
Nem tiltottad le a komparátort így első ránézésre. A TMR0 regiszterét meg ne piszkáld a megszakítási rutinból, hacsak nem pontos időzítést akarsz csinálni.
|
Bejelentkezés
Hirdetés |