はじめに
RCサーボモーターとフォトインタラプタで、1円/5円/10円/50円/100円/500円硬貨を判別し、残高を表示する貯金箱です。残高は、電源OFFでも保持されます。(この作品では、PICマイコンのCコンパイラーにCCS社PCMを使用しています)
概要
下図は、5円/50円硬貨の判別動作例による本体の機構概要です。3つのフォトインタラプタPI(A)/PI(B)/PI(C)は、それぞれ硬貨投入/硬貨孔/硬貨通過の有無を検出します。アームは硬貨の通過ゲートの役割で、RCサーボモータで回転制御します。
① 投入された硬貨はアームでトラップされ、PI(A)硬貨あり、PI(B)孔ありを検出。(5円もしくは50円と判別)
② アームは選別位置に回転。50円より径が大きい5円はトラップ/PI(C)検出あり。50円は通過/PI(C)検出無し。(5円か50円か判別)
RCサーボモーターについて
RCサーボモーター(以下RCサーボ)は、信号線に入力するパルス信号の幅で回転角を制御するモーターです。主な特徴は、小型で比較的大きなトルクが得られることです。このような特性から、ラジコンやロボットなどの関節制御に使われます。下は、今回の作品に使用したMiniS servo RB90の仕様です。
仕様の中に、○○程度というあいまいな表示があります。RCサーボは、同一型番でも多少個体バラツキがあるため、組み込み後チューニングが必要です。また、RCサーボの性能を十分に引き出すには、以下の点に留意します。
・仕様に則したノイズやジッタの無い安定した正確な制御パルスを入力する
・指定位置に回転・移動するまで制御パルス入力を繰り返す
フォトインタラプタについて
フォトインタラプタは、対向する発光素子と受光素子の間を物体が遮ることで物体を検出する光センサーです。作品では、発光素子に赤外LED TLN113(ピーク波長:940 nm)、受光素子にフォトトランジスタ TPS612(ピーク感度波長:870 nm)を使用しました。いずれも外径Φ3 mmと小さく、狭いエリアでも取り付け可能です。(下は組合せ使用例)
また、TLN113は、パルス順電流(IFP)の方が順電流(IF)より多くの電流を流すことができるので(下スペックシート抜粋)検出感度が向上します。本作品も、パルス幅50 usでセンシングしています。
結果
下が完成した貯金箱です。
本体は、アクリル板を切り出して組み立てました。フォトインタラプタは、素子を固定した補助板を本体に接着しています。また、適度な傾斜をつけて、硬貨が転がり入るようにしました。排出された硬貨は、下の箱に貯金されます。硬貨判別は枚葉で行うため、まとめての投入はできません。投入可否は、2色LEDで表示(緑:Ready/赤:Busy)します。マイコンはPIC16F88を使用。フォトインタラプタ3組, RCサーボ, LED, 液晶表示器他全てをこのマイコン一つで制御しています。(動画はこちら : 10円→5円→100円→[電源OFF/ON]→1円→500円→50円の順で投入)
残高保存のしくみ
貯金残高は、PICマイコン内蔵EEPROMに保存します。EEPROMは、電源を切っても内容が消えない不揮発性フラッシュメモリで、PIC16F88は256 byteのEEPROMを内蔵しています。データの書き込み/読み出しは、指定したアドレスに対して1 byte単位で行います。本作品は、残高保存に2 byte(65,535円まで)を使用。残高を1 byteに分割して書き込み、読み出し時に復元します※。また、硬貨投入の度に残高を書き込むことで、電源を入れ直しても前の残高から貯金を再開できます。リセットを押すと、EEPROMはクリアされ、残高は0円にリセットされます。
※データの1 byte分割と復元はビット演算子を使います。(以下は7,258の例)
まとめ
できるだけコンパクト且つシンプルに硬貨判別する仕組みを検討した結果、本作品の形に行き着きました。そのため、殆どが手作業による加工・組立となりましたが、RCサーボの高い回転精度と高トルクを硬貨の保持/選別に生かし、小型フォトインタラプタの合理的な配置によって、全ての硬貨判別が可能なメカトロニクス的作品に仕上がりました。現状は、硬貨が貯金箱にごちゃ混ぜですが、アクチュエータを追加して硬貨別に振り分けるなど、更に進化できる余地があります。
以上