Fórum témák
» Több friss téma |
Köszönöm. Az INTCON,T0IF akkor is egyre vált túlcsorduláskor, ha nincsen a TMR0 megszakítás engedélyezve?
Igen, a Flag bitek 1-re váltanak függetlenül attól, hogy az Enable bitek hogy állnak.
Sziasztok!
Szerencsés TMR0 megszakításban pl A/D átalakítás sample time vagy egyéb késleltető rutint hívni?
Szerintem jobban jársz, ha bebillentesz egy flag-et és a fő rutinodban elvégzed a műveletet. Utána visszabillented a flag-et. Csak egy feltétel figyelés és egy bit értékű változó kell.
Köszi. Csak mert akkora zűrzavart csináltam magamnak, meg az mplab is bénázik. Tapasztalatom a 8.83-al valami nem jó a 8.56 nekem 2 nap bénáskodás után következtett erre. A másik a 16f887 qfn tokja nem az ami az adatlapon van! a google jobban tudja. Egy nyákot miatta el is rontottam. A problémáim meg halmozottak egy 887 kezeli az infrát, és jelzi a sebességet 0-99-ig ledekből összeállított decimális kijelzőn. Mostmár 24 bitet küldök. Továbbá ő küldi a 16f1826 nak a porta,1-re a 8 bitnyi szervó információt ami a szervón kívül a fetek terhelését és a kormány eltolását jelzi binárisan ledekkel. A külön pic-ek használata a kezdő pic tudásom miatt szükséges, és még így is gondot okoz. A szervóm ami egy a kínai kaki teljesen átváltoztatott játék autó (gyakorlatilag semmi sincs benne ami volt, -még a két motor se -) kormányát vezérli, ami néha beremeg főleg ha a +-15 nél nagyobb a rászerelt poti visszacsatolt A/D értékénél. Most megnézem 32Mhz-en hátha jobb. Vagy esetleg valami jó ötlet?
Sok mikrokontroller rendelkezik olyan CCP modullal, amely képes Compare módban úgynevezett Special Event Trigger jelet szolgáltatni, melynek segítségével indítani lehet egy AD konverziót. Mindez teljesen automatikus, képes egy beállított mintavételi frekvenciával konvertálni. Az ADC megszakítás engedélyezése után csak a konverzió eredményét kell kiolvasni az ADC interruptban.
Ezt feldolgozom. Az ötlet a nagyobb frekivel egyelőre exponenciálisan rosszabb. Meg már ez is sípol. A 4Mhz-es pwm-et sem lehet 200Hz-es freki alá állítani, ami a hátsó meghajtást is zajossá teszi. Milyen külső taggal kellene eltűntetni ezt a hangszóró hatást, mert idegesítő ez a trolibusz hang.
Léptető motorokat vagy sima DC-t használsz?
Sima dc.
De gondolkodom, hogyan lehetne azt elérni, hogy egyáltalán ne remeghessen be a szervó? Egy nagyon igényes képet csatoltam a zöld a poti a feketék a kerekek a piros meg a motor csatlakozása a fogasléchez ami a potit rángatja. Na most 0-256-ig lenne a pozíció, de gondolom mivel hirtelen jobbra kéretik túlránt visssza balra és így tovább tehát gyakorlatilag közelít. A mechanikai igénytelenséget figyelembe véve hogyan lehetne ezt a rángást lehetetlenné tenni. Kompromisszum kész vagyok!
Idézet: Gondolom, PID szabályozóval. Az az arányos (P - proportional) tagon kívül a hibajel idő szerinti deriváltjával és integráljával arányos tagokat is tartalmaz.„hogyan lehetne azt elérni, hogy egyáltalán ne remeghessen be a szervó?” A differenciálásnak köszönhetően "előrelátó" lesz, az integráló tagnak köszönhetően pedig hosszú távlatban a kis hibákat is kiegyenlíti.
Értem. Tehát ez folyamatos tesztelgetés és mégtöbb tesztelgetés nélkül kivitelezhetetlen, merthogy a hibajel az igénytelen mechanika miatt mégcsak nem is állandó.
Szia!
Stabilitás. A berezgés körerősítés függvény frekvenciamenetével van összefüggésben. Ez egy holtidős, kiemelésekkel tarkított szabályozott szakasz. A legegyszerűbben egy jó nagy időallandó bevitelével stabilizálható a rendszer.
Igen, ez egyszerűbb mint a komplett a wikipédián olvasott PID szabályzás. Valahogy úgy kell méretezni hogy a reagálása ne legyen lassú de ne is rángasson.
Próbáltál már átlagolni? 5-10 AD konverzió értékét átlagolni, hogy a rángatás megszűnjön.
Ezt is megpróbálom.
Persze ki kell tapasztalni hogy mennyi az a minimum darabszám amikor megfelelő lesz, de még nem lassul be a rendszer. Ez lehet 10-nél vagy akár 20-nál is több.
Vagy megpróbálni az AD felbontását megnövelni, hogy ne 256 (8bit) legyen, hanem mondjuk 1024 (10bit).
Annyit csináltam hogy az egész beállító rutin minden 256. körben kikapcsolja a kimeneteket, ezzel egy kicsit visszavettem a nyomatékából. Most +-10 megközelítéssel elfogadom. Valószínűleg marad is ha az egész rendszer rendszerezésében nem jut jobb. De nem is nagyon egyszerű már csak azért se mert a fogasléc is durva. Összesen 12 fog van rajta, ha a kettő közé esik az érték akkor az külön probléma félállásban tartani a mocit. Teszek fel képet. A távirányító az már volt minden Még csak teszt szintű.
Egyébként az átlagolásnak mi a legegyszerűbb módja? Gondolom nem kell ha 50 mintát veszek 50 segédregiszter? Nem csináltam még ilyet, és a több byte-os műveletek is homályosak, szintén a szorzás és osztás is. De szívesen tanulok.
Szia!
- Nem célszerű decimálisan kerek számokkal gondolkozni, igkább 2 valamelyik hatványával, ekkor egyszerűsödnek a műveletek. 50 helyett 32 vagy 64. Az osztás léptetésekkel valósítható meg... - Egy eljárásgyűjtemény. Már nem is számolom, hanyadszor linkelem...
Tudom, hogy rengetegszer küldted és szinte nekem,általában. De annyira gyér az angol tudásom, hogy az sem megy hogy milyen címszó alatt van az 'átlagolás'.
Szia!
- Az átlagolásra az előző hozzászólásom első fele vonatkozott... - A link a szorzás (math - multiply), osztás (math - division), 8 bitnél hosszabb összeadás (math - addition), kivonás (math - substraction) stb. műveletekhez ad kiindulási pontot. Ide talán jó a Google fordítója is..
Sziasztok!
Azt szeretném kérdezni, hogy egy PIC meghalhat úgy, hogy csak az MCLR láb kapja 10kohm-on keresztül az 5V-ot, majd programozási módba átkapcsolva közvetlenül a 12V-ot? Tehát a Vdd nem volt bekötve (panel hiba). Illetve a PGC, PGD kapott még azt hiszem 5V-ot a programozóból (watt féle lpt-s programozó, v4). És rövid idő múlva észre vettem, hogy erősen melegszik az IC, a Vpp az MCLR-be 160mA-t pumpált!!! Ennek mi lehetett az oka? Emiatt betettem egy ellenállást a Vpp és MCLR közé, bár a rajzokon úgy néztem nem tesznek be. Vagy mégis kellett volna oda egy ellenállás? WinPic 800 egyébként a hardware tesztre Ok-t ír, bár a PIC-et nem ismeri fel. De volt olyan is, hogy más típust ismert fel minden egyes lekérdezésnél. Billegtetve az LPT port bitjeit (D0,D1) rendesen változik a feszültség 0 és 5V között a PGD és PGC vonalakon, illetve az ACK is megfelelően változik. Szóval nem értem mi lehetett a hiba.
Sziasztok!
Két impulzussorozatom van, amit monostabil multivibrátorként 555-ös IC-vel uniformizálok(azaz állandó amplitúdójú és szélességű impulzusokká alakítom). Ezt a két formált jelet egy picben használnám fel. A kérdésem pedig az lenne, hogy hogyan tudnám megetetni a pickel ezeket a jeleket? Esetleg számoljam a megszakításokat közvetlen a pickel? A lényeg a lényeg, hogy a két fototranzisztorról érkező eltérő mennyiségű megszakítás különbségét szeretném mérni meghatározott idő alatt. Előre is köszönöm szépen a segítséget. Ádám.
Többféleképpen is lehet... pl. a jelek léptetnek egy-egy TIMER-t és a feldolgozás végén kiszámolod a különbséget, vagy az 555-ös jelek egy-egy megszakítást okoznak és ott léptetsz saját számlálókat, a vége ugyanaz, vagy csak simán figyeled a lábakat és megfelelő él esetén léptetsz egy-egy hozzátartozó számlálót.
Nem írtad le, hogy a jelek milyen gyorsak, mennyi ideig tartanak, milyen PIC, stb. ! Steve
Picket szándékosan nem írtam, mert előbb körvonalaznám, hogy mit is akarok és aztán keresek hozzá való picket. De hirtelen egy 16F628A van kéznél.
A jelet egy megvilágított fototranzisztor veszi, és egy 9 lyukú tárcsa szaggatja a fényt. Egy pickel egy sorozatot megtudok számolni mégpedig úgy, hogy a pic egyik lábát húzgálom alacsony vagy magas szintre, amit a picben számolok. De sajnos én még egy jelet csak egy újabb pickel tudok megszámolni. Volna esetleg olyan pic, amivel egyszerre tudnám számolni párhuzamosan a kettőt? Kezdő vagyok minden téren, csak tapogatózom. Egyébként egy fogyasztásmérőt szeretnék készíteni mégpedig 2db trabant átfolyásmérőből. A műszerek pontatlanságától most tekintsünk el, itt most a pic oldala érdekel csak.
Az a "gyorsaság" bőven megszámolható egy PIC-el és a 628-ban van is 2 timer, ami számolhat külső lábakról jeleket... a többit már leírtam. Ha még kezdő vagy, akkor ne ezzel az összetett feladattal kezdjél, hanem a részfeladatokat próbáld ki ( egyesével a TIMER-eket ), majd az így szerzett tapasztalatokat építsd be a végleges projektbe!
Steve
A 16F628 RB4-7 portja rendelkezik egy interrupt-on-change tulajdonsaggal, ami erre a feladatra kivalo. Engedelyezni kell az RB IT-t es az interrupt rutinban el lehet donteni melyik lab valtozott. Majd aszerint, hogy melyik lab valtozott, egy-egy szamlalot novelni. Igy akar 4 esemenyt is szamlalhatsz kulon-kulon. Melle meg van a RB0 INT IT, ami hasonlo tulajdonsagokkal rendelkezik, csak itt a valtozas iranyat is meg lehet adni. Viszont alkalmasabb lenne a 16F684-690 sorozat, mert itt lehet maszkolni a kivant labakat, es csak azok fognak IT-t kerni amelyek engedelyezve vannak.
|
Bejelentkezés
Hirdetés |