Derin Uyku Modlarından Uyanma


13

Çoğu mikrodenetleyici (örn. AVR'ler, MSP430'lar, PIC'ler, vb.) Bir dizi farklı uyku modunu destekler. "En derin" uyku modu, en düşük güç tüketimini (örn. "Güç Kapatma", "Kapat") algılayan moddur, ancak tüm saat sistemleri genellikle bu modlarda durdurulur ve bana göre " uyandırma ", harici uyaran yoluyla yapılır (örneğin pim değiştirme kesintileri, talaş sıfırlama). Bir şey mi kaçırıyorum? Bir MCU için periyodik bir uyandırma sinyali oluşturmak için inanılmaz derecede düşük güç yöntemleri var mı?

Hedefim güç tüketimini en aza indirgemek (yani mümkün olduğunca uzun süre uyu, mümkün olduğunca kısa süre uyanık kalmak), bir işlevi yerine getirmek için periyodik olarak uyanırken, bu tür davranışları başarmanın ortak yolu nedir? Daha da basitleştirmek için, fonksiyonumun vatansız olduğunu varsayalım (bunu yapmak için geçmişten hiçbir şey hatırlamak zorunda değilim).

Bu etkiyi elde etmek için MSP430'da WDT'yi kullanma konusunda bazı başarılar yaşadım. Sadece ana rutinimi fonksiyonum haline getirdim, son satır bekçi zamanlayıcısının belirli bir süre sonra sona ermesini ve LPM4.5'e veya "derin uyku" modunun adı ne olursa olsun sürmesini sağlıyor. Net sonuç, işlevin yerine getirilmesidir, MCU uyur, WDT'nin süresi dolar ve çip sıfırlanır, ad nauseum. Bu tür davranışları elde etmenin "daha iyi" ya da "daha zarif" ya da "daha fazla enerji tasarruflu" bir yol olup olmadığını mı merak ediyorsunuz?

Bu yaklaşımı henüz bir AVR ile denemedim, ancak WDT'nin AVR'lerde MSP430'a göre daha fazla "güç aç" olduğunu düşünüyorum, bu nedenle düşük güç çalışması için daha az çekici olabilir. Belki de düşük güce "evrensel" bir yaklaşım yoktur ve belirli bir ürün yelpazesinin sağladığı araçları kullanmanız gerekir. Yeni picoPower serisinin, uygulamanızı bu yapıya sığdırırsanız CPU'nun uyanık olmasını gerektirmeyen Olay Sistemi ve Uyku Yürüyüşü gibi birçok whiz-bang özelliği olduğunu biliyorum ...

Tamam, dolaşmam yeterli, işte sana ne söyleyeceksin :)

Düzenle Teknikleri gösteren somut örnekler de harika olurdu!


2
Focus.ti.com/lit/wp/slay015/slay015.pdf sayfasını gördünüz ? Mutlak uyku gücü sayılarının yanında bazı ilginç noktalar.
XTL

Yanıtlar:


15

Çoğu mikro, bir tür ön ölçekleyici ve zamanlayıcı kesintisi ile düşük güçlü bir 32.768 kHz saat kristal osilatörünü destekler. Ön ölçekleyiciyi zamanlayıcı yavaş saymaya ve kesinti istediğiniz zaman gerçekleşecek şekilde ayarlayın.

Kesin zamanlama kritik değilse, bazı mikroskoblarda yerleşik düşük güçlü RC zamanlayıcı bulunur.

Herhangi bir düşük güçlü mikro için veri sayfası, 32.768 osilatör (ve başka hiçbir şey) çalışırken gücü listeler. Sıfıra oldukça yakın. Bunun kabul edilebilir olup olmadığını görmek için matematiği yapabilir ve bekçi tarafından çizilen akımla karşılaştırabilirsiniz.

Tamam, örneğin msp430f2013'de, veri sayfasındaki güce bakalım.

Gerçek KAPALI modunun beş katı olmasına rağmen 0,5 μA neredeyse sıfırdır.

Daha fazla ayrıntı için veri sayfasının içine bakabiliriz.
LPM4'ten (her şey kapalı) LPM3'e (osilatörü çalıştırarak) geçmek 0.5 μA ile 1 μA arasındaki farktır.

Pilin 225 mAh kapasiteli CR2032 olduğunu varsayalım. Daha sonra LPM4'te bekleme süresi yaklaşık 50 yıldır ve LPM3'te bekleme süresi yaklaşık 25 yıldır. 25 yıl birçok uygulama için yeterince uzun, çünkü ON akımı (ölçüm sırasında) tüketime hakim.

alternatif metin


somut bir örnek
almaktan çekinmeyin

msp430f2013 ve cr2032 hücresi için yapılır.
markrages

AC20 ile yaptığım işte Cr2032'yi her 2 saniyede bir uyanarak 32768'de kullanıyoruz. Her 90 saniyede bir Telsiz kullanıyoruz. Her 10 saniyede bir sıcaklık ölçümü yapıyoruz. Yeni bir CR2032 ile 4 yılı aşabiliriz.
Kortuk

3

Bazı parçalar uyandırma için oldukça düşük güçlü osilatörlere (birkaç uA) sahiptir ve bazı PIC'ler, bir pim üzerinde çok yavaş yükselen bir voltajın uyanmak için donanıma sahiptir - bu, şarj etmek için uyumadan önce harici bir kondansatörden olabilir gerekli uyanma dönemi.


3

RTC'li PIC'ler RTC'yi alarm durumuna ayarlayabilir, bu nedenle MCU'yu belirli bir zamanda harici bir 32.768kHz kristalle uyandıracaktır. RTC + uyku modunda ~ 450nA IIRC çekerler, ancak RTC kapalıyken sadece 20nA.


3

AVR watchdog zamanlayıcıları düşündüğünüz kadar kötü değil. ATTiny13A veri sayfasına göre, 3V @ güç kapatma modunda akım çekimi, WDT etkinleştirilmeden 2μA ve 4μA'dır. Tabii ki, 2 kat daha fazla, ancak akımın kendisi yaklaşık 6.2 yıllık çalışma için yeterince küçüktür, bu da pilin yine de kendi kendine parçalanması için gereken süre civarındadır (kaynak: en iyi tarih).

Ek olarak, μC'nin etrafına taktığınız hemen hemen her şey çok daha fazla çizecektir. Aslında, böyle bir düşük güç devresi tasarlamanın en zor kısmı, uyku süresi boyunca şemanın geri kalanındaki tüm akımı kapatmaktadır.

Uyanma gecikmesi ayrıca, bellek çalışıyorsa ~ 12ms ila 8s arasında güzel bir şekilde yapılandırılabilir. Kısa kesinti rutinleri kullanılırsa gerçek frekans fark edilir bir fark yaratmaz: ADC'yi açmak, 1K'lık bir potu örneklemek, sonuçlardan bazı şeyleri hesaplamak ve genel tüketimde gözle görülür bir değişiklik olmadan uykuya geri dönmekle kaçtım ( multimetrenin durgunluğunu telafi etmek için büyük bir kapasitör ile düzeltildi).

WDT'nin doğru bir zaman işleyişi aracı olmadığını unutmayın, bu nedenle harici bir RTC'yi bağlamak isteyebilirsiniz. Bunlar sadece nanoamp tüketebilirler, bu yüzden iyi bir eşleşme olmalıdır. Aslında, söz konusu RTC düzenli darbeler üretebiliyorsa, bunu bir pin kullanma pahasına WDT yerine uyandırma kaynağınız olarak kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.