Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Segítséget szeretnék kérni, mégpedig van itt ez a kapcsolás: http://tobe.nimio.info/foto/mood_lamp_circuit.png ezt meg építettem, működik is rendesen, de nem power led-del szeretném használni, hanem víztiszta 5 mm-es RGB-vel.Hogyan lehetne rákötni, mivel az RGB közös katódos?Tehát olyasmire gondoltam,ami megfordítja a polaritást.
Esetleg arra nem godoltál, hogy fordítva kötöd be?
Egyébként mire jó ez a kapcsolás?
Lehet rosszul fogalmaztam. A tranyó a katódokat kapcsolgatja, anód van összekötve és rá a pluszra.Nekem pedig olyan RGB-m van, amin csak egy katód van és három anód.Sima 5mm-es 4 lábú RGB.
Nem tudom hogy gondolod.Cseréljem fel egyszerűen a polaritást?Az úgy biztos nem fog menni. Itt a teljes cikk, videó is van hozzá.Egyébként a színeket variálja 4 programban,de alig kell hozzá valami.Nekem nagyon bejött ez a project. http://tobe.nimio.info/led_mood_lamp.php
A kapcsoláshoz annyi hozzáfűznivalóm van, hogy azt valami pancser tervezte. Nincsenek báziellenálások, és a pic tápja sincs szűrve.
Közös katódoshoz az kell, hogy a tranzisztorok kollektorát felkötöd közvetlenül az 5V-ra, és a ledek anódját ellenállásokon keresztül az emitterekre teszed. A katódot meg a gnd-re kötöd.
Köszönöm a megoldást, működik. Van ötleted a bázisellenállásra,hogy mekkorát és hová?
Most, hogy emiterkövető lettt a kapcsolás, nem feltétlenül kell bázisellenállás, de ha beteszel 1k-kat akkor az nem árthat. Hogy hová? A bázis és a PIC kimenete közé. Ezért hívják bázisellenállásnak.
Semekkorát sehová, mert a módosítás után nincs rá szükség, ezért nemis említettem. De ahogy watt írja, tehetsz be 270ohm-1k közöttit védelmi célból, bár felesleges. Ha eddig nem ment tönkre a pic kimenete, akkor ezután sem fog egy eleve kis valószínűséggel előforduló zárlatnál.
Hali!
Egy-két helyen láttam olyan megoldást, hogy az egyik portra rá voltak kötve 7szegmenskijelző katódjai, és emellett még 3-4 kapcsoló is. Én is hasonló dolgot akaraok megoldani, csak portb 4..7-re akarok 4 kapcsolót, és egy lcd 4 adatbitjét. A kérdésem az lenne, hogy működhet-e így a portb megszakítása. Azt nem tudom, hogy hogyan viselkedik a portb megszakítás, ha éppen akkor változik a kapcsoló állapota, miközben írok az lcd-re. Ráugrik-e a megszakításra a pic, mikor a portb 4..7-et ismét bemenetre váltom? 16F628-al dolgozom, meg egy 1*16-os lcd-vel
Ilyenkor a portb megszakítását ki kell kapcsolni, és egyik Timer megszakításból kell megnézni a gombok állapotát 1..10ms időnként, és összehasonlítani az előző kombinációval. Ha eltérés van, akkor lett gomb nyomva vagy elengedve. A potrtb megszakítás egyébként sem való nyomógombokhoz, esetleg csak pergésmentesítettekhez.
Köszi az infót. Most is timeren van, csak nem a portb-n. Arra gondoltam, talán jobb lenne a portb megszakítását is használni, mert timerre mást kellene raknom... Pergésmentesítésnek meg egy-egy 100n van a nyomógombbal párhuzamosan, így nem kell a szoftvernek még azzal is foglalkoznia.
Ha ugyanazon a lábakon akarsz az LCD-vel kommunikálni, akkor azokat a kondenzátorokat onnan el kell távolítanod, és szoftverből megoldani a pergésmentesítést. Valamikor én is csináltam ilyet, soros adatfogadást oldottam meg hétszegmensű kijelző szegmensvezetékein, szépen működik. Az LCD bemenete ha jól gondolom, nagyimpedanciás állapotba megy amikor az RW lába alacsony. Bár az igaz, hogy sosem ellenőriztem le, de ez lenne a logikus. Szóval a négy adatvezetéket felhúzod mondjuk 10k-val a tápra, és a gomb pedig 1k-val lehúzza GND-re. Amikor az LCD-re akarsz írni, akkor kimenetté állítod az RB7:RB4 lábakat, és elvégzed az írást. Azután átváltod ezeket bemenetté, és beolvasod a gombok állapotát. Ezután szoftverből pergésmentesíted (nem egy nagy dolog), és utána ha kell, reagálsz a gombnyomásra.
Idézet: „Azt nem tudom, hogy hogyan viselkedik a portb megszakítás, ha éppen akkor változik a kapcsoló állapota, miközben írok az lcd-re. Ráugrik-e a megszakításra a pic, mikor a portb 4..7-et ismét bemenetre váltom?” Természetesen ez a megszakítás csakis akkór működik, amikór a megfelelő portlábak bemenetként vannak konfigurálva. Tehát csak akkór fog megszakítást kiváltani, amikor visszaváltod bemenetre, és még mindig lenyomva lesz a gomb. Én azt javasolom, hogy a főciklusban kérdezgesd a gombok állapotát. (általában ez elégséges szokott lenni)
A PortB megszakítást is felhasználhatod, főleg ha SLEEP -et is alkalmazól.
Köszi a segítséget. C-ben nem programoztam, de értem mit csinálna a program. Még eldöntöm, hogy hogyan csinálom meg...
pixels
A gombokat hogyan kötöd be, hogy ne zavarja a vonalakat? ellenálással?
OFF-TOPIC hozzászólások törölve.
Kérem, a helyesírásra mindenki figyeljen egy picit jobban! Köszönöm.
igen. 2 ellenállással akarom megoldani, de már csak jövőhét végén. (nem leszek otthon)
Úgy akarom megoldani, hogy kapcsoló egyik vége a testre, másik végére meg 2 ellenállás. Az egyik ellenállás felhúzva tápra, a másik pedig rá a pic és az lcd lábára. Az lcd-vel nem lesz gond (legalábbis remélem), mert az adatbusza bemenetként üzemel.
Én még ilyen megoldáson nem agyaltam(mindig elég lábú PIC-et választok), de működőképesnek látom én is.
Most kezdtem foglalkozni PIC-el!
Hihetetlen tudás van itt fent... Örök hála nektek ezért nagy segítség volt
Engedd meg, hogy megköszönjem, hogy vetted a fáradságot és elolvastad, vagy el fogod olvasni! Ajánlom, még a terminál fórum PIC-es kiemelt topicját is, valamint az égető áramkörökkel foglalkozó topicot is! (az ajánlást Topi által kezdeményezett, a két fórum közötti jó baráti viszonyt kialakító párbeszéd alapján teszem, valamint az információk szabad áramlása érdekében!)
Hello
Lehet, hogy hülye kérdés, meg lehet hogy már 500 ember feltette úgyanezt,de a kérdésem: Milyen nyelven lehet PIC-et programozni, mert én most kezdtem el C nyelvet (félévmúlva kezdem a C++) és ezekel fogok valamire menni, vagy valami mást is kellene hozzá tanulnom?
asm és a C az a két nyelv, amivel érdemes komolyan foglalkozni. A C nyelvből kevés dolog kell a pic-hez, de a szintaktika ugyanaz, mint a PC-re írt C fordítókban. Összességében csak jól jársz a C-vel, de a kontroller programozásához elengedhetetlen az asm nyelv ismerete, mert csak ennek ismeretében lehet a kontroller működését átlátni, illetve vannak esetek, amikor asm-ben kell bizonyos kódrészleteket megírni, amikor a sebesség kritikus tényező.
A C++ nem sok vizet zavar a kontrollereknél, de attól még nem baj, ha jártas benne az ember.
sziasztok nekem is van egy kis NAGY problemam egy pic-el
nemreg kezdtem en is a pic progizast ugy nagyabol egy honapja.igy az elejere ki is talaltam hogy csinalok egy automatizalast egy generatorhoz ez abbol all hogy mikor elveszik az aramot akkor magatol bekapcsol a generator es mikor megjon a feszelj akkor meg kikapcsol!megirtam a progit a pic-hez terveztem aramkort is neki!minden ok naktunt csak mikor rakotottem a 220v-t akkor jottek a gondok!ez a vezerlo 2 db bazi nagy relet kapcsolgat csakhogy mikor kikapcsolja a relet akkor a pic valamiert resettalodik es kezdi a progim elejetol a mukodest ami nagyon nem jo!az lenne a kerdesem hogy hogyan lehetne kikuszobolni ezt az interferenciat vagy mit!elore is koszonom valaszotokat!
Szűréssel és diódával.
Nem tudom, tettél-e diódákat a vezérlés és a relé közé. Ha nem, akkor sürgősen tegyél! A szűrésnek meg használ kondikat, bőségesen, mert a jelek még akár ki is nyírhatják a PIC-edet...
koszike a tanacsot de mar ugy terveztem a panelt hogy stabilizalas elott 2db 2200uf kondit raktam es ugyan igy stabb utan is 2db!van meg az aramkorben kb.4db. 5v-tos rele de azok utan is van vedodioda es meg raadasul van 2db zener is az 5v.ja es ami szepiti a helyzetemet hogy telyesen levan valasztva az aramkor a 220 vonalrol,trafoval meg optokapukal!!ja igen es ezt a nagy relet ami 220v-os egy 5v-os kapcsolgatja!lassan megorulok azthiszem! nem hiszem el hogy itt bukik meg az egesz talalmany!ha van meg valami otletetek akkor nagyon szivesen meghalgatnam es megkoszonem!
A PIC tápjával sorba egy 10ohm körüli ellenállást, és 5,1V-os zenert párhuzamosan vele, közvetlenül a pic lábainál. Majd innen tovább néhányszáz Ωmal a reset lábra, és a reset lábat is 4,7V-os zénerrel megfogni. Mindezt a lehető legrövidebb vezetékkel. Ez pont a nagyáramú mágneskapcsolók szomszédjában lakó picekre lett kitalálva.
A 2200µF-os kondenzátor az nem szűrő, hanem puffer. A szűrő az 100nF-os kerámiakondenzátor, közvetlenül a pic táplábai között, a szabályzó bemenete és a föld, valamint a kimenete és a föld között, szintén közvetlenül a lábaknál.
Sziasztok!
A következő kis progival az a bajom,hogy nem tudom együtt használni a két nyomógombot,mert még az első időzit, addig a másik gombot nem tudom használni! Már ezer féle demo progit kipróbáltam,de egyik sem hasonlít az én problémámra ! Device = 16F628A XTAL = 4 ALL_DIGITAL = True ' Minden portot digitálisra INPUT PORTA output portb ' PORTB kimenet loop: portb= %00000000 gomb2: If PORTa.1 = 1 Then PORTB.1 = 1 delayms 6000 endif If PORTa.0 = 1 Then PORTB.0 = 1 delayms 3000 Endif Pause 2 ' Pause 2mS Goto loop End Mit kell áttírni, hogy akár egyszerre is menjen a két gomb.Ha az időzítőket kiveszem, akkor persze jól működik,de nekem kell az időzítő rész.
Egyrészt az nem időzítés, hanem késleltetés, ami hacsak lehet, kerülendő a programokban.
Használj megszakítást, és akkor működni fog mindkettő. De hogy ezt basicben hogy kell megcsinálni, azt ne tőlem kérdezd!
Tehát rossz uton járok !
Hogyan néz ki ez asm-ben ?
Nem hiszem, hogy kódot fogsz látni potyo-tól(hacsak nincs neki egy véletlenül és könnyű elkülöníteni a többi programrésztől úgy, hogy érthető is legyen), ezért inkább az elvét kell megérteni, és megoldani Basic-ben, amiben egyébként én sem tudok segíteni(pedig a Basic állítólag egyszerű! Amíg nem kell valami húzósabbat megoldani, ami nincs a könyvtáraiban! no mindegy..).
Szóval a lényeg: Beállítasz egy Timert(mondjuk a TMR0-t, vagy az TMR1-est), hogy 50-szer szakítsom meg másodpercenként. Minden megszakításkor megviszgálod, hogy a gombjaid le vannak e nyomva. Ha igen, akkor egy számlálót(egy bájtban lévő érték) elkezdesz csökkenteni. Ha pl. a számlálót 15-re állítottad alapból, (ami 0,3sec időzítést jelent(1/50*15)), akkor a 15. visszaszámlálás után beállíthatod a "GombLenyomva" jelzőt, amit a főprogramodban figyelsz, vagy a megszakításban is lekezelheted rögtön. Ha bármikor a 15 érték lecsökkenése közben a gomb egy pillanatra is(1/50 sec időre) el lenne engedve(prellez), akkor a gombhoz tartozó "GombLenyomva" jelzőt törlöd és a számlálót is visszaállítod 15-re. Ezt a "15-öt" természetesen Te fogod kikísélletezni, hogy mikor jó.
Köszi a választ !
|
Bejelentkezés
Hirdetés |