ワイヤレスマウスで操作するプラレールのラジコン--PICマイコンでチョッパ制御

更新: 2005年9月11日
作成: 2005年9月4日


プラレールの電車に、ワイヤレスマウスの受信機を乗せて、ラジコンを作りました。マウスの動きに従って、前後に走ります。

以前作ったマウスと通信可能な装置をもとに、マウスの動きで、パワーエレクトロニクス回路を制御できるようにしました。制御基板にワイヤレスマウスの受信機をつなぐことで、ラジコンのように使えます。

制御には、PICマイコンのPIC16F628を使いました。4.00MHzで動作します。マウスから読み取った移動速度などを、チョッパ制御の信号に変換してブリッジ回路を駆動し、プラレールの電車を前後に走らせます。

おもちゃの様子
ワイヤレスマウスで操作できるプラレール

マウスとPICとワイヤレスというアイデア

パソコンのマウスは、「動かす速さ」というアナログ量をデジタル化できる身近な入力機器です。ふつうは、パソコンにつないで使いますが、通信プロトコルは比較的簡単なので、PICマイコンをホストとして使うこともできます。

つまり、PICで作ったおもちゃをマウスで制御できるのです。

走るおもちゃにふつうのマウスをつなぐと、ケーブルがじゃまになります。そこで、ワイヤレスマウスを使えば、ラジコンみたいに遊べるのでは、ということに気づきました。

ワイヤレスマウスで操作するので、普通のラジコンとはかなり違う操作感を楽しめそうです。

ワイヤレスマウス
ワイヤレスマウス(Logicool社製)

ちなみに、普通にラジコンを作ろうとすると、電波を出したり受けたりする部分が難しいです。電波を出す部分はとくに、法律でいろいろと規制があるそうなので、私にはよく分かりません。分からないままで、無責任なおもちゃを作ると、まわりに迷惑がかかります。その点、ワイヤレスマウスは、電波の強さや周波数が、あらかじめルールを守るように作られているので、安心しておもちゃを作れます。

とりあえずは、マウスの動きに従い、前後に動くおもちゃを作ることにしました。しかし、ワイヤレスマウスで通信ができるのは、せいぜい2メートルまでです。あまり遠くまで行ってしまうおもちゃには、使いにくいです。

そこで思いついたのが、プラレールです。プラレールは、青いプラスチック製のレールをなぞって走る、おもちゃの電車です。株式会社トミーから発売されています。スピードが比較的遅く、レールを周回にすれば、勝手に遠くまで行ってしまうこともありません。さらに、左右の舵取りが不要なので、1チャンネルしか出力しない制御基板でも、十分使えます。

プラレール211系
プラレールの車両(211系)。(株)トミーから発売中

「ワイヤレスマウスで、プラレールを走らせる」という、おそらく誰もやらなかったであろう遊びが、これから始まります。

ちなみに2、プラレールを改造すると、壊れたり、事故が起きたりする可能性があります。トラブルになった場合、このページの作者もメーカーも、責任を取ってはくれません。危険性に対して、ご自分で責任をとれない方は、改造はやめましょう。

走る様子

写真あれこれ

丸いコース
曲線レール4本で作った周回コース

3両編成です
3両編成です

基板や電池を乗せて走ります
基板や電池を乗せて走ります

1両めは動力車
1両めは動力車

2両めは電池を搭載
2両めは電池を搭載

3両めは改造なし
3両めは改造なし

走る動画

デジタルカメラで、走る様子を撮影しました。音は出ませんが、ぎこちなくも前へ後ろへと走る様子が、よく分かります。

ちなみにこちらが、プラレールのモデルになっている211系電車の写真です。JR東海の静岡駅などで、よく見られます。愛知万博で「エキスポシャトル」として走っていたのも、この車両です。

本物の211系電車
本物の211系電車。JR東海の静岡駅にて

使い方

PDF形式のマニュアルを用意しましたので、どうぞご覧ください。

今回製作したのは、マウスで制御するチョッパ回路の基板を、電池で走行可能なおもちゃに接続したものです。まずは、次の準備をします。

マウスでの操作

操作の基本はマウス
操作の基本はマウス

基板上のスイッチの操作

基板上のスイッチ・ボタン・LED
基板上のスイッチ・ボタン・LED

表示の読み方

制御基板の3つのLEDが、動作の様子を知らせます。

青LED正常に動作しているときに点灯します。
赤LEDエラー発生時に点灯します。リセットボタンを押すと、エラーが解決すれば消えます。
黄LED電源投入時や設定を変えたとき、マウスを動かしたときなどに点灯します。エラー発生時には、エラーの番号を点滅回数で表示します。

エラー番号の読み方

マウスと通信できなかったり、マイコンがおかしくなったりすると、赤LEDが点灯してエラーを伝えます。同時に黄LEDが点滅し、点滅回数によってエラー番号を伝えます。エラー番号には、次の種類があります。

点滅回数エラーの意味
マウスにデータを送りたいが、マウスがクロックを引き始めない。
マウスのクロックが上がらない。
マウスのクロックが下がらない。
マウスにデータを送ったが、マウスがACKビットを返さない。
マウスにデータを送ったが、マウスが確認応答"0xfa"を返さない。
マウスからデータを読みたいが、最初のクロックを下げてこない。
マウスから読み取ったデータのパリティーが合わない。
マウスから読み取ったデータのストップビットが0になっている。
処理した値が、本来求めている値と異なる値だった。
10マウスから読み取ったデータのスタートビットが1になっている。
11マイコンのWDTがオーバーフローして停止した。

エラーから復旧させたい場合は、リセットボタン(赤いボタン)を押します。

ハードウエアの仕組み

こちらが、回路図です。

回路図

回路は、マイコンとマウスが通信をする部分と、モータを駆動するフルブリッジ回路、動作状況を知らせる表示部分などからなります。

PIC16F628を、4.00MHzで駆動しています。ウオッチドッグタイマをオンにしているため、基板の裏を指でおさえるなどしてクロックを止めると、マイコン自身が停止を検知できるようになっています。

74HC03APは、オープンコレクタの回路です。ベース電流を引き込む部分などで使っています。

電源電圧は5V程度が適切です。ニッケル水素電池などを使い、4.8Vくらいで使うのもよいでしょう。

基板の様子
基板の様子

ちなみに、2両めの屋根の上に電池ボックスを乗せてみました。

2両めの様子
2両めの様子

マウスとPICをつ\なぐ

マウスとの通信回路では、弱くプルアップした2つの信号線を用いています。

通信は、クロック線とデータ線を用いたシリアル通信になっています。クロックの周波数は、10kHzより少し高いくらいになる場合が多いようです。クロックは、通信の方向にかかわらず、いつもマウスの側が作る約束になっています。

マウスのインターフェースや通信手順に関する詳しい情報は、http://www.computer-engineering.org/にあります(英語)。

PICでブリッジ回路を制御する

トランジスタを4本用いたフルブリッジ回路を、PICマイコンで制御しています。

PICマイコンから、「1-A」「1-B」という2種類の信号を出し、それぞれに対応するトランジスタをオンにしたりオフにしたりして、モータなどに正や負の出力ができます。

「1-A」「1-B」が、両方同時にオンになると、PNPトランジスタがオフになり、回路に貫通電流が流れないようにしています。

チョッパの周波数は、波形を出している間は、およそ1kHz弱です。マウスとの通信中や、LEDを点滅させている間は、チョッパ回路はオフ状態となります。

パワートランジスタは、コレクタ電流が1.5Aまで流せる品物を使っていますが、発熱には必ずしも強くないので、無理のない使い方をこころがけるべきでしょう。

ブリッジ回路は、直列方向にコイルを持っていません。このため、負荷が十分に誘導的でない場合、出力電流は断続的になります。

出力は、最大でプラスマイナス5V程度が出ます。プラレールのモータは、本来は1.5Vで動くものですので、あまり大きな出力を出すと、故障したり寿命を縮めたりします。

基板には、モータの回転数を把握する仕組みがありません。速度に対してフィードバックをかけられれば、もう少しなめらかに走るかもしれません。

ブリッジ回路と出力のコネクタ
ブリッジ回路と出力のコネクタ

ソフトウエアの仕組み

制御基板のPIC16F628に書き込むプログラムを、以下に示します。2つのバージョンを用意しました。新しいほうが、少しだけ安定して走行します。

このソースコードは、マイクロチップ・テクノロジー社のMPLABという統合開発環境の中で使えます。

プログラムの著作権は、杉原俊雄が持っています。個人的な趣味で作られる場合は、使っていただいて構いません。それ以外の使い方を希望される場合は、作者までお問い合わせください。プログラムに誤りがあった場合、危険な状態になる場合も予想されますが、作者は責任を負いかねます。ご自身の責任において使ってください。

マウスとひたすら通信

プログラムの中にあるサブルーチンの多くは、マウスとの通信についてのものです。1バイトデータを送ったり受けたりするだけでも、クロックの変化を読んだり、読み取ったビットをシフトしてため込んだりと、いろいろな処理が繰り返されています。

ブリッジ回路の制御

マウスから情報を読んだ後、ブリッジ回路に信号を出力します。オンにする時間とオフにする時間の配分を変数「mvalue」に入れておき、ループの回数を調整することで、波形を作っています。

マウスと1回通信するたびに出力する波形の数を、変えられるようになっています。この波形数は、多くなるほど出力が大きくなります。

考察

パソコンのワイヤレスマウスで、プラレールを走らせるという企画が、見事に成功しました。

マウスを前に動かせば前進、後ろへ動かせば後退するという動作は、新鮮です。

一方で、安定して走行させるのは、そう簡単ではありませんでした。

マウスを動かす速さが一定でも、電車は急に加速したり、あるいは動き出さなかったりで、扱いが難しいです。

プラレールに乾電池を直接セットすれば、安定して走ります。乾電池は、電圧が一定なので、起動時は電流を多く、走行時は電流を少なく流すことができ、走行が安定します。安定して動くものには、何かしらフィードバックがかかっている場合が多いのです。

そこで、フィードバック回路をつければ、扱いをもっと簡単にできるかもしれません。

モータの電圧をフィードバックし、指令値に近づけるような回路を追加できれば、電池を直接セットして走らせた場合に近い、安定した動作が実現できるかもしれません。

そのためには、例えばモータの端子電圧にローパスフィルタをかけてコンパレータに送り、出力指令値と比較して、チョッパの出力を決める、などといった仕組みが必要になりましょう。

幼い頃に親しんだ「プラレール」ですが、コンピュータで制御しようと思うと、おとなになってからでも奥の深さを感じさせるおもちゃだと思います。

やってみましょう

お知らせ

この作品は、CQ出版社が主催している「ワンチップ・マイコン・デザイン・コンテスト 2005」に応募する予定です。



杉原俊雄のホームページ -> PICマイコンを楽しむ -> ワイヤレスマウスで操作するプラレールのラジコン--PICマイコンでチョッパ制御
製作・著作:杉原俊雄(すぎはら としお)
(c)2005 Sugihara Toshio. All rights reserved.