4 adet kalem pil ile pic çalıştırmak

Başlatan enrique_iglesias, 19 Aralık 2008, 20:53:37

enrique_iglesias

Arkadaşlar merhaba

4 Adet kalem pil ile bir pic çalıştırmak istiyorum projem rf kumanda yapmak.

atx34 rf modül
16f628 pic
4x4 keypad ve buna bağlı dirençler var
birde led var

7805 Kullanmayı düşünüyorum ama sanırım biraz komik olur :)

çünkü voltaj 4 volta düştüğünde sanırım çalışmayacak.

Bu şekilde 4 kalem pil ile en tasarruflu nasıl kullanabilirim?
Direk 6V ile sanırım modül ve pic zarar görecek yardımcı olabilirmisiniz?

Birde pil kaç saat çalışır bunun hesabını nasıl yaparım?

ete

4 adet pil ile pic çalıştırmanın yegane yolu dc-dc çevirici kullanmaktır.
MC34063 entegresini incele. Ben bunu kullanarak 3 pil ile çalıştırıyorum.
Yapılacak iş 3-3,6V arasında giriş ile çıkışı 8V seviyesine yükseltmek ve oradan 78L05 ile 5V ta düşürmek. Aslında daha da güzeli direk 3 - 3,6V tu 5V seviyesine yükseltip direk onu kullanmaktır. Her türlüsü 34063 ile mümkündür.
Pilin ömrü çektiğin akımla alakalı bir şey. ortalama 25ma civarında bir akım çekeceğini var sayarsak, 2000 ma lik bir pil teorik olarak 80 saat dayanır. Pratikte bu 50 saat dolayında olacaktır.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Erhan YILMAZ

Dostum pilin dayanma süresi uzatmak istiyorsan pici kullanmadığın süre içerisinde uyku moduna sok 4x4 keypadıda portbye bagla portchange kesmesini aç herhangi  bir tusa basınca pici kesme ile uykudan çıkarıp işleme devam edebilirsin kesmeler ile sleep modunu bir araştır istersen

enrique_iglesias

ETE hocam verdiğiniz bilgi için teşekkür ederim ama elektronik açıdan benim biraz aşacak gibi duruyor :(

Erhan hocam https://www.picproje.org/main/modules.php?name=Forums&file=viewforum&f=6 burda o soruyu sordum ama askıda kaldı aynen dediğiniz gibi yaptım ama wdt sürekli reset atıyor :( kodlarım orada var ilgilenirseniz çok memnun olurum her iki hocamda sorum askıda kaldı orda :)

Erhan YILMAZ

Dostum programda ilgili ayarları kurup portchange kesmesini açıp sonra pici uyku moduna sok port change kesmesi ile pic uyanıp kesme alt programını çalıştıracaktır kesme altprogramındada tusları okuyup rfden gönderebilirsin yani tusa bastıgın sürece pic uykudan cıkıp rf ile dataları gönderebilr. Elimdeki bir kitapta bulunan uyku modu uygulamsını ekledim bir incele tabi kodlar asm protchange kesmesi ile pic uyandırma işlemi yapılıyor

Uyku modu uygulaması

enrique_iglesias

erhan hocam teşekkür ederim bende programımda bunu yaptım :

include "modedefs.bas"

CMCON=7
TRISA=%00000000
TRISB=%00110000
PORTA=0
PORTB=0

tx      var PORTB.3
led     VAR PORTA.0
modul   var PORTA.1
ses     var PORTA.2

yon     var byte
tus     var byte
i       var byte
salise  var byte
saniye  var byte
bayrak  var byte
bayrakbit var bit

on interrupt goto kesme 'hangi kesmenin olduğu etikette değerlendirilecek
OPTION_REG=%10000101    'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10100000        'Timer0  kesmesi aktif edildi
TMR0=0
PORTB=0

bayrakbit=1
high modul   'RF modülün gücünü aç

basla:

gosub tara
if tus=0 then
    if saniye=10 then   '10 saniye boyunca hiç tuşa basılmadıysa uyku moduna geç
        intcon.3=1   'PORTB kesmesi aktif edildi ve herhangi bir tuş bekleniyor
        low modul    'rf modülün gücünü kapat
        TMR0=0 
        @ sleep      'UYKU MODUNA GEÇTİ AMAAA PROTEUSTA HATA VERIYOR YANI WDT RESET ÇEKİYOR
    endif
endif

GOTO basla



tara:          'tuşlar taranıyor
PORTB=%00000001
if PORTB=%00010001 then yon=%00000001 
if PORTB=%00100001 THEN yon=%00000010
if PORTB=%00000001 THEN tus=0

pause 2

PORTB=%00000010
if PORTB=%00010010 then yon=%00000100
if PORTB=%00100010 THEN yon=%00001000
if PORTB=%00000010 THEN tus=0

pause 2

PORTB=%00000100
if PORTB=%00010100 THEN yon=%00010000
if PORTB=%00100100 THEN yon=%00100000
if PORTB=%00000100 THEN tus=0
return





disable
kesme:
if intcon.2=1 then      'Timer0 zamanı geldiyse işlevi yap
    Salise = Salise + 1      		' Saniye parçacıklarını say
	IF Salise < 61 Then tiCik       ' 61 * 16,384ms = 1sn olmadıysa atla 
	Salise = 0                      'saliseyi 0'la
    Saniye = Saniye + 1             'saniyeyi 1 artır
    IF Saniye >= 60 Then            
    Saniye = 0                      '60 saniye olduysa sıfırla
    EndIF
    tiCik:
    intcon.2=0  'TIMER0 KESME BAYRAĞI SIFIRLANDI
 ENDif


if intcon.0=1 then   'Eğer PORTB değişiklik kesmesi olursa işlevi yap
TMR0=0
intcon.3=0   'PORTB kesmesi iptal edildi
intcon.0=0  'PORTB KESME BAYRAĞI SIFIRLANDI
high modul
endif
 
resume
enable
end


aynı sizdeki gibi ama sürekli resete gidiyor anlamış değilim wdt sorun oldu başıma....

ayrıca zahmet edip eklediğin için teşekkür ederim asm kodlarını...

Erhan YILMAZ

wdt timer sorun oluyorsa kod basına
@ DEVICE pic16F628, WDT_OFF komutu ekleyerek wdt timeri kapatabilirsin ayrıca bu uygulama tek kesme ile yani port change kesmesı ıile de calısabilir

Tagli

Evet, aslında @tamirci_erhan iyi bir noktaya değinmiş. Tuşa basılmasından sonra 10 saniye beklemeye gerek yok. İşlemler bitince hiç beklemeden uykuya girebilirsin.
Gökçe Tağlıoğlu

enrique_iglesias

evet aklıma hiç gelmemişti böylelikle 10sn bekleme rutini ortadan kalkacak çok teşekkür ederim...

Yalnız :
@ DEVICE pic16F628, WDT_OFF

bu kodu eklediğim an derleme yapılırken illegal opcode(16f628) diye derleme hatası alıyorum... sürekli böyle...

Erhan YILMAZ

kullandığın denetleyici 16f628a ise a harfi ekle ondan yapar muhtemelen

enrique_iglesias

erhan hocam onuda denedim olmuyor microcode studio kullanıyorum picbasic 2.47 kurulu bunlardan olabilirmi?

Erhan YILMAZ

Demin denedim komutu herhangi bir hata vermedi istersen derleyiciyi yeniden yükle


enrique_iglesias

ok ben o işi halledeceğim gerekirse internetten başka bir sürümünü bulurum.....sizi kaçırmak istemiyorum :)

ama şu sleep olayın kafamda tasarlayamadım daha ben şimdi sleep'i ben kesme içindemi kullanacağım yani sleep komutu okunduğu yerde donup kalıyormu işlemci kesmeyimi bekliyor? bunu bilmem yeterli olur...

@ sleep
yapılması gereken işlemler


kesme:
kesmeyi bekle
return

gibimi ?

key tarama rf ile gönderme v.s. komutlar sleep altınamı yazmam gerekiyor?

Erhan YILMAZ

Şimdi program su mantıkta olacak ilk başlangıcta gerekli tanımnlamaları giriş çıkış işlemlemlerini hepsini yapıp portb change kesmesini aç sonra pici uykuya sok sonrada kesme alt programında bütün işleri hallet yani keypadı tara sonrada rf ile gönder sonra tekrar kesmeden geri dön bu sekilde keypadda tusa basıldıkca deger okunup rf ile aktarılabilir

enrique_iglesias

erhan hocam Allah razı olsunnn çok açıklayıcı bir cümle olmuş çok teşekkür ederim bugün bu işi halletmeliyim :)

önce microcode programının başka bir sürümünü bulmakla başlayıp mpasm klasörünüde tabiki sanırım ondan yapıyor....