Talaan ng mga Nilalaman:

Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85: 7 Mga Hakbang
Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85: 7 Mga Hakbang

Video: Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85: 7 Mga Hakbang

Video: Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85: 7 Mga Hakbang
Video: PAANO PATAGALIN ANG BATTERY NG CELLPHONE NYO NG 3 TO 7 DAYS ! | ALAMIN ! 2024, Nobyembre
Anonim
Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85
Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85
Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85
Pagbawas ng Pagkonsumo ng Lakas ng Baterya para sa Digispark ATtiny85

o: Pagpapatakbo ng isang Arduino na may 2032 coin cell sa loob ng 2 taon.

Gamit ang iyong Digispark Arduino Board sa labas ng kahon gamit ang isang Arduino program kumukuha ito ng 20 mA sa 5 volt.

Sa isang 5 volt power bank na 2000 mAh tatakbo lamang ito sa loob ng 4 na araw.

Hakbang 1: Pagbawas ng Boltahe ng Suplay sa pamamagitan ng Paggamit ng isang LiPo Baterya

Pagbawas ng Boltahe ng Suplay sa pamamagitan ng Paggamit ng isang LiPo Baterya
Pagbawas ng Boltahe ng Suplay sa pamamagitan ng Paggamit ng isang LiPo Baterya

Ang paggamit ng isang baterya ng LiPo na may 3.7 volt bilang supply ng iyong Digispark board ay gumuhit lamang ng 13 mA.

Sa isang baterya na 2000 mAh tatakbo ito sa loob ng 6 na araw.

Hakbang 2: Bawasan ang CPU Clock

Kung hindi ka gumagamit ng koneksyon sa USB, mabibigat na matematika o mabilis na botohan sa iyong programa, bawasan ang bilis ng orasan. Hal. ang mabibigat na polling infrared na tumatanggap ng library ng IRMP ay tumatakbo nang maayos sa 8 MHz.

Sa 1 MHz ang iyong Digispark ay kumukuha ng 6 mA. Sa isang baterya na 2000 mAh tatakbo ito sa loob ng 14 na araw.

Hakbang 3: Alisin ang sa Board Power LED at Power Regulator

Huwag paganahin ang kuryente na LED sa pamamagitan ng pagsira ng tanso na tanso na nag-uugnay sa LED na kuryente sa diode gamit ang isang kutsilyo o alisin / huwag paganahin ang 102 risistor.

Dahil gumagamit ka ng isang baterya ng LiPo ngayon, maaari mo ring alisin ang on board power regulator IC. Itaas muna ang mga panlabas na pin sa tulong ng isang solder iron at isang pin. Pagkatapos ay maghinang ng malaking konektor at alisin ang regulator. Para sa maliliit na regulator, gumamit ng mas maghinang at painitin ang lahat ng 3 pin nang magkasama, pagkatapos ay alisin ito.

Sa 1 MHz at 3.8 volt ang iyong Digispark ngayon ay kumukuha ng 4.3 mA. Sa isang baterya na 2000 mAh tatakbo ito sa loob ng 19 na araw.

Hakbang 4: Ididiskonekta ang USB D- Pullup Resistor (minarkahang 152) Mula sa 5 Volt (VCC) at Ikonekta ito sa USB V +

Ididiskonekta ang USB D- Pullup Resistor (minarkahang 152) Mula sa 5 Volt (VCC) at Ikonekta ito sa USB V +
Ididiskonekta ang USB D- Pullup Resistor (minarkahang 152) Mula sa 5 Volt (VCC) at Ikonekta ito sa USB V +

Ang pagbabago na ito ay katugma sa mga bersyon ng all1.x ng micronucleus bootloader. Kung mayroon ka ng isang bagong 2.x bootloader sa iyong board, dapat mong i-upgrade sa isa ang 2.5 na bersyon na may "activePullup" sa pangalan nito. Ang pinakamadaling paraan upang gawin ito, ay ang pag-install ng bagong digispark board package at sunugin ang bootloader gamit ang inirekumendang (!!! hindi ang default o agresibo !!!) na bersyon.

Basagin ang wire ng tanso sa gilid ng risistor na tumuturo sa ATtiny. Hindi pinagana nito ang interface ng USB at sa turn ang posibilidad na mai-program ang Digispark board sa pamamagitan ng USB. Upang paganahin itong muli, ngunit makatipid pa rin ng kuryente, ikonekta ang risistor (minarkahang 152) nang direkta sa USB V + na madaling magagamit sa panlabas na bahagi ng shottky diode. Ang diode at ang mga tamang gilid nito ay matatagpuan sa pamamagitan ng paggamit ng isang pagpapatuloy na tester. Ang isang bahagi ng diode na ito ay konektado sa pin 8 ng ATtiny (VCC) at Digispark 5V. Ang kabilang panig ay konektado sa USB V +. Ngayon ang resistor ng USB pullup ay aktibo lamang kung ang Digispark board ay konektado sa USB hal. sa panahon ng programa.

Ang huli na 2 mga hakbang ay naitala din dito.

Sa 1 MHz at 3.8 volt ang iyong Digispark ngayon ay kumukuha ng 3 mA. Sa isang baterya na 2000 mAh tatakbo ito sa loob ng 28 araw.

Hakbang 5: Gumamit ng Pagtulog sa halip na Pag-antala ()

Gumamit ng Pagtulog sa halip na pagkaantala ()
Gumamit ng Pagtulog sa halip na pagkaantala ()

Sa halip na matagal na pagkaantala maaari kang gumamit ng pag-save ng lakas sa pagtulog sa CPU. Ang pagtulog ay maaaring tumagal mula 15 milliseconds hanggang 8 segundo sa mga hakbang na 15, 30, 60, 120, 250, 500 milliseconds at 1, 2, 4, 8 segundo.

Dahil ang oras ng pagsisimula mula sa pagtulog ay 65 milliseconds kasama ang mga setting ng factory digispark fuse, ang mga pagkaantala lamang na mas malaki sa 80 ms ay maaaring mapalitan ng pagtulog.

Habang natutulog ang iyong Digispark ay kumukuha ng 27 µA. Sa isang 200 mAh button cell 2032 matutulog ito sa loob ng 10 buwan.

Upang maging tama, ang Digispark dapat na hindi bababa sa magising bawat 8 segundo, na tumatakbo nang hindi bababa sa 65 milliseconds at gumuhit sa paligid ng 2 mA kasalukuyang. Humahantong ito sa isang average na kasalukuyang 42 µA at 6 na buwan. Sa senaryong ito, halos walang pagkakaiba kung tumatakbo ang iyong programa sa loob ng 10 milliseconds (bawat 8 segundo).

Ang code para sa paggamit ng pagtulog ay:

#include #include pabagu-bago ng isip uint16_t sNumberOfS Sleeps = 0; pabagu-bago ng isip unsigned mahabang millis_timer_millis; void setup () {sleep_enable (); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // deepest sleep mode…} void loop () {… sleepWithWatchdog (WDTO_250MS, true); // sleep for 250 ms… sleepWithWatchdog (WDTO_2S, totoo); // sleep for 2 s…} / * * aWatchdogPrescaler ay maaaring maging 0 (15 ms) hanggang 3 (120 ms), 4 (250 ms) hanggang sa 9 (8000 ms) * / uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000; para sa (uint8_t i = 0; nakakatipid ako ng 200 uA // use wdt_enable () dahil hinahawakan nito na ang WDP3 bit ay nasa bit 5 ng WDTCR register wdt_enable (aWatchdogPrescaler); WDTCR | = _BV (WDIE) | _BV (WDIF); // Watchdog makagambala paganahin + i-reset ang abala ng bandila -> kailangan ng ISR (WDT_vect) sei (); // Paganahin ang makagambala sa pagtulog_cpu (); // Ang abala ng watchdog ay magigising sa amin mula sa pagtulog wdt_disable (); // Dahil ang susunod na makagambala ay kung hindi man humantong sa isang pag-reset, dahil ang wdt_enable () ay nagtatakda ng WDE / Watchdog System Reset Paganahin ang ADCSRA | = ADEN; / * * Dahil ang timer na oras ay maaaring hindi paganahin ayusin lamang ang millis kung hindi natutulog sa IDLE mode (SM2… 0 bits ay 000) * / kung (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis + = computeSleepMillis (aWatchdogPrescaler);}} / * * Nakagising ang cpu mula sa pagtulog * / ISR (WDT_vect) {sNumberOfS Sleeps ++;}

Hakbang 6: Baguhin ang mga piyus

22 mA ng 27 mA ay iginuhit ng BOD (BrownOutDetection / undervoltage detection). Ang BOD ay maaari lamang hindi paganahin sa pamamagitan ng muling pagprogram ng mga piyus, na magagawa lamang sa isang programmer ng ISP. Gamit ang script na ito maaari mong bawasan ang kasalukuyang pababa sa 5.5 µA at mabawasan din ang oras ng pagsisimula mula sa pagtulog hanggang 4 na milliseconds.

5 sa natitirang 5.5 µA ay iginuhit ng aktibong watchdog counter. Kung maaari mong gamitin ang panlabas na pag-reset para sa paggising, ang kasalukuyang pagkonsumo ay maaaring bumaba sa 0.3 µA tulad ng nakasaad sa datasheet.

Kung hindi mo maabot ang halagang ito, ang dahilan ay maaaring, na ang reverse current ng schottky diode sa pagitan ng VCC at ang pullup ay masyadong mataas. Tandaan na ang isang 12 MOhm risistor ay gumuhit din ng 0.3 µA sa 3.7 volt.

Nagreresulta ito sa isang average na kasalukuyang pagkonsumo ng 9 µA (2.5 taon na may 200 mAh button cell 2032) kung hal mo. iproseso ang data tuwing 8 segundo para sa 3 milliseconds tulad dito.

Hakbang 7: Karagdagang Impormasyon

Kasalukuyang pagguhit ng isang board ng Digispark.

Proyekto gamit ang mga tagubiling ito.

Inirerekumendang: