数多くの PIC を手がけている小黒さんにチャタリング防止について相談したところ、ひとつの方法として、シャッタが切れるパルス幅を受け取ったあと、次に少し狭いパルス幅を受け取ってからシャッタ出力するようにプログラミングすればチャタリングを回避できるとヒントをもらった。前回は 4 回のサンプリングでシャッター出力を行うようにプログラミングしたが、この方法なら 2 回のサンプリングで済むし、その分シャッタタイミングの遅れも少なくなる。
シャッタ出力する条件として、入力パルス幅 1.62msec を受け取ったら、受け取ったことを CNT3 レジスタに保存。次に受け取ったパルス幅が 1.60msec あればシャッタ出力し、 1.60msec 以下の場合には CNT3 レジスタをクリアして次のパルス入力を待つという方法を採った。これならパルスの立下り付近の不安定な部分を回避することができるはず。
早速前回組んだユニバーサル基板でテスト。送信機のスイッチでなくスティックでゆっくりとパルス幅を変化させてみた。出力が ON になった後 OFF になるまでスティックを戻してみると確かにヒステリシスがあり、チャタリングが回避できているのがわかる。このヒステリシスを違和感のない設定とするため、 1 度目のパルスと 2 度目のパルスに 0.02msec の差をもたせてある。(回路図)。(プログラム)。
PIC 出力で直接フォトカプラをドライブしてみた。フォトカプラのドライブ側は発光ダイオードなので PIC の許容出力電流で十分ドライブ可能。 470Ωの電流制限抵抗を入れてみた。
これで電子シャッタープログラムも満足できるレベルで組むことができた。実際にデジタルカメラに組み込むときは 8 ピンの PIC12C509A フラットパッケージを使いたいが、フラットパッケージをライタにセットするためのアダプタが必要になる。調べてみたがこのアダプタは 15000 円もする。小黒さんは自作したということなので、フラットパッケージを入手したら自作の方法を考えてみよう。
PIC12C509A 用にプログラムを移植してみた。少し命令が違うので、もしかしたら思惑通りに動かない可能性もある。いずれフラットパッケージの PIC を入手したら実際に書き込んでデジタルカメラに実装する予定なので、紫外線消去のできる PIC12C509/JW という PIC を買ってテストしたほうがいいかな。