Kare dalga üretmek

Başlatan sezgin05, 13 Şubat 2005, 23:15:14

sezgin05

Arkadaşlar ben picin bir pininden kare dalga almak istiyorum.Bu kare dalganın LOW durumu  0-60 dk. set edilebilir olmalı.HIGH durumu ise  0-60 sn.set edilebilir olmalı.TMR0 ile gerekli saniye ve dak. döngülerini kurdum ama bu olayı gerçekleştiremedim.Teşekkürler.

yıldırım ak

Low da kalma süresi 60 dakikaya kadarmı olacak ? Eğer süreler yazdığın gibi ise buna pek kare dalga çıkış demek doğru olmaz. Bence resetsiz zaman rölesi demek daha doğru olur.

Problemin tam ne olduğunu yazmamışsın ama saat saymanın doğru olduğunu düşünür isek problem set edilen değerler ile geçen sürenin karşılaştırılmasından kaynaklanıyor olabilir. Eğer problem bu ise ;

Minumum değer saniye olduğuna göre her saniye artırımında yani saat sayma işleminin bitiminde öncelikle çıkışın 1, 0 durumuna göre program iki rutinden birine yönlenmeli.

Çıkış eğer 1 durumunda ise,

saat değeri, high durumunun set değeri ile karşılaştırılmalı, değerler aynı ise sayaçlar sıfırlanıp çıkış low yapılmalı ve döngüden çıkılmalı. saat değeri set değerinden küçük ise tekrar bir saniyenin dolması beklenmeli ve aynı prosedür tekrar uygulanmalı.

Çıkışı 0 durumunda ise aynen 1 de olduğu gibi karşılaştırmalar low durumuna göre yapılmalıdır.

Saygı ve Sevgiler...
"... Bana kulluk et; Beni anmak için namaz kıl" (Taha 14)

Erol YILMAZ

@sezgin05
ayarlari ne ile yapacaksin? Potans, swic ???
Ayarlar ekranda vs gorulecek mi?

sezgin05

Öncelikle ilginize ve paylasima tesekkürler.
Dak. için 2 digit ve 2 adet buton olacak (up ve down)
Ayni sekilde san.için de 2 digit ve 2 buton olacak(up ve down)
butonlarla set islemi yaparken set degerleri ekranda görünecek.Çalismaya baslandiginde ise kalan sure görünecek.Daha fazla ayrinti vereyim.Bu sistem kazana kömür yükleyecek.Mesela 40 dk.kömürün yanmasi beklenecek ve süre bitiminde 3-5 sn. yükleme yapilacak.Bu sürekli devam edecek.buton olayini farklida yapabilirim.Bir adet SET dugmesi ve 4 adet up down dugmesi de olabilir.O kisim de problem yok.Ama içerideki sn.  ve dk. degiskenlerine baglama olayinda takildim.

Erol YILMAZ

@sezgin05
Zamani ogrenebilmek icin TMR0 kesmesini kullaniyorsun.
Mesela
4 Mhz lik kristal ve 128 prescaler degeri ile;

4M / (4*256*128) = 30.5 kesme / sn alirsin.

30 kere kesme gelince 1 sn elde etmis olursun. dk yi ve sn yi buradan ayarlayabilirsin.

mmengi

Bir fikir edinmek için göz atılabilir.

@ DEVICE pic16F877, XT_OSC
@ DEVICE pic16F877, WDT_OFF
@ DEVICE pic16F877, PWRT_OFF
@ DEVICE pic16F877, BOD_ON
@ DEVICE pic16F877, LVP_OFF
@ DEVICE pic16F877, CPD_OFF
@ DEVICE pic16F877, PROTECT_OFF
     
      DEFINE	OSC		4
      ON_TIME	VAR	WORD
      OFF_TIME  VAR WORD
      ON_TTEMP  VAR WORD
      OFF_TTEMP VAR WORD
      ON_FLAG   VAR BYTE
      OFF_FLAG  VAR BYTE
      MOTOR     VAR PORTB.0
      
    CLEAR
    ON INTERRUPT GOTO myint
    ADCON1=7
    OPTION_REG=%10000111
    INTCON=0
    INTCON=%10100000
      
      
      ON_FLAG=1
      OFF_FLAG=0
      
      ON_TIME=30       '30 SN. KÖMÜR SÜRME SÜRESİ
      OFF_TIME=5       '5 DK. BEKLEME SÜRESİ
      
      
      ON_TTEMP=(ON_TIME*1000)/60
      OFF_TTEMP=(OFF_TIME*1000)
      
MAIN:
     
    GOTO MAIN
    
DISABLE
MYINT:
    IF INTCON.2=1 THEN
        TMR0=22
        IF ON_FLAG=1 THEN
            HIGH MOTOR
            
            IF ON_TTEMP=0 THEN
            LOW MOTOR
            ON_FLAG=0
            OFF_FLAG=1
            ON_TTEMP=(ON_TIME*1000)/60
            ENDIF
            
            ON_TTEMP=ON_TTEMP-1
            
            ENDIF
            
                 
        
        
        IF OFF_FLAG=1 THEN
            LOW MOTOR
            
            IF OFF_TTEMP=0 THEN
            HIGH MOTOR
            OFF_FLAG=0
            ON_FLAG=1
            OFF_TTEMP=(OFF_TIME*1000)
            ENDIF
            
            OFF_TTEMP=OFF_TTEMP-1
            
            ENDIF
            
            INTCON.2=0
                   
               
    ENDIF
    RESUME
    

sezgin05

Tekrar teşekkürler.
MMENGİ ustam ben geri planda çalışan bir dakika ve saniye yazmacından dolaylı olarak yaralanıyordum.Ama senin yöntemde direkt TMR üzerinden sonuç alabiliyorum.Teşekkürler.

yıldırım ak

Sezgin05 alınmaz isen küçük bir tavsiyem olacak.

Eğer abartılı, görüntülü, yeşilli, kırmızılı reset butonları, ikaz/gösterge lambaları olacak bir şey tasarlamak istiyorsan bir şey diyemem ama bu tip olaylarda en basit çözüm yolu endüstriyel zaman röleleridir. 12 / 220 VAC 12 / 140 VDC besleme ve kontak akımlarına sahip bir çok tipi mevcut ve pilz röleler gibi özel amaçlı olmadıktan sonra fiyatlarıda çok makul. Ayrıca her çalışma sonrası otomatik reset, NA / NK olarak ayarlanabilme gibi özellikleri olanlar var. Tek dezavantajı ise gösterişli değil. Para karşılığı yapıldığında "ne yahu bi dene alet taktın" gibisinden cevaplar alabiliyorsun.

Saygı ve Sevgiler...
"... Bana kulluk et; Beni anmak için namaz kıl" (Taha 14)

sezgin05


Estağfirullah Yıldırım Usta.Biraz fonksiyonel bir şey olacak.Dediğin gibi sadece zamanlama işini yapan küçük modüller bile var ama bunların hepsini tek projede toplamaya çalışıyorum.Aslında Landis marka sistemler var ama çok para.Bu da ona benzer bir iş yapacak.Daha doğrusu eksiğiyle fazlasıyla bizim olacak. Tşk.