Baumkuchen’s Workshop

バイオリンと電子工作、DIY、ジョギングなど。

バイオリンタイマーの製作#14-低消費電力化&システム作動設計

相変わらず、USBのデバイス認識はうまくいっていませんが、アドレス設定までは何とか出来ているようですが、コンフィグレーション設定でコケている様。なかなか、手ごわいのでで、低消費電力化と合わせて、全体のシステム動作の設計を進めます。

baum-kuchen.hatenablog.com

システム動作の設計

消費電流の低減をある程度想定したうえで、まず、全体の作動シーケンスを考えます。大きくは、システムモード(CPUの作動周波数)と、LCDバックライト輝度の制御になります。練習時を通常時として、バイオリンの音を検知しなくなったら、スタンバイモードにて消費電流を低減し、さらに、そこから時間がたったら極低消費電流のSLEEPモードに遷移するという考えです。これをまとめると次の様になります。

f:id:Baum_kuchen:20220220114758p:plain

f:id:Baum_kuchen:20220220114844p:plain

SLEEPモードからの復帰は、割り込みや、WDTをトリガとしますが、ここでは、WDTによる復帰を考え、2秒周期で、通常モードへの復帰を判断することにしました。間隔をあまり長くすると反応が遅くなるし、逆に、短くすると消費電流の低減効果が減ってしまうため、2秒にしています。

一方、LCDのバックライト制御は、システムモードと基本的には独立していて、必要最小限の点灯とするため、練習中でもLED消灯とできるように考えました。

状態遷移図

プログラムを実装するにあたり、シーケンスを状態遷移図の形に書き表しました。システムモードは大きく分けて4つ(通常、スタンバイ、SLEEP、USB)ありますが、状態としては、更に2つ増やした6つの状態で実装することにしました。

f:id:Baum_kuchen:20220220115311p:plain

バックライトの方も同じく状態遷移図に表すと、こうなります。

f:id:Baum_kuchen:20220220115332p:plain

状態遷移図では、他の作動モード(時計とか)に遷移したときの条件も一部追加していますが、ここは、実装を行いながら少し手直しをしていこうと考えています。

消費電力測定

肝心の消費電流低減ですが、方法としては、

・電源電圧を下げる

・CPUクロックを下げる

・内臓モジュールを停止

・DIOからの電流を下げる

・バックライトの電流を下げる

と言った方法があります(詳しくは、こちら)。最初のものは電源3.3V作動で、これ以上は難しいので取れません。バックライトは既に実験済みなので、CPUクロックを下げる手法で確認をしていない、CPUクロック1MHz動作と停止(内臓モジュール停止、DIO電流低減)を確認してみました。

結果は次の様になり、1MHzで2.1mA、クロック停止(SLEEP)で、0.5mAとなりました。クロック停止で0.5mAとあるのは、主にオペアンプと時計ICの電流になります。

f:id:Baum_kuchen:20220220120726j:plainf:id:Baum_kuchen:20220220120750j:plain

ちなみに、USB作動用に24MHzとすると、9.5mAにもなっていました。
f:id:Baum_kuchen:20220220120808j:plain

稼働時間予測

システム作動シーケンスと実測消費電流が分かりましたので、稼働時間の予測をしてみます。一応、平日は1時間、土日は3時間の練習をするとした場合(年間573時間ですね。1万時間には17.5年も掛かってします)、

f:id:Baum_kuchen:20220220115425p:plain

f:id:Baum_kuchen:20220220121624p:plain

稼働時間は、32.5日と出ました。
最初、電池だけで1ヵ月持たせたいと考えていましたが、計算上は、何とか持ちそうです。

今後の計画

消費電流低減の目途が立ちました(計算上は)。あとは、ソフトの実装と確認です。

Violin Timer機能本体の仕上げもまだなので、それと合わせて進めていきます。

まだ、完成までいろいろありますが、よろしかった、お付き合い願います。