電音の歩み

電子楽器を中心とし、ものづくり関係も含めて紹介していきます。

ARM_Theremin (アームテルミン) はその後どうなっているか その3

■電源スイッチの改良

表面実装のスライドスイッチは、いくら探しても極小サイズの華奢なものしか見つからず、

トグルスイッチなど他のスイッチはスペースを取りすぎるなどで使いづらい。

 

そこで比較的堅牢で設置が容易なタクトスイッチを使った電源の入切を検討しました。

具体的には、長押しをすることで入切するイメージです。

マイコン以外にボリューム他にも電源が供給されるので、電子スイッチによる方法を検討しました。私のメモです。

 動作としては、

・電源on PUSH ONでマイコンに電源が供給され、PUSH OFFでも入り続ける。入力ポートでスイッチの長押しを監視し、長押しでなければ自分でOFFする。

・電源off  PUSH ONの長押しを検出し、自分で電源を遮断する。

いくつか検討しました。

(A)はスイッチonでハード的に電源が供給され、スイッチの状態も検出でき、出力ポートからスイッチonの継続とoffも可能であるのですが、

マイコンに電源が入っていないときに、入力ポートの保護ダイオードを通じての電流リークがあるのでボツ。

 

(B)は入力ポートの惚れ電流は改善されたが、PNPのベース電流をこの値よりかなり増やす必要があり、電源on時の消費電流が増加します。

 

(C)は仕様を満たすもので、PchMOSを使いもれ電流を減らしています。NPNのベース電圧の検出にA/Dを使います。

 

実際、これで基板設計をしていたのですが、

AVRのDeepSleepを利用すればソフト的に数uAまで消費電流を抑えられる(はず)であることを思い出し、少し難易度が高い方向の検討に入りました。これに成功すればこのようなハードは無しで済ませます。

実は、大学のイベント用に開発したLEDバッジでATtiny85のソフトで実現しています。(このソフトはikkei氏の作のものです)

このソフトを参考にすれば、ATmega328でも実現できそう。ネットで調べると、いろいろなI/O,A/DをすべてoffにしてDeepSleepに入れば数uAが実現できることがわかりました。

 

ただ、アームテルミンのソフト構成はすでに相当複雑になっている。ところが、DeepSleepからの復帰で行うべきシステム初期化処理はメインループ内の処理になるのに対し、同じ処理のはずのパワーon時の処理はループ外になり、構成を大きく変えねばならず避けたいところです。

そこで、出力ポートから自分自身にリセットかける接続を追加し、DeepSleepから復帰したとき自分をリセットすることで回避しました。

また、ボリュームなどの外部機器へのVDDの供給はAVRの強力な出力ポートから行うことで解決。