おもちゃのケーブルカーをつくる(2) 〜制御部

スポンサーリンク
工作

私は兵庫県の里山地域に畑を借り、そこで仲間といっしょに家庭菜園を楽しんでいます。

さて、畑の近所にある「妙見の森」という施設ではケーブルカーが運行されているのですが、この「妙見の森」が近々営業終了するという発表がありました。
このニュースを聞いた畑のメンバーから、「妙見の森ケーブル」の廃止を惜しんで、ケーブルカーのおもちゃをつくって畑で動かしたいという意見が挙がり、他のメンバーと一緒にケーブルカーのおもちゃを製作することになりました。

前回はその第一弾として、ケーブルカーを引っ張るための「巻上機」をつくりました(記事は こちら)。

今回は、この巻上機を操作するための「制御部」をつくろうと思います。本物のケーブルカーで言うところの「運転台」にあたる部分です。
以下のような仕様でつくりたいと思います。


  • ケーブルカーの操作には「マイクロビット」を使う(ボタンを押して運転・停止)。
  • 「再エネ」を体験するため、Ni-MH電池とソーラーパネルを利用し、発電した電力でケーブルカーを動かす。
  • 電池の残量を把握するため、マイクロビットで電池の電圧を測定する。
  • ケーブルカー運転中の消費電力を確認するため、マイクロビットでモーターの消費電力(電圧と電流)を測定する。
  • 本物のケーブルカーにはATS(自動列車停止装置)が付いているため、それに似た機能として、磁気スイッチを使い、ケーブルカーが駅に着いたら自動停止するようにする。

モータードライバは、以前アマゾンで購入した こちら の商品を使います。


マイクロビットの「15」「16」端子をモータードライバの「IN1」「IN2」につなぎ、これらの信号で「巻上機」のモーターを制御することにします。
また、モーターを自動停止させるための磁気スイッチは、マイクロビットの「2」端子につなぎます。
マイクロビットの電池接続用PHコネクタと、モータードライバの「+」「-」を、後に述べる「電源部」につなぎます。

以前、「300mWソーラーパネル」「ダイオード」「Ni-MH電池3本」を組み合わせたものを、マイクロビットの電池接続用PHコネクタにつなぐことで、太陽光で発電した電力でマイクロビットを動かすことができました(記事は こちら)ので、電源部はその時と同じ構成にします。
また、電源まわりの電圧値や電流値を測定するために、電源部とマイクロビットやモータードライバなどの間にいくつかの抵抗を挿入します。

マイクロビットで電池の電圧(V1電圧)を測定したいのですが、電池の電圧はNi-MH電池(1本あたり1.2〜1.4V程度)が3本で3.6〜4.2V程度なのに対し、マイクロビットで測定できるのは最大でも3.3Vです。このためV1−グランド間に10kΩの抵抗2個を直列につなぎ、その中間ノード(S2)の電圧を測定することにします。測定した電圧を2倍にすると電池の電圧(V1電圧)になります。

また、マイクロビットやモータードライバなどでの消費電流値を測定するために、電源ラインの途中に10Ωの抵抗を4本並列にしたもの(合成抵抗は2.5Ω)を挿入します。この抵抗の前後の電圧(V1電圧とV2電圧)を測定すると、その差より電流値が計算できます(電流値 = (V1電圧 – V2電圧) / 2.5Ω)。V2−グランド間にも先ほどと同じように10kΩの抵抗2個を直列につなぎ、その中間ノード(S1)の電圧を測定し、2倍にすることでV2電圧を求めます。
「S1」「S2」を、それぞれマイクロビットの「1」「0」端子につなぎます。

これらの回路はブレッドボードで組みました。

写真のブレッドボードで、左側の電源ラインが「V1」、右側の電源ラインが「V2」になります。

マイクロビットのプログラムは以下のとおりです。

モータードライバはマイクロビットの「15」「16」端子につながっていますので、モーター停止中は「15」「16」端子ともに「H」にします。
また、モーターを正転させるときは「15」を「L」に、反転させるときは「16」を「L」にします。

ボタンAを押すとモーターが正転、ボタンBを押すと反転します。
モーターが回転しているときにどちらかのボタンを押すと、モーターが停止します。

モーターの動作状態を「動作状態」という変数で把握します。
正転中は「動作状態」を「1」、反転中は「3」にします。また、正転後の停止中は「2」、反転後の停止中は「0」にします。この「動作状態」を管理することで、モーターが「正転」した後は「反転」しかできない、同様に「反転」した後は「正転」しかできないようにしています。
これにより、ケーブルカーが駅に着いた後、誤って更に進行してしまうことがないようにしています。

「ずっと」ブロックで、磁気スイッチがつながっている「2」端子の論理値を常時観測します。
「2」端子が「H」から「L」に変化した時、モーターを停止させます。

「データ送信」という関数では、「0」「1」端子の電圧値より計算した「電池の電圧値」「モータードライバなどの消費電流値」を、無線で他のマイクロビットに送信します。送信時には一緒にモーターの「動作状態」も送信します。
5秒ごと、もしくは「動作状態」が変わった時にデータ送信します。

送信されたデータを受信するためのマイクロビットを別途準備します。
受信側については詳細な説明を省略しますが、受信結果を表示するために、受信側マイクロビットと「M5Stack Basic」をGROVEケーブルでつなぎ、M5Stack BasicのLCD画面に各情報を表示させるようにしました。
これで、ケーブルカーの運行状況や電力の状況が、離れた場所から把握できるようになります。
ついでに、M5Stackのボタンを押すと、受信した各情報をSDカードにCSV形式で保存できるようにしておきました。

これで「制御部」が完成したので、「巻上機」のモーターをつないで動作確認してみました。
マイクロビットのボタンを押すことで、仕様のとおりに動作することを確認しました。
また、動作中に磁気スイッチに磁石を近づけると、モーターは停止しました。
また、M5Stack BasicのLCD画面にモーターの「動作状態」「電圧値」「電流値」が表示され、それらの情報が随時更新されることも確認できました。

ただ単に、ケーブルカーを動かすだけのおもちゃですが、なかなか凝ったものになってきました。


ちなみに、ケーブルカーの車体とレールは、別のメンバーの方がつくってくれています。
本物と同じように「溝車輪」と「平車輪」を使用し、2台のケーブルカーがすれ違う仕組みを再現しようとしています。

また、レールにはひのきの角棒を使い、熱湯に浸けて柔らかくしてから型にはめて固定することで、所望のカーブになるよう曲げているようです。

こちらも最終的にどのようになるのか楽しみです。