Isi kandungan:

Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85: 7 Langkah
Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85: 7 Langkah

Video: Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85: 7 Langkah

Video: Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85: 7 Langkah
Video: Kira bateri? Voltage, current, power.. mAh? Wh? Kita kira semua 2024, November
Anonim
Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85
Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85
Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85
Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85

atau: Menjalankan Arduino dengan sel duit syiling 2032 selama 2 tahun.

Menggunakan Digispark Arduino Board anda di luar kotak dengan program Arduino, ia menarik 20 mA pada 5 volt.

Dengan bank kuasa 5 volt 2000 mAh ia hanya akan beroperasi selama 4 hari.

Langkah 1: Mengurangkan Voltan Bekalan dengan Menggunakan Bateri LiPo

Mengurangkan Voltan Bekalan dengan Menggunakan Bateri LiPo
Mengurangkan Voltan Bekalan dengan Menggunakan Bateri LiPo

Menggunakan bateri LiPo dengan 3.7 volt sebagai bekalan papan Digispark anda hanya menarik 13 mA.

Dengan bateri 2000 mAh ia akan berfungsi selama 6 hari.

Langkah 2: Kurangkan Jam CPU

Sekiranya anda tidak menggunakan sambungan USB, matematik berat atau undian pantas dalam program anda, kurangkan kelajuan jam. Cth. Pustaka penerima inframerah pengundian berat IRMP berjalan dengan baik pada 8 MHz.

Pada 1 MHz Digispark anda menarik 6 mA. Dengan bateri 2000 mAh ia akan berfungsi selama 14 hari.

Langkah 3: Tanggalkan LED Power Board dan Power Regulator

Matikan LED kuasa dengan memutuskan wayar tembaga yang menghubungkan LED kuasa ke diod dengan pisau atau lepaskan / lumpuhkan perintang 102.

Oleh kerana anda menggunakan bateri LiPo sekarang, anda juga boleh mengeluarkan IC pengatur kuasa di atas kapal. Pertama angkat pin luar dengan bantuan besi pateri dan pin. Kemudian pateri penyambung besar dan lepaskan pengatur. Untuk pengatur kecil, gunakan banyak pateri dan panaskan semua 3 pin bersama, kemudian keluarkan.

Pada 1 MHz dan 3,8 volt Digispark anda kini menarik 4,3 mA. Dengan bateri 2000 mAh ia akan berfungsi selama 19 hari.

Langkah 4: Memutuskan Perintang Pullup USB D (ditandakan 152) Dari 5 Volt (VCC) dan Sambungkannya ke USB V +

Memutuskan USB D- Pullup Resistor (ditandakan 152) Dari 5 Volt (VCC) dan Sambungkannya ke USB V +
Memutuskan USB D- Pullup Resistor (ditandakan 152) Dari 5 Volt (VCC) dan Sambungkannya ke USB V +

Pengubahsuaian ini serasi dengan versi boot1 mikro nukleus all1.x. Sekiranya anda sudah mempunyai bootloader 2.x baru di papan anda, anda mesti menaikkan ke versi 2.5 dengan "activePullup" namanya. Cara termudah untuk melakukannya, adalah memasang pakej papan digispark baru dan membakar pemuat but dengan versi yang disyorkan (!!! bukan lalai atau agresif !!!).

Putus wayar tembaga di sisi perintang yang menunjuk ke ATtiny. Ini melumpuhkan antara muka USB dan seterusnya kemungkinan memprogram papan Digispark melalui USB. Untuk mengaktifkannya sekali lagi, tetapi masih menjimatkan kuasa, sambungkan perintang (ditandakan 152) terus ke USB V + yang mudah didapati di bahagian luar dioda pendek. Diod dan sisi yang betul dapat dijumpai dengan menggunakan penguji kesinambungan. Satu sisi diod ini disambungkan ke pin 8 dari ATtiny (VCC) dan Digispark 5V. Bahagian lain disambungkan ke USB V +. Sekarang perintang tarik USB hanya diaktifkan jika papan Digispark disambungkan ke USB mis. semasa pengaturcaraan.

2 langkah terakhir juga didokumentasikan di sini.

Pada 1 MHz dan 3,8 volt Digispark anda kini memperoleh 3 mA. Dengan bateri 2000 mAh ia akan berjalan selama 28 hari.

Langkah 5: Gunakan Tidur Bukan Kelewatan ()

Gunakan Tidur Bukan Kelewatan ()
Gunakan Tidur Bukan Kelewatan ()

Daripada kelewatan yang lama, anda boleh menggunakan tidur CPU penjimatan kuasa. Tidur boleh berlangsung dari 15 milisaat hingga 8 saat dalam langkah 15, 30, 60, 120, 250, 500 milisaat dan 1, 2, 4, 8 saat.

Oleh kerana masa permulaan dari tidur adalah 65 milisaat dengan tetapan fius digispark kilang, hanya kelewatan lebih besar daripada 80 ms yang dapat diganti dengan tidur.

Semasa tidur Digispark anda menarik 27 µA. Dengan sel butang 200 mAh 2032 ia akan tidur selama 10 bulan.

Untuk betul, Digispark sekurang-kurangnya bangun setiap 8 saat, berjalan sekurang-kurangnya 65 milisaat dan menarik arus sekitar 2 mA. Ini membawa kepada arus purata 42 µA dan 6 bulan. Dalam senario ini hampir tidak ada perbezaan jika program anda berjalan selama 10 milisaat (setiap 8 saat).

Kod untuk menggunakan tidur adalah:

#include #include volatile uint16_t sNumberOfSleeps = 0; millis_timer_millis panjang tidak stabil yang tidak menentu; batal persediaan () {sleep_enable (); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // mod tidur paling dalam…} gelung kosong () {… sleepWithWatchdog (WDTO_250MS, true); // tidur selama 250 ms… sleepWithWatchdog (WDTO_2S, benar); // tidur selama 2 detik…} / * * aWatchdogPrescaler dapat 0 (15 ms) hingga 3 (120 ms), 4 (250 ms) hingga 9 (8000 ms) * / uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000; untuk (uint8_t i = 0; saya menjimatkan 200 uA // gunakan wdt_enable () kerana menangani bahawa bit WDP3 berada di bit 5 dari daftar WDTCR wdt_enable (aWatchdogPrescaler); WDTCR | = _BV (WDIE) | _BV (WDIF); // Watchdog interrupt enabled + reset interrupt flag -> memerlukan ISR (WDT_vect) sei (); // Aktifkan gangguan sleep_cpu (); // Selang pengawas akan membangunkan kita dari tidur wdt_disable (); // Kerana gangguan seterusnya akan berlaku menuju ke reset, kerana wdt_enable () menetapkan WDE / Watchdog System Reset Enable ADCSRA | = ADEN; / * * Oleh kerana jam pemasa mungkin dilumpuhkan, sesuaikan milis hanya jika tidak tidur dalam mod IDLE (SM2… 0 bit adalah 000) * / jika (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis + = computeSleepMillis (aWatchdogPrescaler);}} / * * Gangguan ini membangunkan cpu dari tidur * / ISR (WDT_vect) {sNumberOfSleeps ++;}

Langkah 6: Ubah Sekering

22 mA dari 27 mA diambil oleh BOD (pengesanan BrownOutDetection / undervoltage). BOD hanya dapat dilumpuhkan dengan memprogramkan semula sekering, yang hanya dapat dilakukan dengan programmer ISP. Dengan menggunakan skrip ini, anda dapat mengurangkan arus hingga 5.5 µA dan juga mengurangkan masa permulaan dari tidur hingga 4 milisaat.

5 baki 5.5 µA diambil oleh kaunter pengawas aktif. Sekiranya anda dapat menggunakan set semula luaran untuk bangun, penggunaan saat ini dapat turun ke 0,3 µA seperti yang dinyatakan dalam lembar data.

Sekiranya anda tidak dapat mencapai nilai ini, alasannya adalah, bahawa arus balik dioda schottky antara VCC dan penarikan terlalu tinggi. Perlu diingat bahawa perintang 12 MOhm juga menarik 0.3 µA pada 3.7 volt.

Ini menghasilkan penggunaan arus rata-rata 9 µA (2.5 tahun dengan sel butang 200 mAh 2032) jika anda mis. memproses data setiap 8 saat selama 3 milisaat seperti di sini.

Langkah 7: Maklumat Lanjut

Lukisan papan Digispark semasa.

Projek menggunakan arahan ini.

Disyorkan: