İçindekiler:

Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma: 7 Adım
Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma: 7 Adım

Video: Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma: 7 Adım

Video: Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma: 7 Adım
Video: Guessing app's passcode using ATTINY85 Arduino board #shorts 2024, Kasım
Anonim
Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma
Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma
Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma
Digispark ATtiny85 için Pil Gücü Tüketimini Azaltma

veya: 2 yıl boyunca 2032 madeni para hücreli bir Arduino çalıştırmak.

Digispark Arduino Board'unuzu kutudan çıktığı gibi Arduino programı ile kullanarak 5 voltta 20 mA çeker.

2000 mAh'lik 5 voltluk bir powerbank ile sadece 4 gün çalışacaktır.

Adım 1: LiPo Pil Kullanarak Besleme Voltajını Azaltma

LiPo Pil Kullanarak Besleme Voltajını Azaltma
LiPo Pil Kullanarak Besleme Voltajını Azaltma

Besleme olarak 3,7 voltluk bir LiPo pil kullanarak Digispark kartınız sadece 13 mA çeker.

2000 mAh pil ile 6 gün çalışacaktır.

Adım 2: CPU Saatini Azaltın

Programınızda USB bağlantısı, yoğun matematik veya hızlı yoklama kullanmıyorsanız saat hızını düşürün. Örneğin. ağır sorgulamalı kızılötesi alıcı kitaplığı IRMP, 8 MHz'de iyi çalışır.

1 MHz'de Digispark'ınız 6 mA çeker. 2000 mAh pil ile 14 gün çalışacaktır.

Adım 3: Yerleşik Güç LED'ini ve Güç Düzenleyicisini çıkarın

Güç LED'ini diyota bağlayan bakır teli bir bıçakla keserek veya 102 direncini sökerek/devre dışı bırakarak güç LED'ini devre dışı bırakın.

Artık bir LiPo pil kullandığınız için, yerleşik güç düzenleyici IC'yi de çıkarabilirsiniz. Önce dış pimleri bir havya ve pim yardımıyla kaldırın. Ardından büyük konektörü lehimleyin ve regülatörü çıkarın. Küçük regülatörler için çok fazla lehim kullanın ve 3 pimi birlikte ısıtın, ardından çıkarın.

1 MHz ve 3,8 voltta Digispark'ınız artık 4,3 mA çekiyor. 2000 mAh pil ile 19 gün çalışacaktır.

Adım 4: USB D- Çekme Direncinin (152 olarak işaretlenmiştir) 5 Volttan (VCC) Çıkarılması ve USB V+'a Bağlanması

USB D- Çekme Direncinin (152 olarak işaretlenmiştir) 5 Volttan (VCC) Çıkarılması ve USB V+'a Bağlanması
USB D- Çekme Direncinin (152 olarak işaretlenmiştir) 5 Volttan (VCC) Çıkarılması ve USB V+'a Bağlanması

Bu değişiklik, mikronükleus önyükleyicinin all1.x sürümleriyle uyumludur. Anakartınızda zaten yeni bir 2.x önyükleyiciniz varsa, adında "activePullup" olan 2.5 sürümlerinden birine yükseltmeniz gerekir. Bunu yapmanın en kolay yolu, yeni digispark board paketini kurmak ve bootloader'ı önerilen (!!!varsayılan veya agresif değil!!!) sürümle yakmaktır.

Direncin ATtiny'yi gösteren tarafındaki bakır kabloyu kırın. Bu, USB arabirimini devre dışı bırakır ve buna karşılık Digispark kartını USB üzerinden programlama olanağını devre dışı bırakır. Yeniden etkinleştirmek, ancak yine de güçten tasarruf etmek için, rezistörü (152 ile işaretli) doğrudan shottky diyotun dış tarafında kolayca bulunabilen USB V+'a bağlayın. Diyot ve doğru tarafları bir süreklilik test cihazı kullanılarak bulunabilir. Bu diyotun bir tarafı ATtiny (VCC) ve Digispark 5V'nin 8 numaralı pinine bağlanır. Diğer taraf USB V+'a bağlıdır. Artık USB çekme direnci yalnızca Digispark kartı USB'ye bağlıysa etkinleştirilir; programlama sırasında.

Son 2 adım da burada belgelenmiştir.

1 MHz ve 3,8 voltta Digispark'ınız artık 3 mA çekiyor. 2000 mAh pil ile 28 gün çalışacaktır.

Adım 5: Delay() Yerine Uyku Kullanın

Gecikme Yerine Uyku Kullanın()
Gecikme Yerine Uyku Kullanın()

Uzun gecikmeler yerine güç tasarrufu sağlayan CPU uykusunu kullanabilirsiniz. Uykular 15, 30, 60, 120, 250, 500 milisaniyelik ve 1, 2, 4, 8 saniyelik adımlarla 15 milisaniyeden 8 saniyeye kadar sürebilir.

Fabrika digispark sigorta ayarları ile uykudan başlama süresi 65 milisaniye olduğundan, sadece 80 ms'den büyük gecikmeler uyku ile değiştirilebilir.

Uyku sırasında Digispark'ınız 27 µA çeker. 200 mAh düğme hücre 2032 ile 10 ay boyunca uyur.

Doğru olması için, Digispark'ın en az 8 saniyede bir uyanması, en az 65 milisaniye çalışması ve yaklaşık 2 mA akım çekmesi gerekir. Bu, ortalama 42 µA ve 6 aylık bir akıma yol açar. Bu senaryoda, programınızın 10 milisaniye (her 8 saniyede bir) çalışması neredeyse hiç fark etmez.

Uyku kullanma kodu:

#include #include uçucu uint16_t sNumberOfSleeps = 0; extern uçucu işaretsiz uzun millis_timer_millis; geçersiz kurulum() { sleep_enable(); set_sleep_mode(SLEEP_MODE_PWR_DOWN); // en derin uyku modu … } void loop(){ … sleepWithWatchdog(WDTO_250MS, true); // 250 ms uyku … sleepWithWatchdog(WDTO_2S, true); // 2 sn için uyku … } /* * aWatchdogPrescaler 0 (15 ms) ila 3(120 ms), 4 (250 ms) ila 9 (8000 ms) olabilir */ uint16_t hesaplamaSleepMillis(uint8_t aWatchdogPrescaler) { uint16_t tResultMillis = 8000; for (uint8_t i = 0; 200 uA tasarruf ediyorum // wdt_enable() kullan, çünkü WDP3 bitinin WDTCR kaydının 5. bitinde olduğunu ele alır wdt_enable(aWatchdogPrescaler); WDTCR |= _BV(WDIE) | _BV(WDIF); // Watchdog kesmesi etkinleştirme + kesme bayrağını sıfırlama -> ISR(WDT_vect) sei()'ye ihtiyaç duyar; // Kesintileri etkinleştirme sleep_cpu(); // Watchdog kesmesi bizi uykudan uyandırır wdt_disable(); // Çünkü sonraki kesme başka türlü olur wdt_enable() WDE'yi ayarladığından / Watchdog Sistem Sıfırlama Etkinleştir ADCSRA |= ADEN; /* * Zamanlayıcı saati devre dışı bırakılabileceğinden, millis ayarı yalnızca BOŞLUK modunda uyumazsa (SM2…0 bitleri 000'dir) */ eğer (aAdjustMillis && (MCUCR & ((_BV(SM1) | _BV(SM0)))) != 0) { millis_timer_millis += hesaplamaSleepMillis(aWatchdogPrescaler); } } /* * Bu kesme, işlemciyi uyku modundan çıkarır */ ISR(WDT_vect) { sNumberOfSleeps++; }

Adım 6: Sigortaları Değiştirin

27 mA'nın 22 mA'sı BOD (BrownOutDetection/düşük voltaj algılama) tarafından çekilir. BOD, yalnızca bir ISP programcısı ile yapılabilen sigortaların yeniden programlanmasıyla devre dışı bırakılabilir. Bu betiği kullanarak akımı 5,5 µA'ya düşürebilir ve ayrıca uykudan başlama süresini 4 milisaniyeye düşürebilirsiniz.

Kalan 5,5 µA'nın 5'i aktif bekçi sayacı tarafından çekilir. Uyandırma için harici sıfırlamaları kullanabiliyorsanız, mevcut tüketim veri sayfasında belirtildiği gibi 0,3 µA'ya kadar düşebilir.

Bu değere ulaşamıyorsanız bunun nedeni VCC ile pullup arasındaki schottky diyotun ters akımının çok yüksek olması olabilir. 12 MOhm'lik bir direncin ayrıca 3,7 voltta 0,3 µA çektiğini unutmayın.

Bu, örn. verileri burada olduğu gibi 3 milisaniye boyunca her 8 saniyede bir işleyin.

7. Adım: Daha Fazla Bilgi

Bir Digispark panosunun güncel çizimi.

Bu talimatları kullanarak projelendirin.

Önerilen: