当サイトは広告が表示されます。

micro:bitでプラレールを制御する その3 速度制御編

Ad,micro:bit,プラレール,動画

前回、プラレールの貨車にmicro:bitと乾電池を載せ、micro:bitでプログラムを組んで実際にプラレールを走行させました。当初、次回案としてセンサーを利用してプラレールの走行と停止を行ってみる予定でしたが、走行は単純に前進と後退だけだったので、今回は走行中のプラレールの速度を変更出来る様にしてみます。

スポンサーリンク

前回記事までの様子

前回記事でプラレールを走行させましたが、micro:bitの無線機能でのリモコン操作と、Bluetooth機能でスマホアプリからの操作も行いました。

「プラレール」関連記事

プラレールに関するその他の記事は、以下の「プラレール」タグの記事一覧(投稿順)より見て下さい。現在の記事とこれ以降に投稿した記事も含みます。

その他、micro:bitを使用している記事は以下の「micro:bit」タグの記事一覧(投稿順)から見て下さい。「その24」までの記事では、micro:bitの本体バージョンは「1.5」を使用しています。

速度を変更する

プラレールの走行制御は、前回記事でmicro:bit2台で無線機能を利用した状態(リモコン操作)で行い、これに速度変更の機能を追加していきます。また速度を変更する方法として、今回はmicro:bitのABボタン、可変抵抗器を利用したボリューム調整、micro:bitの傾斜センサー(加速度センサー)の3つの方法で行います。

※実際の様子は、この記事の最後の方に動画で掲載しています。

ABボタン

まずはmicro:bitのABボタンで速度を変更してみます。前回記事でのリモコン側のmicro:bitのプログラムを以下の様に変更しました。

プラレールの停止状態から、最初のABボタンで進行方向を送信します。続いて同じ進行方向のボタンを押す事で速度の増加、逆方向のボタンを押す事で速度の減少としました。ABボタンで進行方向の指定と速度の増減を行うので、「方向」と「速度」という変数を使っています。また送信時にも文字として送信しています。

速度の変更はボタンを押すたびに「0」から「100」の範囲で、2ずつ増減します。これは利用しているDCモーター用の拡張基盤でDCモーターへ出力する電圧に対する割合ですが、「100」で拡張基盤に入力している電源電圧と同じ電圧になります。拡張基盤には9V乾電池を接続しているので、プラレールに1.5V以上を掛けない様にするには、最大「16」程度が許容範囲です。プログラム内で1.5Vで「100」となる様にすれば良かったのですが、妥協してしまいました。

続いて、プラレール側のDCモーター用拡張基盤に接続しているmicro:bitのプログラムは、以下の様にしました。リモコン側のmicro:bitから送信される「文字+数値」を、そのまま同じ名前の変数とその値として利用しています。

これで、リモコン側のmicro:bitで進行方向を指定した後、さらにABボタンで速度の変更が可能になります。

ボリューム調整(可変抵抗器)

micro:bitのアナログ入力を使って、速度の変更に上記の可変抵抗器を利用してみます。購入した可変抵抗器の抵抗値は10kです。

リモコン側のmicro:bitで3Vと0Vの他、アナログ入力として「0」端子を使用しています。またプログラムは以下の様にしました。

最初にABボタンで進行方向を指定し、その後は可変抵抗器で速度を調整出来ます。アナログ入力の分解能は「0~1023」なので、これを「0~100」に割り当て直しています。また割り当て後の値をmicro:bitのLEDにグラフ表示しています。グラフ表示はMicrosoft MakeCodeでブロックとして用意されている機能です。

プラレール側のmicro:bitのプログラムは、ボタン操作時のプログラムと同じです(変更無し)。これで可変抵抗器のツマミを回す事で速度の変更が可能になります。ボタン操作の段階的な変更とは違い、ツマミによるリニアな操作感が得られます。

ただし可変抵抗器のツマミを抵抗値が最大になる(micro:bit側の入力値が0になる)側にしておかないと、最初の進行方向を指定するABボタンを押すのと同時にプラレールが走行し始めます。ツマミを「0」にしたつもりが「100」だった場合、今回の9V乾電池を利用しているとプラレールが飛び出したり、モーターやギヤにも大きな負荷がかかってしまいます。抵抗値によってABボタンを押しても送信しない条件を付ければ回避出来ます。またABボタン操作時と同様、「100」で1.5Vを出力する様にする事も有効です。

傾斜センサー

micro:bitには色々なセンサー(micro:bit公式サイト)が搭載されています。磁気や傾斜、明るさ・温度などです(明るさはLED、温度はチップのダイ温度の兼用)。今回はこの中で傾斜センサーを利用してみますが、傾斜センサーはmicro:bit本体を水平にして縦方向と横方向(ピッチ角度とロール角度)の傾きを数値として扱う事が出来ます。Microsoft MakeCodeにブロックとして用意されているので、簡単に利用出来ます。傾斜センサー(加速度センサー)については、以下の記事にて(内容はmicro:bitのバージョンがv1.5の古い時の物です)。

リモコン側のmicro:bitのプログラムを以下の様にしましたが、可変抵抗器の時のプログラムで、アナログ入力の部分を傾斜センサーに変更しただけです。その上で傾斜角度を左右の90度までとし、角度の「0~90」を「0~100」に割り当て直します。

これでリモコン側のmicro:bitでABボタンを押して進行方向を決めた後、micro:bit本体を傾ける事で、プラレールの速度の変更が可能です。ただし実際には上記プログラムで、角度の「0~90」を「0~100」に割り当てではなく、「0~15」に割り当てる様に修正しました。これはこれまでの「100」でモーターに9Vが掛かってしまう問題への対応で、拡張基盤から出力する電圧の上限をおおよそ1.5Vとする為です。

今回の記事はここまでです。次回は改めてセンサーを利用して、プラレールの動きを制御してみます。

おまけ

前回記事の走行編で、プラレールを後退させた時の走行のし難さが気になりました。基本的にプラレールは後退しない仕様なので仕方が無いのですが(「E5系はやぶさコントロールセット」では、一応後退も可能となっています)…。

最初に購入したプラレールの車両(S-25 EH500金太郎)を、もう1セット買いました。後々、2台同時に走行させて、走行・停止制御や分岐レールの制御を考えている為です。本当は同じ貨物列車で「S-26 EF210桃太郎」にしようと思ったのですが、3Dプリンターで部品を作る上では別々に部品を考えて作るのは大変なので、同じ物にしました(付属の貨車も異なる)。

利用しているDCモーター用の拡張基盤は、2つのモーターを同時に制御出来ます。上記の様にプラレールの動力車を前後に繋ぐ事で、前進後退の両方向ともスムーズに走行する事が出来ます(電池の消費は2倍)。その様子も下記の動画内にあります。

ただし連結部が合わないので、その内に何か手段を考えようと思っています(部品として販売していますが)。

動画

今回の内容の動画です。

ブログ記事公開後に再び同じ内容(翌年に同じ場所を走行など)の動画を作成・公開している場合があります。記事内の動画もなるべく最新を掲載する様にしていますが、最新や過去・その他の動画を見る場合はYoutubeを見て下さい。

注記

    • この記事を参考にしてのプラレールの改造は、自己判断と自己責任の下で行って下さい。事故や怪我が発生してもその責任を負う事は出来ません。
    • 記事内の内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
    • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
    • 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。
    • micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
    • BBC micro:bitは、micro:bit教育財団の登録商標です。
    • プラレールは、株式会社タカラトミーの登録商標です。
    • その他のブランド名または製品名は各所有者の商標です。