概要
野外に設置する防水IoT機器では、電源スイッチ用の穴をケースに開けたくない——開ければそこが浸水リスクになるし、防水カバーを外して基板上のスイッチを操作するのも手間です。そこで ケースの外から磁石を近づけるだけで電源をON/OFFできる非接触スイッチ を、ATtiny202・リードスイッチ・PチャネルMOSFETで自作しました。
ポイントは待機電流で、OFF時 0.19uA、ON時 0.27uA を Nordic の PPK2(Power Profiler Kit II) で実測。電池駆動のIoT機器に常時挟んでも実質無視できるレベルに収まっています。低消費電力のマイコン制御に興味があるエンジニアの参考になれば幸いです。
ポイント解説
1. 高電位側をPch MOSFETで切り、待機はマイコンのスリープで削る
電源ラインのプラス側を Pチャネルチップ MOSFET(DMG3415U) で開閉するハイサイドスイッチ構成です。制御は AVR マイコン ATtiny202 が担当し、常時は SLEEP_MODE_STANDBY で待機。リードスイッチ(SP3-1A16)を GPIO のピン割り込み(LOWレベル検出 PORT_ISC_LEVEL_gc)に割り当て、磁石が近づいたときだけ起動します。未使用ピンは入力バッファを無効化(PORT_ISC_INPUT_DISABLE_gc)して漏れ電流を抑えているのも効いています。
2. メインクロックを32.768kHzまで落とす
_PROTECTED_WRITE() でメインクロックを内蔵の超低速オシレータ OSCULP32K(32.768kHz) に切り替え、分周なしで駆動。ここまで落とすと動作電流そのものが小さくなる一方、_delay_ms() の実時間が伸びます。実際、1MHz前提で書いた _delay_ms(10) が32kHz環境では約312.5msになる——この「ズレ」を逆手に取り、ループ10回で約3秒の長押し判定を作っています。クロックとdelayの関係を理解していないとハマるところです。
3. スケッチ生成はGemini、要件は人間が握る
トグル動作(磁石を3秒検出でON⇔OFF反転)やLED点滅パターンでの状態通知といった仕様を箇条書きで Gemini に渡してスケッチを生成し、一部手直しして仕上げました。割り込みフラグのクリア(PORTA.INTFLAGS)やチャタリング対策でボタンが離れるまで待つ処理など、生成AIに任せつつ勘所は人間がレビューする——という現実的な使い方です。
まとめ
- ハイサイドPch MOSFET+マイコンのスリープで、非接触かつ超低待機電流のスイッチを実現
- クロックを32kHzまで落とす省電力設計と、それに伴うdelayの実時間ズレの扱いがキモ
- PPK2で0.19uA/0.27uAを実測し、電池駆動IoT機器への常設に耐えることを確認
詳細はTechblogで
回路図、実装写真、ATtiny202に書き込むスケッチ全文、PPK2の測定波形など、技術的な詳細は当社Techblogをご覧ください。
👉 詳細記事を読む