avatar_ete

Haftalık Zamanlama Sistemi (Timer) Projes Çalışması

Başlatan ete, 04 Eylül 2011, 16:12:55

İlyas KAYA

Sayın @Mali-88;

Zor bir tarifi yok. PCB yi asite attıktan sonra maskeyi çıktı alıyorum.
Isık altında maske çıktısını padlare denk getirip ütülüyorum. İyice ütüledikten sonra ister suya atın ister kağıt sıcakken ayırın.

Yalnız zor olan kısım maske çıktısı almak.
Bunun için 2 program kullanıyorum.

1 tanesi bullzip pdf printer
2 Corel Draw

Ben yaptığım işlemleri sırası ile yazayım.

1- PCB yi ARES de çiziyorum ve baskıyı yapıyorum.
2- Asit işlemini yapıyorum. Asitten sonra kalan toneri güzelce tiner ile temizliyorum.
3- "Bullzip PDF printer"  isimli yazıcı programını internetten bulun ve kurun.
4- Corel Draw programını internetten bulun ve kurun.

ARES den ile şu işlemleri yapın

- ARES den Yazdır seçin.
- Printer Listesinden PDF printer seçiyorum
- MODE kısmından "Solder Resist" seçin.  Ok deyin.
  Bir pencere açılacak ve nereye kayıt edeceğinizi soracak. Masaüstünü seçin ve kaydet deyin .

Buraya kadar olan kısımda maskeyi PDF formatına çevirdik.

- Corel programını çalıştırın ve FILE menüsünden IMPORT seçerek masaüstüne kayıt ettiğiniz PDF dosyasını seçin. Küçük pencere açılacak buradan "CURVES" seçin.

Çizim corel'e aktarılmış olacaktır. Çizime sağ tıklayıp "UNGROUP" seçiyoruz ve çizimin zeminindeki boş biryere tıklıyoruz. Sağ kısımdan farenin sol tuşuna basarak yeşil veya istediğiniz rengi seçiyoruz.

Daha sonra içeride kalan padleri seçiyoruz ve beyaz renge hem sağ hemde sol tıklıyoruz.

Maske oluşmuştur artık yazdıra bilirsiniz.

Bir video da çekip eklerim.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Mali-88

önemli bir konu verdiğiniz bilgiler için çok teşekkürederim.

İlyas KAYA

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Brv35

Projeyi 18F serisi ile gerçekleştirmek istedğimiz takdirde uygulamamız gereken basamaklar nelerdir acaba ?

ete

Pinlerin tam digital yapılmadı için verilen komutlar farklı olabilir. Bunlar,
- komparatör iptali
- adc iptali
Komutlarının yeni işlemciye uygun verilmesi gerekir.
- ayrıca pullup dirençlerinin açılması da option registeri yerine intconx registerinden yapılıyor olması gerekir
- şayet tmr0 kullanılıyor ise onuda artık kendi registerinden ayarlamak gerekir.
Aklıma gelenler bunlar.

Ete

eprom_20

Hocam merhaba;
Haftalık timer projenizde LCD ışığın devamlı yanmaması için nasıl bir kod eklemeliyiz,
TİMER 04 programına göre konuşuyorum

  IF MANU=0 OR ARTIR=0 OR AZALT=0 OR SEC=0 THEN
    SNY=0
    ISIK=1
    ENDIF
    IF SEC=1 THEN ZMN=0
    IF SNY>15 THEN ISIK=0
    ENDIF


Bu kodları BASLA etiketi içine yerleştirdim,öncesinde de
SNY     VAR BYTE
ZMN     VAR BYTE
olarak ekleyip LCD başlangıcında da sıfırladım aslında ama kodlar işlev görmüyor hocam yanlışım nerde olabilir yardım edermisiniz

ete

LCD arka ışık genelde ekranın arkasına yerleştirilen bir led yardımı ile sağlanır.  Öncelikle bu led'in bir transistör yardımı ile tetiklenmesi gerekir. İdeal olanı LCD nin GND beslemesini BC547 gibi bir transistörden vermektir.
Işığı yakacağın zaman bu transistörün Beys ucuna 1K direnç üzerinden bir pic pininden sinyal verilmelidir. Sinyal=1 olunca led arka ışık yanacak Sinyal=0 deyince de sönecektir.
Sende böyle bir düzenek varmıdır? Mesajında bu konuda hiç bir bilgi gözükmüyor. Bir takım şeyler yapmışsın ama alakasız gözüküyor. Kim nereye hükmediyor belli değil.
Ete

eprom_20

Hocam özür dilerim geç döndüm kusura bakmayın;

.
.
.
SYMBOL ROLE3=PORTC.2
SYMBOL SCL  =PORTE.0
SYMBOL SDA  =PORTE.1
SYMBOL ISIK =PORTC.7
.
.
AC_DAK  VAR BYTE
KP_SAAT VAR BYTE
KP_DAK  VAR BYTE
SNY     VAR BYTE
ZMN     VAR BYTE

PAUSE 300
         LCDOUT $FE,1
         PAUSE 200
         LCDOUT $FE,$82,"   ETEPIC.COM   "             
         lcdout $FE,$C5," HAFTALIK       "
         lcdout $FE,$95,"  TIMER TASARIMI"
         lcdout $FE,$D9,"CALISMASI       "
         PAUSE  100         
          ZMN=0
         SNY=0

gosub zamanoku
GOSUB EPROMOKU
GOSUB EKRANI_SIL 
gosub EKRAN_STANDBY


BASLA:

      IF MANU=0 OR ARTIR=0 OR AZALT=0 OR SEC=0 THEN
      SNY=0
      ISIK=1
      ENDIF
     IF SEC=1  THEN ZMN=0
    IF SN>10 THEN ISIK=0
     
       GOSUB ZAMANOKU
'       if saat>23 then basla
       gosub EKRAN_STANDBY
       
       
       IF SAAT=23 AND DAK=59 AND SN>50 THEN GOSUB EPROMOKU
       for I=0 to 60000
       IF SEC=0 THEN
           GOSUB EKRANI_SIL
           GOSUB EKRAN_MENU
           LCDOUT $FE,$C1,"<",$FE,$c5,">":pause 20
           WHILE SEC=0:WEND
           GOTO ANAMENU
        ENDIF
        IF MANU=0 THEN
           GOSUB EKRANI_SIL
           GOSUB MANUEL
        ENDIF   
       next
 



Kodu bu şekilde yazdım hocam yalnız çalıştıramadım

eprom_20

Hocam alttaki kod satırı

IF SNY>10 THEN ISIK=0

bu şekilde eklerken yanlış yazdım

ete

Programın kendi saniye sayacı var zaten. Yapmak istediğin sanırım tuşlrdan birine basıldığı zaman önce arka ışığı yakmak ve o andaki SN değeri üzerinden 10 sn geçince ışığı kapatmak.
IF MANU=0 OR ARTIR=0 OR AZALT=0 OR SEC=0 THEN
      SNY=SN 'komutu ile o andaki sn değerini SNY değişkenine aktarıyoruz.
       ISIK=1  'ışığı yakıyoruz
      ENDIF

Işığı yaktık diyelim şimdi 10 sn geçip geçmediğini test etmemiz gerekecek.
TEMP=60-ABS(SN-SNY)
IF ISIK=1 and (TEMP=>10) THEN ISIK=0
şeklindeki komutumuz da bu işi yapar. TEMP=60-ABS(SN-SNY) formülü ne iş yapar onu açıklayayım.
Saniye 0-59 arasında sayar. Tuşa basıldığı anda saniye değerimiz 50 den büyük olabilir. Bu nedenle hesap doğru çıksın diye önce o andaki SN değerinden tuşa bastığımız andaki SN değerini çıkartıyoruz. Bunu yaparken hangisi büyük ise sorun çıkarmasın diye ABS değerini alıyoruz. Sonra bulduğumuz rakamı 60 dan çıkartarak net olarak kaç SN geçmiş olduğunu hesaplamış oluyoruz. Bir örnek yapalım.
-Tuşa bastık, ISIK=1 oldu o anda SN değerimiz 55 olsun o halde ,SNY=55 oldu.
-aradan zaman geçti ve SN değerimiz 55 den sonra sırası ile 56-7-58-59-0-1-2-3-4-5 değerini aldı diyelim.
TEMP=60-ABS(5-55)=60-50=10 değerini hesaplayacaktır.
Senin kullandığın şekilde yapmaya kalkarsak SNY değerini her SN değiştiğinde bir artırmak gerekecektir ki buna hiç gerek yok. Yukarıda açıkladığım şekilde sorunsuz çalışır bu kod.

Ete

eprom_20

Hocam teşekkür ederim evet yapmak istediğim buydu ellerinize sağlık;
Hocam birde programla ilgili şu konu kafama takıldı affınıza sığınarak,
RÖLE1 VE RÖLE2 yi saat ve dakika bazında çalışır durumda (programına müdahale etmeden)
sadece RÖLE3' ü saniye bazında çalışır duruma programını değiştirsem (stack taşması veya başka bir sorun) oluşturup programı kilitlermi hocam,Örnekteki gibi sadece röle 3 ü kapsayacak şekilde yazmayı düşünüyorum

BITIR_SAN:
         LCDOUT $FE,$E0:LCDOUT $FE,$0E:PAUSE 100
         LCDOUT $FE,$0C:PAUSE 80
         IF SEC=0 THEN BITIR_PROG
         IF MANU=0 THEN GERIDON         
         IF ARTIR=0 THEN
           KP_SN=KP_SN+1
           IF KP_SN>59 THEN KP_SN=59
'           WHILE ARTIR=0:WEND
         ENDIF
         IF AZALT=0 THEN
           KP_SN=KP_SN-1
           IF KP_SN=255 THEN KP_SN=0
'           WHILE AZALT=0:WEND
         ENDIF           
         LCDOUT $FE,$DF,DEC2 KP_SN
         GOTO BITIR_SAN


.
.
.
CASE 3
         AKTIF3=99
         AKTIF_ROLE3=0
         AC3DAK=99
         AC3SN=99
         KAPA3DAK=99
         KAPA3SN=99
         GOSUB UCYAZ                                       
         END SELECT
         GOSUB EPROMOKU

Sorunu anlamsız buluyorum. Neyi nasıl yazacağını bilmeden ben olurmu olmazmı diyemem. Yazdıklarına bakarak olur yada olmaz diyebilirim. Röle3 saniy ebazında çalışabilir. Ama saniye sıklıkla değişen bir zaman dilimi sürekli takip etmen gerekecek. Ona ayrı bir saniye değişkeni tanımlarsın her saniye değişiminde onuda artırırsın yada en baştan kapanacağı süreyi değişkene verip her saniye değişiminde bir eksiltirsin. Sıfırlanınca da kapatırsın röleyi.
Stack taşması denilen şey genellikle Gosub ile gidilen yerden RETURN yerine GOTO ile dönmekten kaynaklanır. Bunda dikkat edersen sorun çıkmaz.
Ete

ersangundogdu

Arkadaşlar tek çıkışlı, 2x16 lcd ekranlı, 16F628 ile yapılmış haftalık timer devresi bulamadım. Amacım akvaryum aydınlatmasını kontrol etmek. Arşivinde olanlardan yardım rica ediyorum. Şimdiden teşekkürler...

eprom_20

Tamam anladım hocam teşekkür ederim,çok sağolun

efehurkan

Hocam resimeki gibi programların calısma saatlerini ayarladım fakat sadece program 1 de role cekıp bıraktı program 2 ve 3 teki saatler de role aktıf olmadı. HAFTIMER06 dosyasını kullandım. 1 gun icinde 3 program 1 role ıcın kullanılamıyor mu acaba.

ete

Kulanılıyor olması gerekir. Bunları daha önce test etmiştim. Ama bu program biraz sorunlu. Çok fazla oynadık kriterleri ile. Bu nedenle ilişikteki programı kullan. Onda sorun olmaması gerekir.
Ete

Powered by EzPortal