ATtiny1616を試す 消費電力編

前回でATtiny1616が使えるようにはなりましたので、今回は消費電力周りをチェックしていきたいと思います。

検証にあたって、ちょっとプログラムを書き換えます。3秒周期で勝手にON/OFFを繰り返すようにしました。

#define PIN_LED 2

#define ON_OFF_MS 3000

bool is_lighting = false;
unsigned long prev_time_point_ms = 0;

void setup(){  
  Serial.begin(57600);
  pinMode(PIN_LED, OUTPUT);
}

void loop(){
  unsigned long now_ms = millis();
  if(now_ms - prev_time_point_ms > ON_OFF_MS){
    if(is_lighting){
      digitalWrite(PIN_LED, 0);
    }else{
      digitalWrite(PIN_LED, 1);
    }
    is_lighting = !is_lighting;
    prev_time_point_ms = now_ms;
  }
  delay(10);
}

これでとりあえず消費電流を測ってみます。ちなみに、LEDに挟んでいる抵抗は1kΩです。

LEDがOFFのとき。13.69mA。

LEDがONのとき。16.54mA。

個人的には「思ったより多い」という印象です。コイン電池やボタン電池で動かすには厳しそう。

ということで、ChatGPTさんに

ATtiny1616の動作時の電流値を下げるためにできることはありますか?

と聞いてみたところ、

実装しやすくて効果が大きいのは、動作周波数を下げることです

との回答が返ってきましたので、言われた通りに動作周波数を16MHz → 1MHzに落としてみます。プログラムの変更としては、setup()の中に以下の一行を追記するだけです。

_PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, CLKCTRL_PDIV_16X_gc | CLKCTRL_PEN_bm);

ちなみに、”16X”のところを”2X”にすれば8MHz、”4X”にすれば4MHz、”8X”にすれば2MHz動作になるとのことです。

(★記事作成後の追記 – ここから – )
動作周波数を落とす方法は、上記のようにプログラム内で記述する他、以下のようにArduino IDEで設定して落とす、という方法もあります。

基本的にはArduino IDEで設定する方が無難だと思いますが、以下はこの方法を知る前に検証したもののため、プログラム内で記述する方法で動作周波数を落とした結果を掲載しています。
(★記事作成後の追記 – ここまで – )

で早速、再計測。LEDがOFFのとき。3.66mA。

LEDがONのとき。6.59mA。

一気に下がりました。これならコイン電池・ボタン電池駆動もいけそうです。

もうちょっと欲張って、ADC, SPID, I2Cも停止させてみます。この場合、setup()に書く内容は以下になります。

_PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, CLKCTRL_PDIV_16X_gc | CLKCTRL_PEN_bm); // 動作周波数を1MHzに落とす
  ADC0.CTRLA &= ~ADC_ENABLE_bm; // ADC(アナログデジタル変換)を停止
  SPI0.CTRLA &= ~SPI_ENABLE_bm; // SPI停止
  TWI0.MCTRLA = 0;   // I2C マスター停止
  TWI0.SCTRLA = 0;   // I2C スレーブ停止

LEDがOFFのとき。3.37mA。

LEDがONのとき。6.29mA。

およそ0.3mA下がりました。ChatGPTさんいわく、タイマー系も落とせばさらに落とせるようですが、このあたりになるとLEDの消費電流を減らすことの方が効果がデカそうです。

さて、とりあえずコイン電池やボタン電池で動きそうな気がしてきましたので、ここからは色々な電池で動作確認していきます。まずは単四電池 x 2本。容量と電流は文句なしですが、電圧は3Vになります。

問題なしです。続いて単五電池 x 2本。容量が小さくなるだけなので、こちらも問題なく動くはず。

動きました。リチウムイオンポリマー充電池に比べればまだ嵩張りますが、電源スペースが小さいときの選択肢にはなるかなと思います。

さて、お次はボタン電池(LR44) x 3個。普通に比較するなら2個にすべきなのですが、私の用途だと3個で使うことが多そうなので、3個で動作確認します。4.5Vになりますが、先ほどの単四・単五電池に比べれば流せる電流量がぐっと小さくなります。果たして。

おお、動きました。素晴らしいです。結構長いこと電子工作をしていますが、ボタン電池でマイコンを動かせたのは初めてです。感動。

では最後に、コイン電池(CR2032) x 1個。電圧は3V、流れる電流量もボタン電池以下になりますが、果たして。

これもいけました。やったー。

ということで、LEDを光らせるぐらいの超シンプルな工作であれば、ATtiny1616 + コイン電池・ボタン電池で実装できることが確認できました。

が、まだ削減余地がありますので、もう少し欲張ってみたいと思います。続く。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

コメントする

目次