Fórum témák

» Több friss téma
Fórum » Résopto programozása assemblerben
Lapozás: OK   1 / 1
(#) csanyipal hozzászólása Márc 15, 2010 /
 
A Nulláról a robotokig - PIC Mikrovezérlők II rész című cikkét követem.
Egyetlen résoptót csatoltam a PIC16F877A RA2 lábára oly módon, hogy akkor kapok logikai 1-est a lábra, ha a résoptó nincs lezárva.
A következő kóddal próbálkozom.
  1. LIST P=16F877A
  2.         #INCLUDE "P16F877A.INC"
  3.         __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
  4.         ORG     0
  5. START
  6.         BCF     STATUS,RP1                      ;Bit Clear file, azaz   RP1=0
  7.         BSF     STATUS,RP0                      ;Bit Set file, azaz             RP0=1
  8.         MOVLW   0x06                    ;6 -ot a Work regiszterbe
  9.         MOVWF   ADCON1                  ;Mindegyik PORTA digitalis
  10.         MOVLW   B'00011111'
  11.         MOVWF   TRISA                   ;PORTA bemenet lesz
  12.         MOVLW   B'00000000'
  13.         MOVWF   TRISD                   ;PORTD kimenet lesz
  14.  
  15.         BCF             STATUS,RP0              ;BANK0 -ba atkapcsolunk: 00
  16.         MOVLW   B'00000001'             ;bekapcsoljuk az elso LED-et
  17.         MOVWF   PORTD
  18.  
  19. MAIN
  20.         BTFSS   PORTA,2                 ;ha az RA2-es labra kapcsolt optikai reskapu nincs lezarva
  21.                                                         ;(logikai 1-et jelez), akkor atugorja a kovetkezo sort
  22.         BCF             PORTD,0                 ;bekapcsolja az elso LED-et
  23.         GOTO    MAIN                    ;visszaugrunk a program fo reszenek elejere

A gond az, hogy nem reagál a résoptó lezárására, ekkor ugyanis el kellene aludnia a LED-nek.
Többször is ellenőriztem a bekötést a próbatáblámon, minden, még a program is jónak tűnik.

Mi lehet a gond?
(#) csanyipal válasza csanyipal hozzászólására (») Márc 15, 2010 /
 
Idézet:
„BCF PORTD,0 ;bekapcsolja az elso LED-et”

Elnézést, ez elírás volt, a helyes magyarázat:
;kikapcsolja a LED-et
(#) potyo válasza csanyipal hozzászólására (») Márc 16, 2010 / 4
 
Pedig ez jónak tűnik. Műszerrel mérve lemegy 1V alá a feszültség a lábon?
(#) Hp41C válasza csanyipal hozzászólására (») Márc 16, 2010 / 4
 
Szia!

Nézd meg, hogy a résopto led-je kap-e elég áramot (nincs véletlenül fordítva bekötve).

Szia
(#) csanyipal válasza potyo hozzászólására (») Márc 16, 2010 /
 
Idézet:
„Műszerrel mérve lemegy 1V alá a feszültség a lábon?”

Papírt téve a résoptóba nem esik le a feszültség 1 V alá, hanem marad 5,03 V-on.
Idézet:
„Nézd meg, hogy a résopto led-je kap-e elég áramot (nincs véletlenül fordítva bekötve).”

4,88 V -ot kap a résoptó LED-je.
(#) proba válasza csanyipal hozzászólására (») Márc 16, 2010 /
 
Ha az opto leden 3V felett mérsz szerintem kuka vagy fordítva kötötted be.
Amíg a papír behelyezése után nem változik a kimenet addíg a PIC sem fog semmit csinálni. (a ledhez ill. a tranzisztorhoz tettél ellenállást?)
(#) csanyipal válasza (Felhasználó 15355) hozzászólására (») Márc 16, 2010 /
 
Akkor elmondnám, hogyan kötöttem be a KTIR0121DS jelzésű optikai réskaput.

A tokozáson
a (D+) a dióda (D láb a negatív, + láb a pozitív),
az (E+) a tranzisztor (E láb az emitter, a + láb a kollektor). Nem?

A dióda bekötése:
+ láb -> 220 Ohm -> +5V
D láb -> GND

A tranzisztor bekötése:
+ láb -> +5V
E láb -> 10 K Ohm -> GND
és itt a 10K ellenállás és a GND között vezettem el a PIC RA2 lábához a huzalt.
(#) Hp41C válasza csanyipal hozzászólására (») Márc 16, 2010 / 4
 
Szia!

Pont fordítva használod, mint szokás.... Ha a ledje belevilágit a fototranzisztorba, akkor kellene az RA2 bemenetednek magasra mennie, ha a fényi útjában akadály van, akkor kellene 0-ra mennie.

- A kimeneti darlington telítődési feszültsége (C-E saturation voltage) 1V miatt nem megy feljebb a feszültség...
- Átkötném a kimenetet. A E menjen a földre, az E oldali + a 10k -val a tápra - innen menjen a RA2-re.

Szia
(#) kiborg válasza csanyipal hozzászólására (») Márc 16, 2010 / 4
 
A diódád jól van bekötve.
De az opto tranyót én így kötném:
E lábat a GND-re, a + lábat felhúzóellenállással +5Vra (jó a 10k is, de 4,7k talán jobb lenne a határozottabb és gyorsabb működésért)
Az ellenállás és a + láb közös pontját vidd a PIC-re.
Állandóan alacsony szint lesz, kivéve, ha papírlapot raksz közé, akkor magas szint. Tehát invertálnod kell, de gondolom ez nem gond.

Kiborg
(#) kiborg válasza Hp41C hozzászólására (») Márc 16, 2010 /
 

Na ez is ritka egyszerre ment.


Biztos vagy benne hogy úgy működik,ahogy TE leírtad (a normális bekötés mellett) ?
De a bekötésed stimmel.
(#) Hp41C válasza kiborg hozzászólására (») Márc 16, 2010 / 4
 
Szia!

A mostani bekötés szerinti működést írtam le. Így minden működik, ha megvilágítja a led, akkor nyit a tranzisztor és felhúzza az ellenálláson a feszültséget. A darlington nagy telítődési feszültsége miatt nem tud a táp -1V fölé menni. Ha nincs megvilágítás, a tranzisztor zár, az ellenálláson a feszültség leesik majdnem 0V-ra (szivárgási áram...). Ez a megoldás nem jó, mert a kialakuló magas szint nem elég a PIC-nek.

Javasoltam az ellenállás és a fototranzisztor felcserélését, akkor a megvilágított esetben lesz alacsony a kimenet. Igazad van - lehet, hogy a programban invertálni / lefutó - felfutó élet cserélni kell.

Szia
(#) kiborg válasza Hp41C hozzászólására (») Márc 16, 2010 / 4
 


Akkor bocsi,félreértettem.



De ő meg pont azt írja, hogy a PIC lábán nem esik a fesz 5Valá, nem hogy 1V és 0V között lenne...
Idézet:
„Papírt téve a résoptóba nem esik le a feszültség 1 V alá, hanem marad 5,03 V-on.”


Meg a másik mondat amit nem értek:
Idézet:

A tranzisztor bekötése:
+ láb -> +5V
E láb -> 10 K Ω -> GND
és itt a 10K ellenállás és a GND között vezettem el a PIC RA2 lábához a huzalt.


Ez mit is jelent ? A GND van tovább víve a PICre ? Akkor hogy van ott 5V ?

Kiborg
(#) Hp41C válasza Hp41C hozzászólására (») Márc 16, 2010 / 4
 
Szia!

Nagy szerencse, hogy a RA2-t kell meghajtanod ezzel az optocsatolóval - ez a láb TTL bufferrel rendelkezik. Itt a magas szint minimuma 2.0V, az alacsony szint maximuma 0.8V. Egy Schmitt ttriggeres bemenet nem működne sehogy sem ezzel a típussal. A Schmitt triggeres bemenetnél a magas szint minimuma 0.8*Vdd=4.0V, az alacsony szint maximuma, 0.2*Vdd=1.0V. Az emitter és föld közötti ellenállással a magas szint túl alacsony, a kollektor és a táp közötti ellenállással az alacsony szint túl magas...

Ajánlanám a TCST1000 vagy a TCST2000 típusokat, a kimenetük szimpla tranzisztor, a telítődési feszültségük csak 0.4V

Szia
(#) csanyipal válasza Hp41C hozzászólására (») Ápr 2, 2010 /
 
Elég nehéz az elemek beszerzése errefelé.
Nem kaptam TCST1000, sem TCST2000 résoptót, csak néhány TCST 1030 -as résoptót a rövid lábú típusból. Bárcsak az L jelzésűt kaptam volna meg, a hosszabb lábakkal. Az első szellő kibillentené a résoptót a próbatábláról, ahova be lett szúrva. Mindegy, forrasztottam a négy lábára hosszabbító huzalokat. A tokozáson nincs sem E, sem D jelzés.
Egyébként arra már rájöttem, hogy a résoptókon a D nem dióda, hanem Detector, és az E nem a tranzisztor emittere, hanem Emitter, vagyis az infravörös fényt kibocsátó LED. Én pont fordítva értelmeztem a résoptót: a diódát néztem a fotótranzisztornak, és vica versa.
Letöltöttem a TCST 1030 résoptó adatlapját, és így már világos, hogy melyik a dióda és a tranzisztor, még ha nincs is rajta E, és D jelzés.
Most tehát a következőképpen kötöttem be a PIC áramkörbe a résoptót.
Dióda:
- katód a GND-re földelve,
- anód 220 Ohm ellenáláson át a +5V-ra kapcsolva.
Fotótranzisztor:
- kollektor 10 KOhm ellenálláson át a +5V-ra kapcsolva, és a kollektor és ellenállás közös pontjából vezetem a huzalt a PIC PORTA RA2-es lábára,
- emitter a GND-re földelve.
A PIC nem reagál a résoptó lezárására.
Ennek a résoptónak a telítődési feszültsége VCEsat = 0,8V.
Egyébként nincs lehetőségem ellenőrizni, hogy világít-e infravörös fénnyel a résoptó LED-je.
Mutiméterrel ellenőriztem a résoptók LED-jét, de egyik irányban sem vezetik az áramot, azaz mindkét irányban az ellenállásuk végtelen nagy.
Na, vagy nincs szerencsém, vagy sok még a tanulnivalóm az elektronikában.
Tanácsotok van-e?
(#) bbalazs_ válasza csanyipal hozzászólására (») Ápr 2, 2010 / 4
 
Van. Az infraledet pl. mobiltelefon, digi fenykepezo vagy video kamerajanak rairanyitasaval ellenorizheted. (Elotte probald meg egy biztosan mukodo taviranyitoval - csodat fogsz latni
Itt a resnel kicsi a feny, igy sotetben nezegesd.

A bekotes jonak tunik, ha ugyanazt ertjuk anodon es katodon. A kis nyil szelesebb talpa mutat a +, a nyil hegye, ami a keresztbevonalban folytatodik, a minusz fele.

A diodat multimeterrel DIODA allasban kellene merni, bar sok ertelme nincs az ellenallasnak. (altalaban a 2K-s mereshatarnal van az olcsobb tipusoknal).

Szerintem az elso mereseknel a PIC-et hagyd ki a jatekbol, a resoptonak mukodnie kell anelkul is. A feszultseget nezd az ellenallas also pontjan.
(#) csanyipal válasza bbalazs_ hozzászólására (») Ápr 2, 2010 /
 
Nincs infravörös kamerám (se mobiltelefon, se digi fényképezőgép, se videó kamera).
Idézet:
„A diodat multimeterrel DIODA allasban kellene merni..”
Igen, így mértem.
A bekötés, vagy inkább az egész áramkör képe itt megtekinthető:
Bővebben: Link
Idézet:
„Szerintem az elso mereseknel a PIC-et hagyd ki a jatekbol, a resoptonak mukodnie kell anelkul is.”
Nagyszerű, csak már látnék valami eredményt!
Idézet:
„A feszultseget nezd az ellenallas also pontjan.”

Ezt bővebben elmagyaráznád?
Ugyanis mértem az 10 K Ohmos ellenállás résoptóhoz közeli végén 4,80 V-ot, míg az 10 K Ohmos ellenállás +5 V -hoz közeli végén 4,84 V-ot.
(#) kobold válasza csanyipal hozzászólására (») Ápr 2, 2010 / 4
 
Ha biztos vagy abban, hogy a diódát (azaz a bemeneti oldalt) mérted, és egyik irányban sem vezetett, akkor ott baj van. Adatlap szerint 1.25 V körül van a tipikus feszültségesése, azt diódavizsgáló módban mindenképpen látni kellene. Amit írtál, az alapján viszont szakadt a dióda; középértékekkel számolva kb. 17 mA folyna át rajta, az nem tehetné tönkre. Én szétnéznék a panelon, nincs-e véletlenül áthidalva (rövidre zárva) az az előtétellenállás egy 5 V-os vonalhoz, mert ha igen, az valószínűleg az első bekapcsoláskor megsüti a bemeneti oldalt.
Forraszd ki, ha máshogy nem megy, és tegyél bele egy hagyományos (mondjuk piros) ledet, polaritáshelyesen. Ha az működik, mérd meg az áramát, és ha ez is rendben van (15 ... 16 mA körül), akkor vagy mégiscsak fordítva kezeled azt az optót, vagy vettél egy hibás szériát, vagy tönkrement beépítés és tesztelés közben.

Iletve, a PIC-et bele se tedd addig, amíg nem tisztázódik a helyzet.
(#) csanyipal válasza kobold hozzászólására (») Ápr 5, 2010 /
 
Ismét összezavart engem az adatlap, a TCST1030 adatlapja. Hihetetlen, milyen pontatlanul ábrázolják pont azt, hogy melyik oldalon áll a dióda, és melyik oldalon a fotótranzisztor. Igazán odaírhatnák, hogy az adott ábra felülnézetben van-e, vagy alulnézetben. Most azonban tényleg megvan az optikai réskapu diódája! A forrasztásmentes próbatáblámra beszúrva az alkatrészeket az alábbi kapcsolási rajz szerint, de nem elvezetve a PIC RA2, és RA3-as lábaira a jelet, váltakozik a feszültség, ha zárom, vagy nyitom az optikai réskapukat egy alufóliával becsavart papírral!
A résoptó nyitott állapotában a feszültség 0,09V, zárt állapotában 4,56V.
Na, most csak azt nem tudom, hogy a PIC16F877A RA2-es, és RA3-as lábának ezek a feszültségek megfelelnek-e?
(#) gabi20 válasza csanyipal hozzászólására (») Ápr 5, 2010 / 4
 
Bár az RA2 és RA3 lábak nem schmidt triggeressek, szerintem ezek a feszültségek bőven megfelelnek.
(#) csanyipal válasza gabi20 hozzászólására (») Ápr 5, 2010 /
 
Idézet:
„Bár az RA2 és RA3 lábak nem schmidt triggeressek, szerintem ezek a feszültségek bőven megfelelnek.”

Működik!
  1. LIST P=16F877A
  2.     #INCLUDE "P16F877A.INC"
  3.     __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
  4.  
  5.     ORG     0
  6.  
  7. START
  8.     BANKSEL ADCON1      ;atkapcsolunk BANK1-re: 01
  9.     MOVLW   0x06        ;beallitjuk ADCON1 3-0 bitjeit  (PCFG <3:0> 011x
  10.     MOVWF   ADCON1      ;beallitjuk ADCON1 nyolc bitjet (AN7-AN0) digitalis be/kimenetre I/O
  11.     MOVLW   B'00011111'
  12.     MOVWF   TRISA       ;PORTA bemenetre allitva
  13.     MOVLW   B'00000000'
  14.     MOVWF   TRISD       ;PORTD kimenetre allitva
  15.  
  16.     BCF     STATUS,RP0  ;atkapcsolunk BANK0-ra: 00
  17.  
  18.     MOVLW   B'00000000' ;kikapcsoljuk a LED-eket
  19.     MOVWF   PORTD
  20.  
  21. MAIN
  22.     BTFSC   PORTA,2     ;atugorja a kovetkezo parancsot, ha
  23.                         ;a PORTA RA2 labhoz csatolt resopto
  24.                         ;fototranzisztoranak kollektora
  25.                         ;logikai 0-at ad nekunk, mert a res nyitott
  26.     BSF     PORTD,1     ;bekapcsolja a PORTD 2. LED-jet
  27.     BTFSS   PORTA,2     ;atugorja a kovetkezo parancsot, ha
  28.                         ;a PORTA RA2 labhoz csatolt resopto
  29.                         ;fototranzisztoranak kollektora
  30.                         ;logikai 1-et ad nekunk, mert a res zart
  31.     BCF     PORTD,1     ;kikapcsolja a PORTD 2. LED-jet
  32.     GOTO    MAIN
  33.  
  34. END

Ezzel a programmal ha zárom a résoptót, akkor világít a PORTD 2. bitjáhez csatolt LED, ha meg nyitom a résoptót, akkor elalszik a LED.
Köszönöm szépen a segítségeteket!
(#) Attila86 válasza csanyipal hozzászólására (») Ápr 5, 2010 1 /
 
Idézet:
„BSF PORTD,1 ;switch on the 1. LED of PORTD”

Idézet:
„BCF PORTD,1 ;switch off the 1. LED of PORTD”


Portról mindig PORTx-el olvasunk, írni pedig LATx-el írunk!
(#) csanyipal válasza Attila86 hozzászólására (») Ápr 5, 2010 /
 
Idézet:
„Portról mindig PORTx-el olvasunk, írni pedig LATx-el írunk!”

Megkérlek, hogy mutasd be ezeket a parancsokat e téma példáján!
(#) cszotyi válasza Attila86 hozzászólására (») Ápr 5, 2010 / 4
 
Helló!
A PIC 16F877A-nak és a többi 16-os PIC-nek nincs LATX regisztere, az csak a 18-asoknak van.
(#) csanyipal válasza gabi20 hozzászólására (») Ápr 5, 2010 /
 
Köszönöm szépen a megoldáshoz vezető segítő válaszaitokat!
(#) csanyipal válasza csanyipal hozzászólására (») Ápr 7, 2010 /
 
Idézet:
„Most azonban tényleg megvan az optikai réskapu diódája!”

A TCST1030 optikai réskapu diódája a résnek azon a felén van, amelyik nyitott felülről, a fotótranzisztora pedig a felülről zárt felében van.
A dióda anódja, és a fotótranzisztor emittere azon a felén van, amelyet alulról a kis pöcök jelez.
(#) csanyipal válasza csanyipal hozzászólására (») Ápr 11, 2010 /
 
Idézet:
„A TCST1030 optikai réskapu diódája a résnek azon a felén van, amelyik nyitott felülről, a fotótranzisztora pedig a felülről zárt felében van.”

Viszont a TCST1030 adatlapján fordítva van! Akkor mi az igazság? Miért nem működött akkor, amikor az adatlap szerint kötöttem be, és miért működik a már említett - sikeres - bekötés szerint, ami viszont ellentmond az adatlapnak?
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem