Pic ile taşınabilir aygıt yapımı

Başlatan ahmetgokce01, 03 Eylül 2012, 15:27:35

ahmetgokce01

     Merhaba arkadaşlar PIC 16f886 ile 3310 lcd ekranlı, iki kalem pille çalışan saat, termometre uygulaması yapıyorum sistem çalışıyor fakat çok fazla enerji tüketiyor şuan mevcut enerji tüketimi ortalama 1mA CR2025 pil ile ancak 6 gün gidiyor, ekranın beslemesini kestiğimizde çektiği akım ancak 0.8-0.9 mA'lere düşüyor ki buda yeterli değil bu enerji tüketimini minimuma indirmenin nasıl bir yolu vardır?

     Eğer PIC uyku modunda iken saat değerlerini sayar ve istediğimiz anda uyandırmayı sağlarsak şarjın uzun gitmesini sağlarız diye düşünüyorum bu konu hakkında çözüm önerileriniz nelerdir ? Şimdiden teşekkürler...

pea

Uyku modu + düşük hız modu + imkan varsa yeni seri çok düşük güç harcayan Pic deneyebilirsiniz

ahmetgokce01

Yeni seri biraz pahalı olduğu için 16f886 kullanmaya karar verdim datasheetinde nanoWatt teknoloji diyor. Hız olarak 4MHz dahili osilatörünü kullandım aynı zamanda timer1 için harici osilatörü 32.768KHz kristal bağlayarak kullandım(saat devresinde gerçek zamanı yakalamak için).
     Şuan tek sorunum uyku modundayken herşeyin durması benim isteğim uyku modunda iken saatin çalışması ve ayarlanan saat geldiğinde uykudan çıkıp işlemini yapıp tekrar uyuması bununla ilgili CCS C nasıl bir yol izleyebilirim, örnek kodlar nasıl olur?

diot


mehmet

TI' nin MSP430 işlemcileri var, çektiği akım uykuda 0,1uA ya kadar
düşürüşlebiliyor. Harici saat işlemcisi kullanmadan yapabilirisin.
main fonksiyonunda uyutuyorsun, timer ve çevre birimler uyandırıyor.
(harici 32.768Hz kristal ve dahili RC osc ile)
www.ti.com
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

serdararikan

18f26k22 gibi bir MCU kullan.uyku modında 70nA çekiyor

Veli B.

Ne yazık ki low power sistemler sadece MCU ile bitmiyor. Hatta günümüzde ki teknoloji sayesinde MCU kısmı en kolayı oldu.
Güç bölümü en önemli unsurlardan birisi.
Çevresel donanımları uyutmak(mümkünse kapatmak) çok önemli.
Şematik ve PCB tasarımı keza aynı şekilde(örneğin:düşük güçlü sistemlerde ısı dağılımı ciddi sorun oluşturabiliyor veya ilgisiz pinlerin bağlantı şekli gereksiz akım sarfiyatına sebep olabiliyor).
Malzemelerin kalitesi ve eşlenik(kalitesiz markalarda aynı kodlu malzeme farklı karakteristik özellikler sergileyebiliyor.) olması keza çok önemli.

ahmetgokce01

düşük güç tüketimi deyince tabiki ilk akla gelen msp430 fakat msp430 ile ilgili adam akıllı bir kaynak olamadığı için ve bana göre uzun ar-ge süreci gerektirdiği için CCS C'de pic programlamak daha pratiğime geldi sonuç olarak projede PIC 16f886 kullandım.Bu kullandığım 16f886 mcuda minimum güç tüketiminin yollarını arıyorum.
     Sistemde harici saat entegresi kullanmıyorum, Picin hem dahili osilatörünü hemde harici osilatörünü aynı anda kullanıyorum, harici bağlanan kristal 32.768KHz bu saati döndermek için, dahili osilatör ise 4MHz olarak ayarlı bu da main fonksiyonunu çalıştırmak için.

Not:Kurduğum sistemde sleep(); fonksiyonunu kullandığımda pic uyuyor ve saat duruyor uyandırdığımda saat kaldığı yerden devam ediyor.
     

     Sorunuma gelecek olursam, ben Pic 16f886'da sleep modunda yani pic uyuyor iken saatin çalışmasını istiyorum?

     Böyle birşey mümkün mü? Mümkünse izlenecek yollar neler ?

FEHMİ_ASM

    Hocam Wdt yi neden açmıyorsunuz?
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

ahmetgokce01

WDT'yi açtığımızda her taşmada uyku modundan çıkıyor ama sizin bildiğiniz farklı bir yol varsa bu soruna yönelik öğrenmek isterim.

FEHMİ_ASM

#10
    Aklıma gelen başka bir yöntem şu an yok.

   Ancak, her wdt kesmesinde uyanma olmasını değerlendirebilirsiniz. Wdt'yi 250mS nin katları şeklinde (veya 100mS, 200mS, 1 sn..gibi) akort edebilirseniz, donanımsal bir saat sinyali oluşturmuş olursunuz. Her kesme çıkışı 1 sn desen, birkaç sayaç değişkeniyle ekran saatini güncelleyebilirsin. Her Wdt kesmesinden sonra zaten Wdt tekrar başlar ve o henüz başlamışken siz çok kısa bir sürede main işlemlerinizi yapar ve tekrar uykuya geçersiniz.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

ahmetgokce01

evet dediğiniz gibide olabilir ama onda da zamanda sapmalar meydana gelir çünkü bu sistem uzun süre çalışacak.

FEHMİ_ASM

#12
       Hocam zamanda sapmalar neden meydana gelsin? Main programınız uzun olsa dahi hiç fark edemez. Çünkü Wdt her sıfırlandığında otomatikman yeniden başlıyor, sadece 0'dan geçiş anlarında bayrağını 1 yapıyor. Burada cycle'da bir öteleme, dolayısı ile sapma oluşamaz. Çünkü main veya kesme alt programının bitmesi beklenmiyor. Wdt'nin taşması ile yeniden başlaması arasındaki gecikme değeri "0".
       Ancak, Wdt kullanırken zamanda mükemmel bir çizgi oluşamamasının tek sebebi - RC osc kullanmak zorunda kalınması gösterilebilir. Öyle ki, emin olmamakla birlikte, Wdt - kristal ile çalışmıyor diye hatırlıyorum.

    Eğer yine de Wdt konusunda şüphelerim var derseniz, o zamanda DS107 gibi bir Real Tıme Clock kullanabilirsiniz. Ayrıca yan tarafta farklı kesme istekleri veya hizmetleri için çok keskin (kararlıkta) periyodik puls çıkışı var.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

Veli B.

Oluşabilir, MCU ların dahili osilatörleri kristaller kadar keskin değildir ve ısı vb konulardan çok daha fazla etkilenirler, İdeal de olması gereken 4 mhz lik kristal 4.005 mhz olursa her saniye için 5 khz lik sapma oluşur ve totalde gün bazında bakarsanız ciddi sayılabilecek bir sapma görürsünüz ve ne yazık ki bunu düzeltme yolu yoktur(WDT registerları ile oynamaktan başka). Seri üretim yapacaksanız bu ciddi bir sorundur. Yaz ve kış şartlarına göre, pilli sistemler için besleme değerlerine göre dahili osc kontrolü yapmanız ve reg ayarlarını düzeltmeniz gerekir.

Harici bir RTC kullanmak ve pcb tarafını doğru tasarlamak ile büyük oranda bu sorunu aşarsınız.

X-Fi

32.768khz kristalini Timer1 T1OSO T1OSI uclarına gir 1 sn de bir uyanması için gerekli ayarları yap TMR1IF kesmesini kur pic i uyut.

Her saniye başında pic uyansın ekranı güncellesin tekrar uyusun.

Bu şekilde çözüme ulaşırsın. dahada akım kazanmak istiyorsan saniye göstergesini kaldır pici daha uzun uyut.

MSP430 lar mips modunda 200uA çekiyor ancak böle bi uygulama için gereksiz yere ar-ge yapmış olabilirsin bece pic ile yapmak en güzeli.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)