avatar_ete

DTMF Projeleri

Başlatan ete, 04 Eylül 2011, 19:05:04

ete

Devrenin orjinalinde A portundaki o bacaklara HT9170 pinleri bağlı. Aslında karmaşık bir işlem gerektiriyor. Bunu yapabilecek durumda olsanız bana ne yapmalıyız diye sormaz direk yapardınız. Bu iş öyle tarifle falan olmaz. Ama illaki yaparım ben dersen aşağıdakileri uygula;
a) SYMBOL HAT=PORTB.0
SYMBOL CIKIS1=PORTB.1
SYMBOL CIKIS2=PORTB.2
SYMBOL CIKIS3=PORTB.3
symbol CIKIS4=PORTB.4
SYMBOL CIKIS5=PORTB.5
SYMBOL CIKIS6=PORTB.6
SYMBOL ROLE=PORTB.7
SYMBOL VALDAT=PORTA.0
SYMBOL BUZZER=PORTA.7
satırlarını bul değişenlere yeni port isimlerini ver. Toplam 6 adet röle kullanmışız iptal edilenler var ise onları sil çıkar.
A portu röle çıkışı olarak kullanılacak ise TRIS registerini TRISA=0 olarak değiştir.

2. PORTB nin ilk 4 biti giriş olacağı için TRISB=%00001111 şeklinde değiştir.

3. Aşağıdaki satırları bul ve onları PortB karşılıkları ile değiştir.

SYMBOL VALDAT=PORTA.0  yerine PORTB.0 olacak
SAYIAL: SAYI=0
        WHILE VALDAT=1
        SAYI.0=PORTA.4  yerine PORTB.4 
        SAYI.1=PORTA.3             portb.3
        SAYI.2=PORTA.2             portb.2
        SAYI.3=PORTA.1            portb.1

Başka bir değişiklik gerekmez sanırım.

Ete

        WEND


TA5AAT

#31
hocam çok teşekkürler çalışır durumda evet..


ete

2 röleli nasıl yaptın daha doğrusu röleleri hangi komutlarla açıp kapatıyorsun.
Biri açılırken diğerininkapanmaması için bütün portun okunması ve okunan değerde yalnızca açılacak röleninbağlı olduğu bitin set edilmesi ve bütün değerin geri porta yazılması gerekir.
Tek tek pin bazında kontrolde çalışması gerekir.
Ete

TA5AAT

hocam iki adet devre yaptım biri 2 röleli digeri 4 rölelei 4 röleledie sıkıntı yok.fakat iki röleli kartdan entegreyi sokentinden alıyorum 4 röledide çalışıyor tabii iki röleyi açıyor kapatıyor sorunsuz.. iki röleli kartda bu olay oluyor.. saygılar

TA5AAT

#34
hocam gönderdigim hex dosyaı picde yüklü. 4 röleli kartda süper 2 röle açıp kapıyor
2 rölleli kartda rölenin biri açılıyor digerini tuşladıgımızda digeri sönüyor kart üzerinde bir işlemmi yapıcaz direç mercimek kondansatör şeklinde felan ben yazımıma rölelrin tümü aç ekledim..

ete

Yaşadığın sorun A portunu aktif eden komutu 5 bit olarak kullanmandan kaynaklanıyor olabilir.
TRISA=%00000 şeklindeki komut yanlıştır. Onun TRISA=%00000000 şeklinde olması gerekir. Neden dersen Dahili OSC kullanılınca PortA.6 ve PortA.7 normal giriş çıkış pini haline geliyor bunları TRis registerinde belirlemen gerekir. AYrıca MCLR_OFF denilince de PortA.5 giriş pini haline gelir bunuda Tris registerinde belirlemen gerekir. Aynı şekilde Röleleri açıp kapattığın komutda da  5 bit yerine 8 bit tanımlama yapman gerekir.  Yazının sonunda nasıl olması gerektiğini yazdım. Onud mutlaka denemelisin.

Sen en iyisi birde şu komutu dene. Çünki Röleler için sembol isimleri kullanmışsın .
IF SAYI=1 THEN
              IF durum.0=0 THEN
                GOSUB SES1:YAZ=1
                CIKIS1=1  '1 tuşuna basılınca 1 nolu çıkışı aç
                goto ROLEKONTROL
              ENDIF
           ENDIF
           
           IF SAYI=2 THEN
              IF durum.1=0 THEN
                GOSUB SES1:GOSUB SES1:YAZ=1
                CIKIS2=1   '2 tuşuna basılınca 2. ci çıkışı aç
                goto ROLEKONTROL
              ENDIF
           ENDIF     

Bu çıkışları kapatırkende CIKIS1=0 veya CIKIS2=0 şeklinde komut kullanman yeterli olacaktır.
Çok merak ediyorsan mevcut komutu şöyle bir yaz bakalım olacakmı;
PORTA=DURUM | %00000001 (1 nolu çıkış için)
PORTA=DURUM | %00000010 (2 nolu çıkış için)

Ete

TA5AAT

yapıyorum hoca teşekkürler..

TA5AAT

hocam LED animasyon kontrol devresi yaptım devremiz hazır fakat HEX çeviremedim MicroCode kullanıyorum nerde problem olabilir hocam  (WARNİNG - EROR)  felan diyor TEŞEKKÜRLER..

TA5AAT

#38
PORTA=0
TrisA=%00000000
TrisB=%00000000

ete

Programda verilen açıklama satırları " ` "ayrıracı ile ayrılmış Halbuki " ' " ayıracı  ile ayrılması lazım.
Doğru program aşağıdadır.

Ete
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 07.02.2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
PORTA=0
TrisA=%00000000
TrisB=%00000000
'-----------------------------------------------------------------
@ DEVICE pic16F628 'islemci 16F628
@ DEVICE pic16F628, WDT_ON 'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF 'Kod Koruma kapalı
@ DEVICE pic16F628, MCLR_OFF 'MCLR pini kullanlımııyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
CMCON=7 '16F628 de komparatör pinleri iptal hepsi dijital
'-----------------------------------------------------------------
I var WORD
Z VAR BYTE
W VAR BYTE
T VAR BYTE
Y var byte
SON VAR BYTE '128 - 192 -224 - 240 - 248 - 124
'-----------------------------------------------------------------
'A portundan baslayarak ledleri birer birer yakıyoruz. Sonra B portuna
'atlıyoruz. Hepsi yandıktan sonra teker söndürüyoruz. Bu sefer ikiser
'yakıyoruz ve söndürüyoruz. Üçer yakıyoruz söndürüyoruz. Bu sefer Dıstan
'içe dogru yakıp söndürüyoruz. Sonra içten dısa dogru. SOnra kara simsek yapıyoruz.
'------------------------------------------------------------------
PORTA=0
PORTB=0
I=1:Z=2:W=1
'---------------------------ANA PROGRAM BÖÜMÜ-----------------------------------
BASLA:
PORTA=I '1. bit den baslayarak ledleri yakıyoruz
PAUSE 100
I=I*2 'bir sonraki bit yakıldı
IF I<254 THEN BASLA
PORTA=0 'tüm bitler yandıktan sonra portun tamamını söndür
I=W
BIR: PORTB=I 'Aynı isi B portu içinde yap
PAUSE 100
I=I*2
IF I<254 THEN BIR
PORTB=0
T=I/2 'bu sefer geriye dogru yakıyoruz ledleri
I=T
IKI:PORTB=I
PAUSE 100
I=I/2
IF I>0 THEN IKI
PORTB=0
I=T
UC:PORTA=I 'Geriye dogru A portunu yakıyoruz
PAUSE 100
I=I/2
IF I>0 THEN UC
Z=Z+1:I=2*W+1:W=I
IF Z<8 THEN BASLA
PORTA=0
I=128
Z=1
'------------------BURAYA KADAR 1-5 SIRA ÇFT YÖN YAKILDI-----------------------
DORT: PORTA=I
PORTB=Z
PAUSE 100
I=I/2
Z=Z*2
IF I>0 THEN DORT
ARA: I=1:Z=128:W=I:T=7:y=z
BES:
PORTA=I
PORTB=Z
PAUSE 100
I=I*2
Z=Z/2
IF Z>1 THEN BES
z=w:I=y
ALTI: PORTA=I
PORTB=Z
PAUSE 100
I=I/2
Z=Z*2
IF I>1 THEN ALTI
T=T-1:I=W*2+1:Z=DCD T+Y:W=I:Y=z
IF I<33 then BES
porta=0:portb=0
I=1:Z=2:W=1:T=7
goto basla
END


sahinler64

ya hocam kusura bakmayın. yazdıklarınızı biraz inceledim. TA5AAT hocam cep telefonu için yaptığın programı paylaşma şansın varmı diyecektim.

TA5AAT

ETE hocam teşekkürler LED animasyon kartımız bu haliyle çalışmakta..

TA5AAT

#42
ete hocam bu DTMF devremiz ile ARACIMIN ilk motor hareketi olan MARŞ sistemine hareket vermek istiyorum..

mg1980

Röle zamanına alternatif olarak yağ basınç müşirinden motor çalışınca sinyal alan RB0 kesmesi de düşünülebilir.Kolay gelsin.

ete

TA5AAT,

Bu işi timer ile yapmak programa epeyce yük getirir. İşlem basit ve en azından o esnada programın başka iş yapması gerekmiyor. O halde #1 ile röleyi aktif ettikten sonra aynı yerde;
PAUSE 2000
ROLE=0
şeklinde bir komut yerleştirerek 2 sn sonra rölenin kapanmasını sağlayabiliriz.
Tek kusur programın 2sn müddetle orada bloke edilmesi olurki çok da önemli değil diye düşünüyorum.
Ne dersin?

Ete

Powered by EzPortal