Pic basic elektrik kesintisi

Başlatan yerkirazi, 29 Eylül 2018, 22:45:49

yerkirazi

Sayın arkadaşlar eğer mümkünse yardım ederseniz sevinirim.
elektrik kesintisinde ELKESILDI etiketine gidip LED1=1 işlemini yapamıyorum.
Devreye güç kaynağından +5volt bağladım.
Elektrik kesintisinde +3.7volt nokia telefon bataryası bağladım.
Elektrik varken ROLE3=1 oluyor.Elektrik kesintisinde ROLE3=PORTB.0 bağlı devredeki röle bırakıyor.
Buraya kadar her şey yolunda.
Fakat elektrik kesilip batarya devreye girdiğinde tekrar ROLE3=1 oluyor.
Benim yapmak istediğim elektrik kesilip batarya devreye girdiğinde tekrar ROLE3=0 olsun.
Yani devreyi güç kaynağından +5volt ile beslerken ROLE3=PORTB.0 bağlı devredeki röle çeksin.
batarya devreye girdiğinde  ROLE3=PORTB.0 bağlı devredeki röle bıraksın.
Bunu nasıl yapabilirim.
Saygılarımla.


'**********************************************************************
PORTA=0:PORTB=0
TRISB=%00110100   'PortB.4-5 ve PortB.2 giriş diğerleri çıkış yapıldı.
TRISA=%00100000   'PortA.5 giriş diğerleri çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                     'işlemci 16F628A                               
@ DEVICE pic16F628A, WDT_OFF            'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON            'Power on timer açık
@ DEVICE pic16F628A, PROTECT_ON   'Kod Protek kapalı     
@ DEVICE pic16F628A, MCLR_OFF           'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, XT_OSC             'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
CMCON=7    '16F628A de komparatör pinleri iptal hepsi giriş çıkış
'-----------------------------------------------------------------
DEFINE OSC 4     'for 4 Mhz
'-----------------------------------------------------------------
GIRIS Var PORTB.5
GIRIS1 Var PORTA.5
SYMBOL LED=PORTB.1
SYMBOL LED1=PORTB.2
SYMBOL ROLE3=PORTB.0
'-----------------------------------------------------------------
CLEAR   'tüm değişkenler sıfırlandı
'--------------------------------------ANA--------------------------------------
BASLA:
IF GIRIS1=0 THEN
ROLE3=1
GOTO ELGELDI
ELSE
IF GIRIS=0 THEN
GOTO ELKESILDI
ENDIF
  ENDIF
'-----------------------------------------------------------------
ELGELDI:
LED=1
GOTO CIKIS
'-----------------------------------------------------------------
ELKESILDI:
LED1=1
GOTO CIKIS
'-----------------------------------------------------------------
CIKIS:
        IF GIRIS=0 THEN
        PAUSE 200
        GOsub CIKIS
        ENDIF
        GOTO BASLA
                               
END

ete

#1
Yalnızca şebekeden gelen elektrik ile bir pini beslemedikten sonra bu işi çözemezsin.
Devrede pil varken pic elektrşik kesildi diyebilirmi? diyemez elbette.
Normal şartlarda pil besleme devresine bir diyot ile bağlanmalı ve şebeke olduğu müddetçe devre pilden voltaj çekmemelidir. Aynı zamanda şebeke voltajından alınan uç boş bir pine girilmeli ve şebekein varlığı bu pindeki voltajla kontrol edilmelidir. Tabiiki devre hem şebeke hemde pil ile beslenirse bu şebeke ucunda her zaman voltaj olabilir. Bunu önlemek için;
Şebeke voltajı bir D1 diyotundan geçirilerek Pic'e bağlanmalı. Pic besleme ucuna ayrıca yine bir D2 diyotundan geçirilierek batarya bağlanmalıdır. D1 diyotunun şebeke tarafından bir uç alınarak boş pic pinine girilmeli böylece elektriik kesildiğinde bu pinde voltaj olmayacaktır. Bu sayede bütün sistem istenildiği gibi çalışır sanırım.
Ete

not: daha iyi anlaşılsın diye basit bir şema ekledim.

yerkirazi

Çok teşekkürler sayın erol hocam.ALLAH razı olsun sizden.
Sizin dediğiniz daha doğru ve mantıklı.
Ben sorunumu devreye 7805 regülatör bağlayıp çözdüm.
ROLE3=PORTB.0  rölelin orta ayağına Batarya bağladım röle çektiğinde
beslemeden enerji alıyor, bıraktığında Bataryadan enerji alıyor.
Bataryadan gelen enerji 7805 regülatörün girişine değilde, çıkışına bağladım sorunu çözdüm.
Saygılarımla.

yerkirazi

Sayın arkadaşlar, devrem bir iki gün istediğim gibi çalıştı.
İlk başlangıçta güç kaynağından, +5 volt verince devre normal, güzel çalışıyor.
Fakat şimdiki sorunum, güç kaynağının fişini çektiğimde, pil devreyi çalıştırıyor.
Yazılım hiç etkilenmeden işlem yapmaya devam ediyor.
Benim yapmak istediğim pil devreyi beslediğinde yazılım baştan başlasın.
Aynı şekilde elektrik gediğinde, güç kaynağından +5 volt verince, yazılım baştan başlasın.

Yardımlarınız için çok teşekkürler.Saygılar.


'**********************************************************************
PORTA=0:PORTB=0
TRISB=%00110100   'PortB.4-5 ve PortB.2 giriş diğerleri çıkış yapıldı.
TRISA=%00100000   'PortA.5 giriş diğerleri çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                     'işlemci 16F628A                               
@ DEVICE pic16F628A, WDT_OFF            'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON            'Power on timer açık
@ DEVICE pic16F628A, PROTECT_ON   'Kod Protek kapalı     
@ DEVICE pic16F628A, MCLR_OFF           'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, XT_OSC             'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
CMCON=7    '16F628A de komparatör pinleri iptal hepsi giriş çıkış
'-----------------------------------------------------------------
DEFINE OSC 4     'for 4 Mhz
'-----------------------------------------------------------------
GIRIS Var PORTB.5
GIRIS1 Var PORTA.5
SYMBOL LED=PORTB.1
SYMBOL LED1=PORTB.2
'-----------------------------------------------------------------
CLEAR   'tüm değişkenler sıfırlandı
'--------------------------------------ANA--------------------------------------
BASLA:
IF GIRIS1=0 THEN
GOTO ELGELDI
ELSE
IF GIRIS=0 THEN
GOTO ELKESILDI
ENDIF
  ENDIF
'-----------------------------------------------------------------
ELGELDI:
LED=1
GOTO CIKIS
'-----------------------------------------------------------------
ELKESILDI:
LED1=1
GOTO CIKIS
'-----------------------------------------------------------------
CIKIS:
        IF GIRIS=0 THEN
        PAUSE 200
        GOsub CIKIS
        ENDIF
        GOTO BASLA
                               
END

yerkirazi

Sayın arkadaşlar, bu şekilde düzenleme yaptım olmadı.

PORTA=0:PORTB=0
TRISB=%00110100   'PortB.4-5 ve PortB.2 giriş diğerleri çıkış yapıldı.
TRISA=%00100000   'PortA.5 giriş diğerleri çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                     'işlemci 16F628A                               
@ DEVICE pic16F628A, WDT_ON            'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON            'Power on timer açık
@ DEVICE pic16F628A, PROTECT_ON   'Kod Protek kapalı     
@ DEVICE pic16F628A, MCLR_OFF           'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, XT_OSC             'Dahili osilatör kullanılacak
@ DEVICE pic16F628A, BOD_OFF

yerkirazi

Sayın arkadaşlar, bu şekilde düzenleme yaptım olmadı.

PORTA=0:PORTB=0
TRISB=%00110100   'PortB.4-5 ve PortB.2 giriş diğerleri çıkış yapıldı.
TRISA=%00100000   'PortA.5 giriş diğerleri çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                     'işlemci 16F628A                               
@ DEVICE pic16F628A, WDT_OFF            'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON            'Power on timer açık
@ DEVICE pic16F628A, PROTECT_ON   'Kod Protek kapalı     
@ DEVICE pic16F628A, MCLR_OFF           'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, XT_OSC             'Dahili osilatör kullanılacak
@ DEVICE pic16F628A, BOD_OFF

yerkirazi

Sayın arkadaşlar,benim yapmak istediğim,elektrik kesildiğinde,
devreyi besleyen, güç kaynağından gelen +5volt enerjiden, pile geçiş yaparken,
PIC16f628a işlemciyi hızlı bir şekilde deşarj etmek.
Aynı şekilde devreyi besleyen, pilden gelen +5volt enerjiden, güç kaynağına geçiş yaparken,
PIC16f628a işlemciyi hızlı bir şekilde deşarj etmek.
Devre beslemesinin +5volt ve -5volt arasına 10k direnç bağladım olmadı.
Beslemenin kondansatör değerini düşürdüm olmadı.
Devreyi zaman gecikmeli şekilde çalıştırdım  olmadı.
Devreye yüksek akım çeken led bağladım olmadı.
Yardımlarınız için çok teşekkürler.Saygılar.

yerkirazi

Sayın arkadaşlar, bu şekilde düzenleme yaptım olmadı.

PORTA=0:PORTB=0
TRISB=%00110100   'PortB.4-5 ve PortB.2 giriş diğerleri çıkış yapıldı.
TRISA=%00100000   'PortA.5 giriş diğerleri çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                     'işlemci 16F628A                               
@ DEVICE pic16F628A, WDT_OFF            'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON            'Power on timer açık
@ DEVICE pic16F628A, PROTECT_ON   'Kod Protek kapalı     
@ DEVICE pic16F628A, MCLR_ON           'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, XT_OSC             'Dahili osilatör kullanılacak
@ DEVICE pic16F628A, BOD_OFF

Evren Kılıç

#8
Şebeke gerilimini lojik olarak kontrol ediyorsun galiba, lojik seviye 0 olduğunda programı istediğin yere götürebilirsin, bu işini görmüyor mu?
http://etepic.com/index.php?action=dlattach;topic=4035.0;attach=6751;image

ete

Bu işi ancak kendin sürekli kartın başında durup elektrik kesildiğinde biraz bekleyip pili sonra bağlayarak yapabilirsin.
Yada bilimsel mantığını çalıştırıp bir şekilde elektriğin kesildiğinden işlemciyi haberdar etmen gerekiyor.
Aslında program içinde programı baştan başlatmak zor değil. Bunun için
Clear
@  clrf PCLATH
@  goto 0
komutlarını işletmek yeterli olacaktır. Burada sorun olan şey bu komutları ne zaman ve nasıl çalıştıracağındır.
Bunun için önerdiğim yoldan başka yol yok. Boşuna çabalayıp duruyorsun.
Ete

yerkirazi

#10
Sayın arkadaşlar, bu şekilde düzenleme yaptığımda 1-2saat yazılım güzel çalışıyor.
Sonra nedense olmuyor.

Röle elektrik varken çekiyor.Röle çektiğinde,rölenin bir bacağından eksi alıp, işlemcinin GIRIS1 Var PORTA.5
bacağına giriş yapılıyor.Böylece ELGELDI: etiketine gidip işlem yapıyor.

Röle bıraktığında, rölenin diğer bacağından eksi alıp, işlemcinin GIRIS Var PORTB.5
bacağına giriş yapılıyor.Böylece ELKESILDI: etiketine gidip işlem yapıyor.


PORTA=0:PORTB=0
TRISB=%00110100   'PortB.4-5 ve PortB.2 giriş diğerleri çıkış yapıldı.
TRISA=%00100000   'PortA.5 giriş diğerleri çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                             'işlemci 16F628A                               
@ DEVICE pic16F628A, WDT_OFF            'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON            'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF      'Kod Protek kapalı     
@ DEVICE pic16F628A, MCLR_OFF           'MCLR pini kullanılmıyor.
@ DEVICE pic16F628A, XT_OSC              'Dahili osilatör kullanılacak
@ DEVICE pic16F628A, BOD_OFF            'Bunu yazınca 1-2 saat çalışıyor.Sonra çalışmıyor.


Yardımlarınız için çok teşekkürler.Saygılar.

Powered by EzPortal