Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A tranzisztor bekötését nem rontottad el?!
Próbálj meg a tranyóval csak 1-5 LED-et működtetni ( soros ellenállás kötelező!), esetleg PIC nélkül, az 5V-ot közvetlenül az 1 kohmos ellenállásra tenni! Erről jut eszembe: a PIC megfelelő lába kimenetnek van definiálva ( nem a bemeneti felhúzóellenállás okozza a derengő fényt?) ?! Steve
Én körülnéztem, ahol hirtelen tudtam volna ilyesmit, de sehol nem találok. Emlékeim szerint ez az IC nem egy mai csirke, nem biztos, hogy olyan egyszerű lesz beszerezni. Lehet, hogy ha van rá mód, inkább érdemes egy funkciójában helyettesítő, de beszerezhető típusra áttervezni az áramkört.
(Ha valahol találsz Budapesten ilyen IC-t Általad is elfogadható áron, és csak a megvásárlás/posta az akadály, abban tudok segteni, hogy megveszem és elküldöm.)
Szia!
A RET-nél ezt látom: 38-28-15 AD 558JNZ 8-BIT D/A-KONVERTER PÁRHUZAMOS DIP16 AD 3 271,67 Ft Steve
500mA kapcsolására én nem BC337-et használnék. Adatlapja szerint a maximum Ice 800mA, és 500mA Ic-hez 50mA Ib-nél ad meg szaturálási feszültséget (max. 0.7V), továbbá 300mA-nél a Hfe min. 60-as értéke sem túl bíztató. Elképzelhető, hogy egyszerűen kevés ekkora bázisáram (1k soros ellenállásnál ~4.5mA) az 500mA kollektoráramhoz, nem nyit ki rendesen a tranzisztor.
Sajnos egyébként ekkora kollekoráramokhoz általában már (PIC számára) jelentős bázisáramok szoktak kelleni, ezért javasolt darlington kapcsolású meghajtófokozat. Esetleg egy N csatornás teljesítmény FET, pl. IRLZ34, ennek a G-jét közvetlenül (vagy esetleg pártíz ohm-on keresztül) a PIC kimenetére lehet kötni, és 30A-ig használható. A maradékfeszültsége is kisebb, mint egy tranzisztornak, emiatt kevesebb hő keletkezik.
Gyorsan rakerestem a DigiKey-nel erre az IC-re, sok fajtaja letezik, ugyanis van 10-ert, de van 40 euroert is! Tokozasban is elternek, de szerintem masban is, de most ha nem muszaj nem asnam bele magam, helyette itt a link, az adatlapok letolthetok onnan:
DigiKey: AD558 Idézet: „Valószínüleg stabilizált. Leterhelési kisérletet elvégzem de elég jól bírhatja mert még nem volt alkalmam érezni hogy langyosodott volna egyáltalán.” Figyi, ez egy muszaki forum, kodositesekbol itt senki sem ert. Tehat: 1. Mekkora feszultsegeket mersz terhelten es terheletlenul 2. Terheles alatt mekkora terhelest ertesz (wattban vagy amperban..) 3. Milyen zavarszintet tapasztalsz? 4. Mennyi ideig terhelted? 5. A 'langyos' az hany fok? Idézet: „A relé jobb lenne mert ott csak az érintkezőktől függ milyen áramot bírnak kapcsolni viszont hangosak. A tranyók meg halkak.” No meg arrol se feledkezz meg, hogy a relet egy elektromagnes uzemelteti aminek egyreszt joval tobb aram kell a meghajtasahoz, mint egy tranyonak, ugyhogy a meghajtasahoz mindenkeppen kell neked tranyo. Azonkivul a rele tekercse parazita aramokat general amik kivedeset szinten meg kell oldani. Tovabba egy tranyoval tudsz akar dimmelest is megvalositani ha PWM-re kotod, mig ugyanez relevel lehetetlen. Ja, es a rele mechanikai kapcsolo, theat egy ido utan neked egeszen biztosan cserelgetned kell...
4 db LED - et sorbakötve szépen villogtat a tranyó. Kivettem a PIc et és az 1K elé közvetlenül odatettem az 5V - ot. Igy is világítenek a ledek. Viszont ha az izzót tettem rá a tranzisztor után és a tranzisztor bázisa lóg, akkor a tranzisztor felmelegszik. Az izzón keresztül az emitter plust kap és collektoron kerssztül pedig GND - t. Az izzó szintén gyengén ég de a tranyó felfűt.
A bazisnak nem illene lognia, kosd a foldre es nezd meg ugy. Amugy nem ertem, hany wattos az az izzo - elbirja azt a tranzisztor? Es megintcsak: mekkora az a 'forro' - az adatlap szerint az meg rendben van? El tudja diszcipalni?
Szerintem fordítva kötötted be!
Mi az hogy az emitter pluszt kap az izzón keresztül, a kollektor meg GND-t?! Az emitert kösd a GND-re, a kollektort meg az izzóra NPN tranzisztor esetén ( ha nem ment eddig tönkre a tranzisztor!) !
Ezt inkább rajzold már le, légy szíves, mert nekem nagyon homályos, hogy hogy lehet az, hogy "az izzón keresztül az emitter plust kap". Akkor lehet, hogy mégsem jól van bekötve valami?
Sziasztok,
Köszi a segítségeket. Pesten megyek keresztül minden héten szóval meg tudom vásárolni. Olyan IC kellene, aminek a bemenetei párhuzamosak 8 bites, és a tápfeszültsége 5v-os. A tokozása DIP-es legyen. Szóval csak egy bolt érdekelne, ami olcsó és viszonylag értenek is a dolgokhoz.
Ja DAC kellene.A legprofibb olyan lenne, ha 5v-os kimenet mellett rá tudnák kötni egy 100Ohm-os ellenállást. A kimenetén feszültség legyen, ne áram.
Ha C-E felcserélve volt, akkor nem megy tönkre, hanem a fordított áramerősítési tényezővel (vagy mi a szösznek mondják ezt) fog működni, mint egy NPN tranzisztor. Ha jól emlékszem, ilyenkor a Hfe értéke 1-2 körül szokott lenni.
Szerintem ilyenkor a B-C diódát használja, ami ide-oda kapcsolgatva ( érintve!) akár tönkre is mehetett, én csak erre gondoltam!
Steve
Az, hogy a kimenetén mi van, már csak azon múlik, hogy milyen kimeneti illesztőfokozatot építesz mögé. De pl. az első, amit a kereső kidobott a L...x oldalán a DAC0800, 200Ft körüli áron, raktáron van.
Bővebben: Link
Üdv!
Egy 18F452-re akasztottam egy 40MHz-es oscillatort, aminek van enable lába. Az eszköz akksiról megy, az élete nagy részét sleep-ben tölti a PIC. Az a gondom, hogy az osci 15mA-t fogyaszt, ami azért sok ilyen alkalmazásnál. A PIC külső interruptról fog felébredni (RB0..2), meg lehet valahogy oldani, hogy sleep alatt az osci sem működjön? Az működne, hogy az Osco láb kisimításával adnám neki az enable jelet?
Szia Icserny!
köszi a válaszodat, eddig sajna kevesebb időm volt átgondolni mit írtál, de most újra a témán vagyok.De egy valamit még mindig nem értek ugyebár a végső képlet ez lesz: T=(150*i-50*1024)/1024 és a kinken amit küldtél kiválasztom a számomra szükséges matematikai műveleteket, amire kiadja a programkódot. A kérdésem az,h. ki tudnád jobban fejteni,h.mégis hogyan értelmezzem a képleted kontroller szemmel??most ezt hány biten kezeljük vagy egyáltalán hogy értelmezzem(2 regiszterben?)ez nekem még mindig nem tiszta,h.8 bittel és 10 bittel egyszerre mit tok kezdeni és ezzel hogyan kell műveleteket végrehajtani, azaz pl. hogy szorzok össze egy 8bites és egy 10 számot??jó az a kód erre mit a link kiad? Én ugy gondolom,h.nekem 2x8bittel kell majd kezelnem ezeket a műveleteket, de hogy hogyan aazt nem nagyon akaródzik a fejembe menni. köszi
Udv!
Visszaterhetnenk meg egy pillanatra a forraskod "darabolasahoz" (a prg attekinthetosege es tobbszor felhasznalhato modulok keszitese miatt lenne ra szukseg). Hozzaadtam 2 file-t es a linker-t a projektemhez, utvonalak be lettek allitva. Built-re sikeresen felepiti mindegyiket, de a linker fazisnal hibat jelez. Nagy keres volna, hogy valaki csatoljon egy barmilyen egyszeru, assembly, egynel tobb forrasfile-bol allo programot, hogy megnezhessem hogyan neznek ki formailag a file-ok, lefut-e nalam, azaz a programomban van hiba, vagy a linkeres osszekapcsolasban stb. Kosz.
Miert nem kristalyt akasztasz a PIC-re? A PIC-nek van oszcillatora csak kell neki a kristaly. Ez a belso oszcillator alvo allapotban nem megy, tehat gyakorlatilag nem fogyaszt - cserebe van egy kis kesleltetes ebredeskor, nezd meg az OST-t az adatlapban.
Amugy jomagam is sokat szoktam vacakolni mire minden periferiat sikerul elaltatnom, osszes bemeneten ahol nincs belso felhuzo ellenallas vagy kulsot ratenni vagy alvas elott kimenetre kapcsolni - mar ha az lehetseges es akkor is ki kell talalni alacsony vagy magas a jobb fogyasztas szempontjabol. Idézet: „Az az érdekes, hogy a ccs az output_float(port)-al emel fel elméletileg egy adott port-ot” Nem portot, hanem pin-t, s nem felemeli, hanem lebegő (tri-state) állapotba, vagyis input módba kapcsolja. Ezzel nem csoda, hogy nem gyulladt fel a LED... Idézet: „output_bit(PIN_B2)” Ez így hibás, kell egy második paraméter, 0 vagy 1! Ezen kívül output_low(pin), output_high(pin), output_toggle(pin) állítja az adatbiteket. output_float(pin) és output_drive(pin) állitja a TRIS biteket. output_x(adat) beírja az adatot az x(=A,B,C...) portra.
Köszi mindenkinek a segítséget. Figyelmetlen voltam. Fordítva volt bekötve a tranyó.
Idézet: „Én ugy gondolom,h.nekem 2x8bittel kell majd kezelnem ezeket a műveleteket” Így van. Minden bemenő és kimenő adatot két-két bájban kell tárolni. Az ADC eredményét is két SFR regiszterből kell kiolvasni (a jobbra igazított kiemenetet célszerű választani). A képletben szereplő konstansok kétbájtos alakja hexadecimálisan: 150 = 00/96 50*1024 = C8/00 Az általam korábban adott linken található szubrutinoknál le van írva, hogy hova kell pakolni a szorzandókat és hol találod meg az eredményt. Utána már "csak" a stringgé alakítással kell megküzdeni, az is szép feladat lesz...
Sziasztok!
Van két kérdésem: 1. Az MPLAB-ban, hogyan tudom figyelni a definiált regisztereknek (REG_X: PRECISION, REG_Z: PRECISION) a tartalmát? 2. Hogy tudnám átalakítani ezt a programot úgy, hogy én adjam meg a REG_X és REG_Z értékeit? list p=16F690 ; list directive to define processor #include #define PRECISION 2 ; byte size for registers errorlevel -302 ; suppress message 302 from list file __CONFIG _CP_OFF & _CPD_OFF & _BOR_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _FCMEN_OFF & _IESO_OFF M_STOR_STATUS macro WHERE movf STATUS,w movwf WHERE endm M_RETR_STATUS macro WHERE movf WHERE,w movwf STATUS endm cblock 0x20 REG_X: PRECISION REG_Y: PRECISION REG_Z: PRECISION REG_COUNTER REG_STATUS REG_T1 REG_T2 REG_ROT_COUNTER endc org 0x0c M_ADD ; Z + X -> Z bcf STATUS,C clrf REG_STATUS clrf REG_COUNTER M_ADD_loop clrf REG_T1 btfsc REG_STATUS,C incf REG_T1,f clrf REG_STATUS movlw REG_X addwf REG_COUNTER,w movwf FSR movf INDF,w addwf REG_T1,f btfsc STATUS,C bsf REG_STATUS,C movlw REG_Z addwf REG_COUNTER,w movwf FSR movf INDF,w addwf REG_T1,f btfsc STATUS,C bsf REG_STATUS,C movf REG_T1,w movwf INDF incf REG_COUNTER,f movlw PRECISION subwf REG_COUNTER,w btfss STATUS,Z goto M_ADD_loop return END Köszi!
Idézet: „1. Az MPLAB-ban, hogyan tudom figyelni a definiált regisztereknek (REG_X: PRECISION, REG_Z: PRECISION) a tartalmát?” A Watch ablakban hozzáadod a REG_X szimbólumot, majd a szimbólumra jobb gombbal kattitva beállítod a tulajdonságait (16 bites, és Low:High byte order). A byte order (hogy a helyiértékek milyen sorrendben vannak) az alkalmazott eljárások függyvénye. Felületes ránézésre úgy tűnik, hogy REG_X-be kell az alacsony helyiértékű bájt, s REG_X+1 rekeszbe a magas helyiértékű bájt. Ha nem így lenne, majd észre fogod venni az első összeadás után... Idézet: „hogy én adjam meg a REG_X és REG_Z értékeit” A túl általánosan megírt szubrutinok indirekt címzést használnak. Kevésbé elegáns (és benszülött ), de egyszerű megoldás: REG_X-be írod az egyik bájtot, majd REG_X+1-ve írod a másik bájtot. Valahogy így képzelem:
Szia.
Ok. Köszi, de nekem az a gond, hogy a watch ablakban az "Add Symbols" gomb inaktív, így nem tudok semmit se hozzáadni. Köszi
Nagy segitseg az lenne ha mikor azt irod hibauzenet be is idezned, hgy mi az az uzenet No meg nem artana tudni azt sem milyen nyelven programozol, asm?
Először is a programodat hozd lefordítható állapotba.
pl. ehelyett
írd ezt.
Ja, lehet, hogy ez volt, csak nem {code=asm}-mal szúrtad be?
Ok, így írtam:
#include de még így sem akar működni...még mindig inaktív az Add Symbols gomb. És az elöbbit így gondoltad: M_ADD_loop clrf REG_T1 btfsc REG_STATUS,C incf REG_T1,f clrf REG_STATUS movlw 0x96 movwf REG_X movlw 0x00 movwf REG_X addwf REG_COUNTER,w movwf FSR movf INDF,w addwf REG_T1,f btfsc STATUS,C bsf REG_STATUS,C movlw 0x36 movwf REG_Z movlw 0x10 movwf REG_Z addwf REG_COUNTER,w movwf FSR movf INDF,w addwf REG_T1,f btfsc STATUS,C bsf REG_STATUS,C movf REG_T1,w movwf INDF incf REG_COUNTER,f movlw PRECISION subwf REG_COUNTER,w btfss STATUS,Z goto M_ADD_loop return Köszi. |
Bejelentkezés
Hirdetés |