Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Csináltam egy mérést.
Feszt és hőmérsékletet is mérek vele. (A hőmérő egy pohár vizben van.) 13,17V 30,92°C <= 13,14V 31,67°C <= 13,25V 30,92°C <= 13,17V 31,67°C <= 13,22V A megjelőlt ugrálások nem nagyon tetszenek. Mert ha a 0-5V-s tartományt vesszük és 10 bites AD eredménnyel dolgozunk akkor ~5mV / osztást kapunk. Szerintem akkor az én esetemben csak a századoknak kéne változnia 1-2 értéket. >>>>
Biztosan jól osztassz? Nekem régebben sikerült rossz osztó rutinokat írnom.
Meg kéne próbálni kiíratni a nyers adatokat, hogy azok mennyire ugrálnak!
Üdv az Uraknak!
Írtam egy pár soros programot 12F508 ra, de nem igazán működik...mi lehet a baj? A GP1 kimeneten egy LED van amit elvileg egy 1 Mhz es négyszögjel hajt 50/50 °% kitöltési tényezővel, legalábbis szerintem. (4 Mhz es órajel / 4 (négy órajel/utasítás) ) Egyszerű villogó akarna lenni, (késleltetés nélkül használva.) LIST P=12F508 #INCLUDE __CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC MOVLW b'000010' ;GP1 KIMENET TRIS GPIO FLASH MOVLW b'000010' ;GPI MAGAS MOVWF GPIO MOVLW b'000000' ;GPI ALACSONY MOVWF GPIO GOTO FLASH ;AZ ÓRAJEL FREKVENCIA/4 EL ISMÉTLŐDIK END
az INCLUDE csak a másoláskor maradt le, a program ban ott van...
Hali!
Most kezdek PIC-ekkel, és lenne 2 kérdésem: 1. Milyen PIC-et tudtok ajánlani, ami: olcsó, bírja a strapát, sok mindenre jó, és többször programozható. Esetleg beszerzési forrás is érdekelne. 2. Milyen módon tudom elkerülni, hogy a rosszul összerakott áramkör tönkretegye a PIC-emet? Biztosíték, dióda kondi, és ezeket hová kéne tenni? Köszi!
Szia!
Mivel én is most kezdek PIC elni, talán én vagyok a leg unkompetensebb arra hogy válaszoljak neked. Elsőként talán nézd meg Topi cikkét a mikrovezérlőkről: http://www.hobbielektronika.hu/cikkek/nullarol_a_robotokig_-_pic_mi...z.html ebben a cikkben PIC16F877 et használ, A leírásban megtalálod hogy miért ezt a 40 lábú típust ajánlja. A rosszul összerakott áramkörre szerintem nincs gyógyszer, ha "szarvashibák" vannak benne..De pl. polaritáshiba ellen soros de még inkább táppal párhuzamos diódát szokás használni. A ki/bemeneteket meg soros ellenállással lehet megvédeni leginkább. De ezt majd a nálam jóval okosabbak kiegészítik neked. PIC et a ChipCad nél kapsz, de sok kisebb cég is forgalmazza (LoMEX, RET, Mikrovill, Elektro -kontha...stb)
láttam a másik topciban hogy nem akarsz assemblyvel foglalkozni...
ajánlom a 18f4520-at, ebben minden benne van: 32 KByte flash (a programhoz) 256 Byte eeprom 1536 Byte ram, 36 IO láb, 40-es DIP tokban is kapható 10 MIPS, van benne 8x8-as szorzó 10 bites A/D (13 csatorna) 100kSps két analóg komparátor, soros/spi/i2c busz támogatás 4 időzítő 5 PWM kimenet és 2 CCP + C kódra optimalizált architektúra
Kezdésnek a 877 is durva... Nemhogymég egy 18F4520. Igaz hogy lábekvivalens, de azért... hát nem tudom. Én továbbra is assemblyvel való kezdést javaslom 16-os családon. Hadd szenvedjél a BANK-ekkel, meg a hardver szintű assemblyvel. Ha nem tud valaki assemblyben programozni PIC-et, szerinten veszett úgy belefogni C-be vagy bármi másba. Egyszer elakadsz/sebesség és egyszerűség a lényeg, bármelyik nyelvben pár sor erejéig áttérhetsz assemblyre...
Szerk: Peti, nem neked válaszoltam elsődlegesen. Idézet: „Hadd szenvedjél a BANK-ekkel, meg a hardver szintű assemblyvel.” Hú, de gonosz! :hehe: De amúgy igazat adok, ha ezt itt és most az elején megtanulja valaki, akkor később nem lesz gondja vele!
Hátha még elmondanám, hogy civilben programozó vagyok...
Az assembly-t mindíg utáltam, és nem is akarok ipari projekteket csinálni PIC-el, csak saját részre pár apróságot. Eddig az assembly miatt nem fogtam bele, de rátaláltam a flowcode nevű progira, és azzal szimulációban komoly dolgokat is könnyen megcsináltam, úgy hogy a kódot ő generálta. Később visszaolvasom a kódokat és látom, hogy mit-miért, és így nekem sokkal jobb, mindíg is ilyen "visszafelé" ember voltam.
Helló
Már megvettem a pickit2-t megnéztem a példaprogramokat, legtöbbjüket ki is próbáltam, nem legutolsósorban meg is értettem őket. Most épp saját program írásán fáradozom, 1-2 egyszerűbb sikerült is. Viszont a végtelen ciklusok, a túl hosszú számlálások miatt elég sokszor égettem be a pic-t. Szóval az a kérdésem lenne, hogy -bár tudom hogy flash- de valójában hányszor programozható egy ilyen ic? Lehet, hogy laikus kérdés, de sehol nem találtam a fórumon vagy az adatlapokban. Nem mintha félnék, hogy a 20. alkalommal majd nem megy...
ne aggódj...
a program memória 100 000 írási ciklust bír ki, az EEPROM 1 milliót (ezzel már jobb vigyázni) ha napi 273x törlöd és égetsz bele programot egy éven keresztül, akkor 1 év alatt megy tönkre... nekem kb napi 20-30 "égetés" van általában, lehet, hogy néha több, de így is jó pár évig ki fog tartani
Hát igen. Akkor még messze van a tönkremenetel. Az EEPROM-ot még nem használtam, de azt hiszem nem értem miért kell vigyázni jobban. Megírsz egy programot, ami használja, törli és újra föltölti, az fut x ideig, utánna kampeca?
igen, eepromban nem érdemes túl gyakran változó adatot tárolni, beállítások tárolásához viszont ideális
Nem pont ugyanaz, de nemrég ezt kódot hoztam össze az egyetemre. Igaz nem pic-re, hanem 8051-re, de mivel C-ben van, ezért ugyanaz.
unsigned fesz, eredmeny; unsigned char tmp; fesz=((long)eredmeny*5000+512)/1023; tmp=fesz%10; gotoxy(7); putch(tmp+'0'); fesz/=10; tmp=fesz%10; gotoxy(6); putch(tmp+'0'); fesz/=10; tmp=napon%10; gotoxy(5); putch(tmp+'0'); fesz/=10; tmp=napon%10; gotoxy(4); putch(tmp+'0'+0x80); Az eredmeny változó tartalmazza a konverzió eredményét, a gotoxy() függvény pozícionálta a kurzort a kijelzőn, a putch() pedig a kurzor helyére kiírta a karaktert, aminek megkapta az ascii kódját. Innen talán tudsz ötletet meríteni a saját számolásod kiíratásához, a 0x80 hozzáadása pedig a pont bekapcsolását jelenti az adott szegmensen.
Köszönőm a kódot, de én asm-ben tolom....
Közben találtam a kódomban 1-2 hibát is. Majdnem sikerült tökéletesíteni a dolgot. 64 mérés eredményét átlagoltam (elforgatom a biteket) és így már nagyon szép eredményeket kapok. Néha 1-t mellé mér, de ez annyira nem zavaró. (kb.: 8-10 mérésenként hibázik 1-t) Még gondolkodom, hogy lehetne gyorsabban, pontosabban megkapni az eredményt...
Amúgy az nem is baj, egyfajta szoftveres hiszterézis nem árt.
Hali!
Nekem a következő kezdő kérdéseim lennének: 1. Mi a helyelyes módja annak, hogy nyomógombot/kapcsolót PIC bemenetre kössek? 2. Mi a helyes módja annak, hogy a PIC kimenetéről nagyob tápfeszen, vagy nagyobb áramfelvételű dolgokat vezéreljek? 3. Hogyan tudom a PIC 5V-os tápját "elkülöníteni" a vezérelt egységek tápjától? Valami univerzális módszer érdekelne ezen dolgok megoldására. Az alapfellállás az, hogy 12V-osak a vezérelendő dolgok, 5V-ról megy a PIC. A PIC mondjuk 16F84 vagy hasonló. Csatolok egy rajzot, amit én ügyetlenkedtem össze, csak azért, hogy lássátok a gondolatmenetem. Szerintem túlkomplikáltam a cuccot, és ráadásul nem is múködik
1. Az amit rajzoltál az jó. Vagy felhúzóellenállás a táp felé, és a gomb húzza le a lábat a földre-re, vagy megcserélve a kettő.
2. A pic lábáról egy npn tranzisztort kapcsolsz, aminek az emittere a gnd-n van. A kollektor és a 12V-os táp közé teszed be pl. a relét. A 12V-os és az 5V-os táp földje össze kell, hogy legyen kötve. 3. Ha galvanikus leválasztást akarsz, akkor csak optocsatoló jöhet számításba. Ha a galvanikus leválasztás nem fontos, akkor csak annyi, hogy a pic számára külön állítod elő a tápot, és azt szűröd. A földvezetékeket külön vezeted a két áramkör között, és csak egy ponton (lehetőleg a stabilizátornál) kötöd össze őket. Földvezeték alatt természetesen a táp(ok) negatív vezetéke értendő. Inkább 16F627A-t használj, az olcsóbb.
Köszi a választ, most kicsit megnyugodtam, hogy nem vagyok teljesen béna
Még anyi lenne a kérdésem, hogy van-e értelme a PIC kimenetére biztosítékot tenni, és ha igen akkor mekkorát? Hány mA bír a kimenet?
A PIC kimenetére biztosítékot nem szokás tenni, egyébként az adatlapok leírják, hogy 20mA egy láb terhelhetősége. Biztosíték helyett olyan ellenállást kell választani, amin nem folyhat 20mA-nél több áram. Legtöbb esetben még ennyi áramra sincs szükség, ezért pl. 1kohm-os ellenállásokat szoktunk egy tranyó bázisa elé tenni.
A relé által keltett feszültség impulzusokat(kikapcsolásakor) le kell vezetni egy diódával amit a relé tekercsével párhuzamosan kötsz úgy, hogy normál esetben ne vezessen(katód a pozitívabb pont felé). A gombok bemenetét le szoktuk védeni kondikkal(100n) Kivéve, ha nagyon gyors "gombról" van szó, azaz nem kézzel van nyomkodva, bár az már nem gomb.
Lehet hogy akkor megcserélem a cikk sorrendjét.
Már írtam a második részt a timerekről megszakításokról wdt-ről. De most akkor inkább az előzetesben ígért következő pontot veszem. Különböző hardverek rotary encoderek, billentyűzetek, relék, szilárdtest relék, FET-ek kapcsolása PIC-hez...
Ámen
Valójában már sokat agyaltam, és mindíg a kivezérléssel meg a visszacsatolással van gondom, nem a logikát, hanem a tényleges megvalósítást illetően. Várom a cikket mester :yes:
Köszi, abszolváltam a javallataid a rajzon.
Márcsak egy gondom van, a pirosal bekarikázott rész rögtön kidurran, mikor üzemelnie kéne :no: Azt a részt arra szántam, hogy a PIC input2 (fék) lábán magas jel legyen, ha a féklámpakapcsoló (jobb felső kapcsoló) működésbe lépett (be van nyomva), egyébként pedig alacsony. Hogyan kéne ezt módosítanom? Idézet: „Vagy felhúzóellenállás a táp felé, és a gomb húzza le a lábat a földre-re, vagy megcserélve a kettő.” Erről eszembe jutott, hogy van-e jelentősége, melyiket használom? Nekem az alapból magason elv nem túl logikus. ÁLtalában úgy gondolkozom, hogy alap a 0 és az aktivitást jelzem 1-el.
Ésszerűbbnek érzem én is ezt az új sorrendet!
A megoldás jónak tűnik, de nem teljesen korrekt. Ha azt akarod, hogy a tranyó véletlenül se nyisson ki, akkor kell egy lehúzó ellenállás a bázis és az emiter közé. Ez kb 47k körül jó szokott lenni. Ha még is bekapcsolna a tranyó zavarjelre, akkor ez az ellenállást csökkenteni kell.
Az első rajzodat látva, az a gyanúm, hogy nem vagy teljesen tisztában a tranzisztor működésének, érdemes lenne ezeknek a dolgoknak utána nézned! |
Bejelentkezés
Hirdetés |