指紋認証式電気錠の製作(2)

前回作ったものは、半ば試作品のつもりで適当に作ったのですが、いろいろと欠点が見つかりました。前回の反省を活かして再設計しました。

f:id:jptomoya:20140208161003j:plain

改良その1:マイコンを変更

前回はATmega168を使用しましたが、プログラムを実際に書いてみるとバイナリは2100バイト強となりATmega168の持つ16KBのプログラム領域はかなり余っています。またポートも結構余ってしまいました。そこでマイコンをATmega168からATtiny4313に変更しました。ATtiny4313は4KBのコード領域を持ちます。ピン数が28ピンから20ピンになりますので省スペース化が図れます。

改良その2:水晶を省略

実はUARTを扱うのは今回が初めてだったので、1号機ではとりあえず精度と速度を求めて水晶を載せましたが、結果的に2つのポートを失う代償としての利点がありませんでした。指紋のRAWデータを流すなら別ですが、短いコマンドのやりとりですのでデフォルトの9600bpsでも十分なレスポンスを得られますし、内蔵発振でも十分安定した通信が可能と判断しました。これにより水晶とその周りにつける2つのコンデンサの分スペースが空きますので、省スペース化にも貢献しています。

改良その3:電源周りを見直した

そもそも3端子レギュレータを使用しているのは、ソレノイドを動作させるために乾電池4本使用して電圧が6Vとなるのに対してAVRの最大動作電圧が5.5Vというのが主な理由です。1号機で使った3端子レギュレータ(μPC2933B)は、とりあえず出力が3.3Vのものを何も考えずに選びました。無負荷時でも2mAほど電流を消費するということに後から気づきました。

AVRのパワーダウンモードは、外部割込みとウォッチドッグ機能を除いてクロックをすべて停止する機能です。これを利用することで、2μA以下と電池をほとんど消費しない状態(≒電源オフ)が実現できます。切り替え式の電源スイッチを省略できますし、プログラム的にオートパワーオフが実現できるため電源の切り忘れも防止できます。パワーダウンを利用する時は、周辺回路もこのμAレベルの省電力となるように設計しないと意味がありません。前回実際に作ってわかったことですが、指紋スキャンモジュールの消費電流がLEDを消灯しても数十mAはあったので、モジュール自体をトランジスタでスイッチすることにしました。かなり大まかな計算ですが、アルカリ電池の容量を2000mAh、使用推奨期限を10年と考えて10年以上持つようにしたいとすると、消費電流は2000 / (10 * 365 * 24) ≒ 0.0228 [mA]となりますので、合計で20μA以下には抑えたいものです。

2号機を考え始めた当初は、3端子レギュレータを廃止してAVRのVccの前に適当なダイオードを2個直列に繋ぐことで5.5V以下まで降圧しようと考えていました。しかし、この方法ではAVRの消費電流が大きく変化するとダイオードの電圧降下も変化してしまいます。実験の結果、パワーダウン時と動作時で電流が数μA~数mAを行き来して電圧が大きく変わってしまいました。

結局、低損失CMOSタイプの3端子レギュレータ(S-812C33AY-B-G)を採用しました。この3端子レギュレータの無負荷時の損失は1.8μA以下となります。これでAVRのパワーダウン時の最大消費電流である2μA、2SK2796のIDSSの最大値10μA、2SC2120のICBOの最大値0.1μAを足しても最大で13.9μAとなります。実測では1.2μAを実現しました。