Daftar Isi:

Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85: 7 Langkah
Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85: 7 Langkah

Video: Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85: 7 Langkah

Video: Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85: 7 Langkah
Video: Cara Mengetahui Aplikasi Yang Menguras Baterai 2024, Desember
Anonim
Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85
Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85
Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85
Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85

atau: Menjalankan Arduino dengan sel koin 2032 selama 2 tahun.

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

Dengan power bank 5 volt 2000 mAh hanya akan berjalan selama 4 hari.

Langkah 1: Mengurangi Tegangan Pasokan dengan Menggunakan Baterai Lipo

Mengurangi Tegangan Pasokan dengan Menggunakan Baterai Lipo
Mengurangi Tegangan Pasokan dengan Menggunakan Baterai Lipo

Menggunakan baterai LiPo dengan 3,7 volt sebagai suplai papan Digispark Anda hanya menarik 13 mA.

Dengan baterai 2000 mAh akan berjalan selama 6 hari.

Langkah 2: Kurangi Jam CPU

Jika Anda tidak menggunakan koneksi USB, matematika berat atau polling cepat dalam program Anda, kurangi kecepatan clock. Misalnya. perpustakaan penerima inframerah polling berat IRMP berjalan dengan baik pada 8 MHz.

Pada 1 MHz Digispark Anda menarik 6 mA. Dengan baterai 2000 mAh bisa bertahan selama 14 hari.

Langkah 3: Lepaskan LED Daya dan Pengatur Daya di Papan

Nonaktifkan LED daya dengan memutus kabel tembaga yang menghubungkan LED daya ke dioda dengan pisau atau lepaskan / nonaktifkan resistor 102.

Karena Anda menggunakan baterai LiPo sekarang, Anda juga dapat melepas IC regulator daya terpasang. Pertama angkat pin luar dengan bantuan besi solder dan pin. Kemudian solder konektor besar dan lepaskan regulator. Untuk regulator kecil, gunakan banyak solder dan panaskan semua 3 pin secara bersamaan, lalu lepaskan.

Pada 1 MHz dan 3,8 volt Digispark Anda sekarang menarik 4,3 mA. Dengan baterai 2000 mAh akan berjalan selama 19 hari.

Langkah 4: Lepaskan Resistor USB D- Pullup (bertanda 152) Dari 5 Volt (VCC) dan Hubungkan ke USB V+

Melepaskan Resistor USB D- Pullup (bertanda 152) Dari 5 Volt (VCC) dan Menghubungkannya ke USB V+
Melepaskan Resistor USB D- Pullup (bertanda 152) Dari 5 Volt (VCC) dan Menghubungkannya ke USB V+

Modifikasi ini kompatibel dengan versi all1.x dari bootloader micronucleus. Jika Anda sudah memiliki bootloader 2.x baru di papan Anda, Anda harus meningkatkan ke salah satu versi 2.5 dengan "activePullup" di namanya. Cara termudah untuk melakukannya, adalah menginstal paket papan digispark baru dan membakar bootloader dengan versi yang direkomendasikan (!!! bukan default atau agresif!!!).

Putuskan kabel tembaga di sisi resistor yang mengarah ke ATtiny. Ini menonaktifkan antarmuka USB dan pada gilirannya kemungkinan untuk memprogram papan Digispark melalui USB. Untuk mengaktifkannya kembali, namun tetap menghemat daya, sambungkan resistor (bertanda 152) langsung ke USB V+ yang mudah didapat di sisi luar dioda shottky. Dioda dan sisi-sisinya yang benar dapat ditemukan dengan menggunakan penguji kontinuitas. Satu sisi dioda ini terhubung ke pin 8 dari ATtiny (VCC) dan Digispark 5V. Sisi lain terhubung ke USB V+. Sekarang resistor pullup USB hanya diaktifkan jika papan Digispark terhubung ke USB mis. selama pemrograman.

2 langkah terakhir juga didokumentasikan di sini.

Pada 1 MHz dan 3,8 volt Digispark Anda sekarang menarik 3 mA. Dengan baterai 2000 mAh akan berjalan selama 28 hari.

Langkah 5: Gunakan Tidur Alih-alih Penundaan ()

Gunakan Tidur Alih-alih Penundaan ()
Gunakan Tidur Alih-alih Penundaan ()

Alih-alih penundaan lama, Anda dapat menggunakan tidur CPU hemat daya. Tidur dapat berlangsung dari 15 milidetik hingga 8 detik dalam langkah 15, 30, 60, 120, 250, 500 milidetik dan 1, 2, 4, 8 detik.

Karena waktu mulai dari tidur adalah 65 milidetik dengan pengaturan sekering digispark pabrik, hanya penundaan yang lebih besar dari 80 ms yang dapat diganti dengan tidur.

Selama tidur Digispark Anda menarik 27 A. Dengan sel tombol 200 mAh 2032 itu akan tidur selama 10 bulan.

Agar benar, Digispark setidaknya harus bangun setiap 8 detik, berjalan setidaknya 65 milidetik dan menarik arus sekitar 2 mA. Hal ini menyebabkan arus rata-rata 42 A dan 6 bulan. Dalam skenario ini hampir tidak ada bedanya jika program Anda berjalan selama 10 milidetik (setiap 8 detik).

Kode untuk menggunakan sleep adalah:

#include #include uint16_t volatil sNumberOfSleeps = 0; extern volatile unsigned long millis_timer_millis; void setup() { sleep_enable(); set_sleep_mode(SLEEP_MODE_PWR_DOWN); // mode tidur terdalam … } void loop(){ … sleepWithWatchdog(WDTO_250MS, benar); // tidur selama 250 md … sleepWithWatchdog(WDTO_2S, benar); // tidur selama 2 d … } /* * aWatchdogPrescaler dapat berupa 0 (15 md) hingga 3 (120 md), 4 (250 md) hingga 9 (8000 md) */ uint16_t computeSleepMillis(uint8_t aWatchdogPrescaler) { uint16_t tResultMillis = 8000; for (uint8_t i = 0; saya menghemat 200 uA // gunakan wdt_enable() karena menangani bahwa bit WDP3 berada di bit 5 dari register WDTCR wdt_enable(aWatchdogPrescaler); WDTCR |= _BV(WDIE) | _BV(WDIF); // Pengaktifan interupsi pengawas + setel ulang flag interupsi -> membutuhkan ISR(WDT_vect) sei(); // Aktifkan interupsi sleep_cpu(); // Interupsi pengawas akan membangunkan kita dari tidur wdt_disable(); // Karena interupsi berikutnya akan sebaliknya menyebabkan reset, karena wdt_enable() set WDE / Watchdog System Reset Aktifkan ADCSRA |= ADEN; /* * Karena jam timer dapat dinonaktifkan, sesuaikan milis hanya jika tidak tidur dalam mode IDLE (SM2…0 bit adalah 000) */ jika (aAdjustMillis && (MCUCR & ((_BV(SM1) | _BV(SM0)))) != 0) { millis_timer_millis += computeSleepMillis(aWatchdogPrescaler); } } /* * Interupsi ini membangunkan cpu dari tidur */ ISR(WDT_vect) { sNumberOfSleeps++; }

Langkah 6: Ubah Sekring

22 mA dari 27 mA ditarik oleh BOD (BrownOutDetection/deteksi undervoltage). BOD hanya dapat dinonaktifkan dengan memprogram ulang sekering, yang hanya dapat dilakukan dengan programmer ISP. Dengan menggunakan skrip ini, Anda dapat mengurangi arus hingga 5,5 A dan juga mengurangi waktu mulai dari tidur menjadi 4 milidetik.

5 dari 5,5 A yang tersisa diambil oleh penghitung pengawas aktif. Jika Anda dapat menggunakan reset eksternal untuk bangun, konsumsi saat ini dapat turun ke 0,3 A seperti yang tercantum dalam lembar data.

Jika Anda tidak dapat mencapai nilai ini, alasannya mungkin karena arus balik dioda schottky antara VCC dan pullup terlalu tinggi. Perlu diingat bahwa resistor 12 MOhm juga menarik 0,3 A pada 3,7 volt.

Ini menghasilkan konsumsi arus rata-rata 9 A (2,5 tahun dengan sel tombol 200 mAh 2032) jika Anda misalnya. memproses data setiap 8 detik selama 3 milidetik seperti di sini.

Langkah 7: Informasi Lebih Lanjut

Gambar papan Digispark saat ini.

Proyek menggunakan instruksi ini.

Direkomendasikan: