Basılı tutunca açılıp kapanan sistemler nasıl çalışır?

Başlatan ttg, 17 Kasım 2013, 18:26:04

ttg

Merhabalar,

uzun süredir aklımda dönüp duruyor. Bizim cep telefonlarında olduğu gibi güç tuşuna basılı tutarak açma ve kapama işlemlerini yapmak istiyorum. Bu işlemin bir adı var mı araştırabileceğim? Ya da kolay bir işlemse mantığı nedir?

Aklıma işlemciyi güç tasarrufu moduna almak gibi çözümler geliyor ama sanırım daha etkili bir yöntem kullanılıyordur?
4 Buçuk Saatlik Python Eğitimi [Ücretsiz] www.youtube.com/gryyldrm

camby

İşlemci sleep'te ise Bir R-C ile yapılabilir. Yeteri kadar büyük R üzerinden C dolunca , CPU'ya sleep'tan kalk sinyali gider.

Ama donanımsal değil de yazılımsal da yapılıyor olabilir. Telefon kapalı olsa da CPU sürekli açıktır. Butona bastığımızda klasik timer başlar , taştığında init başlar.

yada yine sleepte olsun ilk basıldığında sleep'ten low power olarak kalkar ve basılı durup durulmadığı için timer başlar , ya init'e başlar yada sleep'e geri döner.

vsvsvs

ibrsel

Tuş basılı olduğu sürece timer ı çalıştırıp süreyi kontrol edersin. Örneğin 1500 ms basılış ise işlemini yaptırırsın.
Ben cevap yazarken @camby hocamda cevap yazmış...Ben bu tür işlemlerde genellikle timer kullanıyorum yada basitce WHILE WEND döngüsü içerisinde (butona basılı olduğu sürece) bir değişkenin değerini arttırırsın. Belirli değere ulaşmış ise işlemini yaptırırsın.

ÖRNEK:

main:   
     sayi=0
   WHILE buton=1
         sayi=sayi+1
         delayms 10
   WEND
         if sayi>15000 then GOTO ...
GOTO main     

camby

Alıntı yapılan: ibrsel - 17 Kasım 2013, 19:06:36
Tuş basılı olduğu sürece timer ı çalıştırıp süreyi kontrol edersin. Örneğin 1500 ms basılış ise işlemini yaptırırsın.
Ben cevap yazarken @camby hocamda cevap yazmış...Ben bu tür işlemlerde genellikle timer kullanıyorum yada basitce WHILE WEND döngüsü içerisinde (butona basılı olduğu sürece) bir değişkenin değerini arttırırsın. Belirli değere ulaşmış ise işlemini yaptırırsın.

ÖRNEK:

main:   
     sayi=0
   WHILE buton=1
         sayi=sayi+1
         delayms 10
   WEND
         if sayi>15000 then GOTO ...
GOTO main     

Timer doğru tabi ama arkadaş aslında işlemci kapalı iken bu iş nasıl yaptırılır diye sormaya çalışmış. Bu açıdan bakınca soru biraz daha derinleşiyor.

ttg

Cevaplarınız için ayrı ayrı teşekkür ederim. İki türlüsünü de merak ettim açıkçası. Aç-kapa switch i yerine basılı tutma usulü bir buton kullanmak kullanıcıya daha çok hitap ediyor sanırım.

Bu arada R üzerinden C'nin dolması derken bir girişe bağlayıp kesme ile sleepten çıkarmadan bahsetmiştiniz değil mi?
4 Buçuk Saatlik Python Eğitimi [Ücretsiz] www.youtube.com/gryyldrm

camby

evet , harici kesmeler ile cpu yada mcu'lar sleep'ten uyandırılabiliyor. Farklı farklı yolları da var.

Bayramsumbul

Aklıma geldi sadece denemesini yapmadım.Basılı kalan sürede bir kapasitör dolmaya başlasa,Sonrada belli bir gerilime ulaştığı zaman bir mesela diyot iletime geçer ve sinyal oluşturur.
Bir Elektronik Meraklısının Serüveni...

papsukkal

@bayramsumbul hocam r c ile aynı sizin söylediğiniz aynı mantik.

Bir de benim aklıma gelen şöyle bir şey var.
Butona basınca kesme oluşur ve işlemci uyanır, timer saymaya başlar.
İstenilen değere kadar butonu lojik1 veya lojik 0 görürse işlemci açılışa devam eder.
Eğer istenilen zamandan önce buton bırakılırsa sleep komutu tekrar devreye girer. Yani uykuya devam. . .

picusta

Röle mantigindaki butona bas açilsin,  baskasina bas kapansin mantigi transistörlerle yapilamaz mi?
Power Button 'una parallel bir transistor olsa, islemci uyaninca bu transistörü iletime geçirse (geçirebilirse).
buton birakilinca akim burdan geçse, sonra islemci transistörü kapatsa.
Olabilir mi ?


SpeedyX

picusta nın bahsettiğini şahsen kullandım. Ladder diagramdaki kilitleme devresi gibi. Bir buton besleme veriyor, butona paralel transistör var, işlemci hemen transistörü sürüyor ve buton bırakılsa bile transistör üzerinden besleme alabiliyor. Daha sonra bir şart sağlanınca transistörü kesime götürerek kendi enerjisini kesiyor ve bir daha butona basılana kadar çalışamıyor.

papsukkal

burada istenen butona basınca işlemciyi açmaktan ziyade örnek veriyorum 3sn butona basılı tutunca işlemciyi açmak. butona basıp bırakınca tepki almamak

diye anladım ben  ? :o

Maxim


picusta

Birkaç aksamdir breadboard üzerinde denemeler yapiyorum.

Maksat buton'a basip birakilinca timer devreye girsin ve led belli bir süre (10sn) yansin ve sonra kendisi kapansin. (merdiven otomatigi).

Fakat bunu minimum enerji harcayarak yapmak istiyorum. Kullanim sIklIgI az (günde 2-3 kere).


Pil birkaç yüz mah, NE555 ise 3ma  çekiyor. Ben en az 1 -2 yil dayanmasini istiyorum.

NE 555 astable mode'a çalissin, Enerji verilir verilmez ON olsun, MOSFET'i iletime geçirsin. 10 sn sonra kapansin ve MOSFET'i de kapatsin.
Devreyi ikiye bölüp denedim :
1) MOSFET ve buton paralel On, OFF : OK.
2) Astable devre : NE 555 sürekli beslemde iken trigger giris kullanarak 10 sn on astable devre yaptim.

ikisini birlestirince alttaki gibi bir sema denedim ama umdugum sonucu alamadim.
NE555 diger bacak baglantilarini bilerek çizmedim, bu kisimda yardimlarinizi bekliyorum.
Besleme geldiginde nasil baslatabiliriz (trigger) ?


NE 555 ile ugrasmayip yerine ufak bir MCU 'mu koysam yoksa ?




z



Q1 Transistorunun CE arasina 100nF bagla.
Trigger butonuna 100nF paralel bagla.

mesaj birleştirme:: 22 Kasım 2013, 03:37:26

Q1 uclarina baglanan C1 kaldirilabilir. Cunku enerji verildigi anda calissin denince ben pil baglaninca anladim.

555 yerine 7555 kullanisan pil tuketimi iyice azalir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

picusta

Hocam açiklamalari tam anlayamadim.

- Q1 Transistorunun CE arasina 100nF bagla.

Anladim sanirim, benim semadaki NPN transistörün uçlarina 100nF baglayim. Bu transistörün isi 555 Output'u dusunce 555 'in enerjisini kesmek.

- Trigger butonuna 100nF paralel bagla.

Bu hangi buton ? benim semada sadece bir buton var o da SW1. Birkaç ms ON kalacak, sonra OFF.  OFF'ken MosFET iletime geçecek.

- Q1 uclarina baglanan C1 kaldirilabilir. Cunku enerji verildigi anda calissin denince ben pil baglaninca anladim.

Q1 birin uçunda C1 yok. Basta bahsettiginiz 100nF 'mi ?   Enerji verildigi demek, SW1 ON olunca demek. Pil hep bagli ama MOSFET her zaman iletimde degil, 0 uA hariciyor.

Sizin verdiginiz semada ki C1 ise zamanlamayi nasil yapacagiz  ?


- 555 yerine 7555 kullanisan pil tuketimi iyice azalir.
Evet 5 kati daha azalir. 3 gün yerine 15 gün gider (200 mAh, 3mA,  60uA). benim hedefledigim 2 sene.  Bu devre ile 555 yerine MCU olabilir. veya 555 'in yanina MCU koyabiliriz.

Q1 'in bazina direnç koyayim.


Verdiginiz devre astable çalisma,
benim istedigim o trigger girisini enerji verildiginde (SW1 kapaninca) tetikelemek (LOW yapmak)  ve MOSFET'i iletime geçirmek. Süre bitince MOSFET'i kesmek.