Fórum témák
» Több friss téma |
Bocsi a félreértésért, az optónál a LED előtt 1,2 K-s ellenállás van.
Külső felhúzó ellenállásra gondoltam a bemeneti lábon az 10K-s. Az optó csak akkor oszcillál ,ha a 18V-os jelet kapja. A kollektor a 10K-s ell. ál a PICbementei lábára és a +5V-ra van kötve, az emitter pedig a PIC táp földjére. Bázis szabadon lóg! 16F84A a PIC! A megszakítás a PORTB 4-7 változásfigyelésére van állítva! A hozzászólás módosítva: Ápr 16, 2015
Sziasztok!
A segítségeteket szeretném kérni a következőben. Írtam egy programot két pic16f887-es pic-re, proteussal próbáltam szimulálni de valamiért nem működik. A program mikroc-vel íródott. A forráskódott mellékelem, ha igény tarja a proteus fáljt is feldobom.
Első ránézésre a soros port ki- és bemenetét nem jól konfiguráltad.
Eddig ok. Kezdjük a hardverral. Tételezzük fel, hogy az opto rendben van(oszcillálni nem szokott).
-Táp: Milyen az a 18V táp? Honnan jön, stabilizált? Ha nincs eléggé pufferelve pulzálhat. -PIC: PortB4-7 többi lába mit csinál? Mert ezen a PIC-en az interrupt az B4-7 összesre vonatkozik. Azt irtad nincs szkópod, kezdjük a táppal. Ha a 18V a gond azt próbáld pufferelni. Nem muszáj a 18V-ot, az optó PIC felőli oldalát is próbálhatod pufferelni.
Egy örök igazság: Ami mindent tud, az nem tud igazán semmit sem.
Mikrokontroller (PIC,AVR) esetén a fejlesztő környezetbe integrált programozó a legjobb. Ha ritkán, esetleg csak más által fejlesztett programokat használsz, akkor mindegy a kezelhetőség.
PICkit2 van nekem. Nekem leginkább egy Eeprom programozó kell. Autók ECUjában az immobilizerek deaktiválására. Azokban vannak mindenféle spéci IC-k néha.
Elég TL866 CS -t venni , mert ét lehet konvertálni TL866A -vá. Bővebben: Link
Kicsit laikus vagyok ebben. Hirtelen ránézve, (tényleg csak hirtelen - 10másodperc) valamit át kell benne égetni PICkittel. Ezzel nem lenne gond. Viszont foglalmam sincs miért kell ezt csinálni, nem ismerem ezt a programozót, mivel másabb. Nekem a lényeg, ha jön egy ECU, és lesz benne egy IC amit fel kell programozni, akkor ne legyen az hogy megveszem az A programozót, és .. a fenébe, a B programozó ezt tudja, de az A nem. Miért nem vettem amazt. És ez így fordítva is. Akkor azt mondod, az olcsóbb TL-t vegyem?
VRCON beállítása után a 10us késleltetés - feltételezem - a feszültségosztó stabilizálásához kell. Elég erre néhány NOP utasítás, vagy timert kell indítani egy PIC16F628 esetén? Esetleg az is megfelel, ha beállítom, és csak jóval később kérdezem le?
Uraim, mennyire lehet pontos áramot mérni PIC-el?
Csatolok néhány képet, hogy kötöttem be. Nem vagyok elégedett a méréssel, lehet nem jól számolok valamit, vagy a bekötés sem korrekt? A feszültségeket, jól számolja, de az áramot nem. A kódrész pedig így néz ki:
Előre is köszi az észrevételeket.. A hozzászólás módosítva: Ápr 18, 2015
Jól látom, hogy 100 kOhmos soros ellenálláson keresztül csatlakozol az ADC bemenetére? Akkor mit vársz?
Mond meg a tutit mester
Hogy csináljam, hogy jó legyen?
Több probléma is van. Úgy látom ebben a PIC-ben nincs referencia, és mivel külsőt sem használsz, gondolom az 5V-os táp az. Ekkor feszültségmérésnél, ha az ellenállásosztó a táp 5V-ját akarja megmérni csak az osztó arányát méri, hiszen ha a táp változik a leosztott feszültség is (márpedig a táp változik, ahogy változik a terhelése). Tehát a PIC így nem tudja megmérni a saját tápfeszét. Az árammérésnél ugyanígy, ha 5V a referencia, az egy bitre jutó áram ~10mA (5/1024/0,47). Alacsony feszültségnél nagy a pontatlansága az AD-nek (amúgy is ugrál 3-4 bitet), és egyéb hibák is kijönnek (pl. ofszet). Ezen több mérés átlagolásával és az AD jó beállításával (TAD, beállási idők) lehet valamit javítani. Itt jön képbe a 100k soros ellenállás, ami nagyon lelassítja az AD kondijának feltöltődését. Tehát ha ilyen kis áramot szeretnél mérni nagyobb ellenállás kell (hogy nagyobb legyen a feszültség), vagy erősítő.
Nézd meg az adatlapban az A/D Acquisition Requirements című szakaszt! PIC18F4550 esetén például (ennek az adatlapja van mos a kezem ügyében) ezt írják: The maximum recommended impedance for analog sources is 2.5 kΩ. Ehhez képest a 100 kOhm nagyon sok. Rövid adatgyűjtési idő esetén így nem képes feltölteni a mintavevő-tartó áramkör kondenzátorát. Hosszú adatgyűjtési idő esetén pedig elviszi az offszetet a csudába az elszivárgás.
Ha muszáj a nagyimpedanciás csatlakozás, akkor tenni kellene oda egy műveleti erősítőt. Vagy használj valamilyen árammérő szenzort. Bővebben: Link
Igen, az 5v-os táp a referencia, 10 mérés átlagát fogom használni, nincs komoly szükség az áram mérésére, de jó lenne látni mi az aktuális helyzet.
Később jól jöhet, ha egy labortápot akarok építeni.. icserny: köszi, ezt nem néztem, ugyan ezt írja a 18F442-re is. (max. 2.5kΩ)
Érdemes lenne a számítást is egyszerűsíteni. A négy művelet helyett talán egy is elég.
És hogyan?
Ha van elképzelésetek, akkor kérnék egy példát is, hogy véleményetek szerint mi lenne a jó és optimális bekötés. Feltettem a teljes proteus projektet, kérnélek benneteket akinek van proteusa és tud segíteni egy optimális megoldással az segítsen a projekt módosításával. Továbbá a projekt keretein belül megtaláljátok az LCD drivert, a szűkséges ADC beállításokat és néhány függvényt ami szükséges lehet. Továbbá van benne egy 12v-os. 5v-os, és egy áram mérő rész is, programmal együtt. (az árammérő rész az nem pontos, és a fesz mérés is lehet hibás bár jól működik) Ez a projekt nem csak a segítségemet szolgálja, szolgálja azokat is akik LCD vagy az analóg portokat nézegeti kezdőként. 18F442 és 452-es PIC-hez az MCU beállításokat is megtaláljátok. A hozzászólás módosítva: Ápr 18, 2015
Nem nagy dolog.
Szorzol, osztasz, megint szorzol es megint osztasz KONSTANSOKKAL. Ergo elvegzed a muveletet kulon es a vegeredmenyevel szamolsz. Mondjuk (((x*10)/2)*3)/5) az ugyanaz, mint az x*3
Nem tudjuk mit szeretnél mérni. Két feszültség értéknél (mint írtam a PIC a saját tápját nem tudja megmérni), mekkora a méréshatár, ugyanez az áramnál (1A, 10A).
A programban nem tudom miért kell lebegőpontos számítás, mikor minden szám egész. A feszültség és áram mérést egy rutinba kellene tenni, lehetőleg egyből egymás után, hogy összetartozó pillanatnyi teljesítményt tudj számolni (bár nem tudom mennyire változhatnak az értékek). 10MHz-hez nagyobb osztást kellene beállítani a Tad-hoz. Az akvizíciós idő inkább néhányszor 10us, mint 1ms (nem kell oda 2,5k csak annyi lehet a maximum, inkább soros 1k-100nF a föld felé, ha egyent mérsz). Két mérés között minimum 2Tad-nak kell eltelni, az 1ms nagyon lelassítja a mérést (most ugye 20ms alatt csinál egy 10-es adagot).
Csak a számításhoz:
Ha az egyes méréseket osztod 10-el, nagy mértékben romlik a pontosság. 10 bit helyett csak épphogy 7 bites lesz. Helyette a mérések eredményét add össze egy unsigned int változóba és a végeredményt oszd el 10-el. Csak az utóbbi legyen a float. Az egészekkel való számítás lényegesen gyorsabb. Az x*50/1023*250/1023 számítást - mint bbalázs_ írja - ne a processzorra bízd.
Azt végképp nem értem, hogy miért is kell oda kétszer is az 1023-al való osztás.
Az eredménynek ilyesminek kéne lennie: AD * méréshatár / 1023
Mi az, hogy kétszer. Már egyszer sem kell.
50v-os és 10A-es méréshatárra gondoltam.
Készítenétek egy szerintetek jó kapcsolási rajzot, ami megfelelő lenne ezen mérésre? (csak azon részre gondoltam ami a PIC lábára rávezet, 5v--ellenállás--PIC, fogyasztó--ellenállás--PIC) Nyilván ahogy volt említve is a 12v-os rész az majd a 7805-elötti feszültség az 5v már az utáni feszültség lesz. A PIC fogyasztását nem akarom mérni, de tudom, hogy a fogyasztás feszültségingadozást fog eredményezni ami a számolás rovására megy, de ez elenyésző lesz mivel folyamatos terhelést kell mérnie nem nagyon lesz ingadozás, csak mérsékelten. Igazából most ennek nem kell halálpontosnak lennie, de azért jó lenne a lehető legjobbat kihozni belőle. A játékkonzolom fogyasztását akarom mérni majd vele ami ugyan arról az 5v-ról fog menni amiről a PIC is kapja a szuflát. A hozzászólás módosítva: Ápr 19, 2015
Nem azt mondom, hogy egyszerűen csak pontatlan, hanem semmilyen.
Példa: 5V táp, 1/2 osztóval 2,5V-ra beállítva az AD 512-es értéket fog adni, ezt a programod megszorozza 0,00976-tal (2*5/1024) kijelez 5V-ot. Lekapcsolom a tápot és megy két ceruza elemről: táp és referencia 3V, az osztó leossza 1,5V-ra a kapott AD érték 512 ha ezt szorozza ugyanúgy ,00976-tal ugyanúgy 5V-ot fog kijelezni. Magyarul nem tudja megmérni a saját tápját, mivel nincs mivel összehasonlítania. Erre a megoldás lehet az, hogy külön stabil 5V-ot kap a PIC és a fogyasztód (persze a PIC tápjának változása így is belejátszik, pl. egy multiplex LED-es kijelzés épp milyen stádiumban van), vagy egy külső/belső referencia (2048mV-os referencia már 3V-nál is stabil).
Elnézést kérek mindenkitől, aki akár egy pillantást is vesztegetett problémámra. A baki a 15. sor, ami az adatok szerint "low range", vagyis nem 2,50 V, hanem 1,67 V, ami kívül esik a bemenő jel tartományán...
Sziasztok.
Most kezdtem el ismerkedni a Pic-el, letöltöttem egy szimulátort hozzá, valaki tudna hex-kiterjesztésű fájlt, amivel letesztelhetném a programot?
A hozzászólás végén van. Futófény a PORTD-n ha jól emlékszem.
Bővebben: Link Egyébként ha jót akarsz, felejtsd el a szimulátorokat! A hozzászólás módosítva: Ápr 20, 2015
Idézet: „Amire a kolléga gondolt azok a 12,31 lábak, de ennél a PIC-nél nem kell bekötni az összes táplábat, mert a tokon belül össze vannak kötve.” Minden táplábat be kell kötni, akárhány Vdd és Vss lába is legyen a kontrollernek. Sőt arra is ügyelni kell, hogy a külső összeköttetés alacsony impadanciájú (vastag vezeték) legyen és a chip -en belüli összekötéseken nem folyhat át áram.
Köszi.
Miért felejtsem el a szimulátorokat? Nem jók? |
Bejelentkezés
Hirdetés |