ınfrared verici

Başlatan hasanb, 01 Kasım 2011, 21:55:58

hasanb

hocam paylaşımlar için tşkler sizden öğrendim pbp yu allah razı olsun sizin dersleriniz sayesinde geliştirebildim kendimi.Hocam aşağıda verdiğim resimde devreyi delikli plakete kurduğum zaman çalışmıyor ancak proteusta çalışıyor. Devreyi delikli plakette çalıştırdığım zaman devrede hiç bir hareketlilik yok Ir ledi heriki şekildede bağladım ama çalışmadı cep telefonu kamerası ile izlediğimde hiçbir ışık sinyali alamıyorum.

2 devrede ise benim kumanda ile çalışmıyor ancak başka kumandalar ile denediğimde hepsinde çıkış alıyorum.

Yapmak istediğim  tk19 ile MİKROİŞLEMCİNİN portb çıkışlarının diğer MİKROİŞLEMCİDEN GELEN kodlarla çıkıs vermesi.Devreyi bir form sitesinden aldım pbp kodlarınıda ekliyorum yardımcı olursanız. cok sevinirim.


VERİCİ:

' bu programın ID'si 25 ve ADDRESS'si ascii 49(1) dir.
' program yukarıdaki bilgiler ile birlikte 0-255 arasındaki
' ascii karakterleri PORTA.0 portundan seri olarak göndermektedir.
' PORTB.3 portundan 38461 hz lik taşıyıcı sinyal üretmektedir.
TRISB.3 = 0  ' CCP1 (PortB.3 = Output)
PR2 = 25     ' Set PWM Period for

'approximately 38KHz
CCPR1L = 13  ' Set PWM Duty-Cycle to 50%
CCP1CON = %00001100  ' Select PWM Mode
T2CON = %00000100    ' Timer2 = ON + 1:1

prescale
CMCON=7

ADDRESS   VAR BYTE
DAT   VAR BYTE
tx   VAR BYTE
ADDRESS   = 49
tx   = 25

BEGIN:
   FOR DAT = 0 TO 255
       SEROUT PORTA.0,0,[tx,ADDRESS,DAT]
       PAUSE 100
          NEXT
    GOTO BEGIN

-----------------------------------------------------------------------------------------------------------------------------------------------------------


ALICI:

' bu programın ID'si 25 ve ADDRESS'si ascii 49(1)

'dir.
' program PORTA.0 portundan gelen bilgide ID=25 bilgisini aldıktan sonra
' alınan bilgiyi PORTA.1 portundan seri olarak PC veya
' herhangi bir seri alıcıya

'iletmektedir.
CMCON=7
TRISB=0
ID CON 25     'Establish synchronization byte
BAUD  CON 396    'NON INVERTED 2400 baud (MAX)

DAT VAR byte   'Data storage variable
ADDRESS VAR BYTE


BEGIN:
SERIN2 PORTA.0,BAUD,[WAIT(ID),ADDRESS,DAT]


SEROUT2 PORTA.1,396,[ADDRESS," ",DEC DAT," ",DAT,13]
PORTB=DAT 'PORTB UZERİNDEKİ LEDLER BINARY OLARAK

'KONTROL EDİLMEKTEDİR.
GOTO BEGIN
-------------------------------------------------------------------------------------------------------------------------------------------

ete

Şemaya bakılırsa TK19 bacaklarını yanlış kullanıyorsun. Ondan çalışmıyordur.
Soldan sağa doğru TK 19 bacakları (veya benzeri IR gözlerin hepsi)  GND/+5V/Out (Data) şeklindedir. Sende besleme bacakları ters gözüküyor.
MUhtemelen TK19'u da bu şekilde bozmuş olmalısın. Eskisi ile bacakları düzelterek dene olmaz ise yenisini almanı tavsiye ederim.

Ete

hasanb

Hocam alıcıyı değiştirdim ama sorunum mikro işlemcimden 38 khz ve data çıkışını birlikte nasıl alıcam onu bilmiyorum. 1. Şekildeki bağlantıyı yapınca hiç gözlem

olmuyor.ama tek data bacağını portb.3 değilde şaseye gnd ye bağlayınca çalışıyor.ır led yanıyor ama 38 khz üretemiyoruz.ledin +bacağını portb.3 ve gnd ile ikisi

arasına 47 ohm direnç attım.Hiç sinyal alamadım.direnci kaldırıp bağlayınca cep telefonu kamerası ile çok az gözle nerdeyse görülemeyecek kadar sinyal alıyorum.

sorunum:Benim yaptığım kumandadan 38khz de data göndermek. alıcı gözünde bunu algılayıp çıkış vermesi. sizin elinizde böyle bir devre var ise pıc 16f628 ile

yapılmış buraya koyabilirmisiniz yada ürete bilme yollarını yazabilirmisiniz. şimdiden tşkler.

pwm.c

bende bu bağlantıyla IR sinyal ile data taşımıştım. sanırım sen config sorunu yaşıyorsun. proteusta çalışıyorsa gerşektede çalışır.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

hasanb

#4
Bir iki devre daha buldum ama maliyet artmasın diye 1. şekli tercih ediyorum.Şimdi eklediğim şekillerinde çalışıp çalışmayacağını bilmiyorum yarın deneyeceğimi Allah'tan malzemeler var. Sizce eklediğim devre çalışır mı, eksiklik var mı ? lm555 yerine ne555 kullansam sorun olurmu.

ete

Son bulduğun şemalar doğru. Birincisi teorik şema ve 38 KHz lik taşıyıcı sinyal üzerine nasıl data bindirileceğini gösteriyor.
İki girişli bir AND kapısının girişlerinden birisine 38Khz lik kare dalgayı diğerinden de taşınacak yada iletilecek data bilgisini girersen AND kapısının çıkışından yollanacak bilgi sinyalini elde edersin. Bu sinyalin şekli aşağıdaki şekildedir.

38 Khz lik sinyal bir 555 kullanılarak elde edilebilir. NE555 de aynı şey sonuçta üreticisi farklı olan bir 555 timer entegresidir işini görür. Aynı işi pic'e de yaptırmak mümkün. Basitçe yapmakiçin bir HPWM çıkışı kullanılabilir. BUna data bindirmek için ,
Data bilgisi LOW olunca HPWM sinyali kesilir ve pinden LOW çıkartılır. Data sinyali HIGH olunca HPWM sinyali %50 Duty değeri ile aktif edilir ve aktivasyon HIGH süresi kadar devam ettirilir. Enbasit şekilde böyle yapılır.
Burada önemli olan 38 Khz lik sinyalin Pic ile elde edilmesi olacaktır. Bunun başka yollarıda vardır elbette ilk aklıma gelen bu oldu.

Ete


hasanb

Saol hocam teşekkürler. Devreyi deneyeceğim yanıt alırsam sizi haberdar ederim yarın görüşmek dileği ile iyi akşamlar.

hasanb

hocam ınfrared verici çalıştı.tk19 da algıladı. yani benim yaptığım verici 38khz üretiyor. tk19 un çıkışına led bağladım sürekli yanarken sinyal gönderince yanıp sönüyor. şimdi tek sorun kaldı. data aktarımı :) yaptığım devrede data gönderiyor ki led yanıp sönüyor olmalı. Tk19 u alıcı pin girişine bağladım hiç birşey olmadı acaba tk19 için ayrı program satırımı var? yada benim yazdığım komut yeterli de benmi yanlışlık yaptım. tk19 pıc e bağlama şeklinide aşağıda verdim. sorun ne     olabilir bilmiyorum program ilk verdiğim kutuda yardımcı olursanız sevinirim.

ete

Yanlış hatırlamyorsam Data olarak ne yolluyorsan alıcıda tersin alırsın. Ayrıca Alıcı da ledleri yaktıracak olan değer vericiden DAT değişkeni ile yollanan değerdir. Vericiye bakarsan 0-255 arasında döngü kurularak alıcıya Dat değeri yollanmaktadır. Alıcıda aldığı bu  değerlere karşılık ledleri yakıp söndürmektedir.
Kısaca dat değerine ne verirsen alıcıda ona uygun olarak ledleri yakmaktadır.
Vericide döngüyü kaldırıp;
BEGIN:
   DAT=3
       SEROUT PORTA.0,0,[tx,ADDRESS,DAT]
       PAUSE 1500
         
    GOTO BEGIN

şeklinde bir komut yazıp yolla bakalım alıcıda ilk iki ledin yanması gerek.

Ete

hasanb

TMM HOCAM YARIN DENEYİM SİZE HABER VERİRİM ANCAK İYİ AKŞAMLAR

hasanb

#10
hocam gene çalışmadı  :-\ devrede tık yok. Acaba yanlış komut felan mı yazdım anlamadımki teorik çalışıyor ama pratikte çalışmıyor.tk19 dan veri okuyamıyorum. yardım lütfen.

ete

Bu aşamada benim yapabileceğim fazla bir şey yok. Ne devre bana ait ne de programlar bana ait.
Bilinmeyene uzaktan müdahale etmeye çalışıyoruz ama sonuç olumlu değil.
Sen en iyisi elindeki program ve similasyon dosyalarını buraya yükle bonlarla çalışarak bakayım. Başka türlü olmayacak.

Ete

pwm.c

bence alıcı devren, vericiden gelen sinyalleri yakalayamıyor olabilir. oradaki pause gecikmesini silip butona basılı tuttuğun sürece komut sürekli gitsin.
ikincisi çok gerekli değil ama ledin yönünü ters çevir ve oradaki direncin değerini çok düşük kullan. 47ohm ve altında.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

hasanb

hocam yükledim devreyi gösterdim birdaha yükleyim bakın devrem IR.JPG de görüldüşü gibi şeması bu programıda şu:

verici:

TRISB.3 = 0  ' CCP1 (PortB.3 = Output)
PR2 = 25     ' Set PWM Period for

'approximately 38KHz
CCPR1L = 13  ' Set PWM Duty-Cycle to 50%
CCP1CON = %00001100  ' Select PWM Mode
T2CON = %00000100    ' Timer2 = ON + 1:1

prescale
CMCON=7

ADDRESS   VAR BYTE
DAT   VAR BYTE
tx   VAR BYTE
ADDRESS   = 49
tx   = 25

BEGIN:
   FOR DAT = 0 TO 255
       SEROUT PORTA.0,0,[tx,ADDRESS,dat]
'       Serout2 PORTA.0,396,["h","s","n",DAT]
       PAUSE 100
          NEXT
    GOTO BEGIN



ALICI:

CMCON=7
TRISB=0
ID CON 25     'Establish synchronization byte
BAUD  CON 396    'NON INVERTED 2400 baud (MAX)

DAT VAR byte   'Data storage variable
ADDRESS VAR BYTE


BEGIN:
'SERIN2 PORTA.0,BAUD,[WAIT(ID),ADDRESS,]
serin2 PORTA.0,396,[wait("hsn"),DAT]


SEROUT2 PORTA.1,396,[ADDRESS," ",DEC DAT," ",DAT,13]
PORTB=DAT 'PORTB UZERİNDEKİ LEDLER BINARY OLARAK

'KONTROL EDİLMEKTEDİR.
GOTO BEGIN




program 38khz ve data gönderiyor. nerden anladın derseniz.tk 19 un bacağına led bağlıyorum led yanıp sönüyor. 38khz üretmese tk 19 algılamaz. data gönderiyorki benim yazdığım program da pause 100 kadar bekle diyor 1000 yapınca yanıp sönme uzuyor. yani burada sıkıntı yok tek sorun tk19 dan veri okumak onu beceremedim. dosyalar program devre hepsi bu eksik birşey varsa söyleyin.

hasanb

acaba palsın komutu ile okuna bilirmi

Powered by EzPortal