
HOBBYWING製ESCの「リアルカーモード」と組み合わせられるLEDコントローラーが見当たらないので、いっそのこと自作してしまいます。
今回用意したESCはHOBBYWINGのQuicRUN-WP-1080-G2-Brushedで、これを「リアルカーモード」に設定して使う予定です。このモードは、スロットルと前後進切替を別々のchで操作するというものです。スロットルのchはアクセルとブレーキ、前後進切替のchはONにするとモーター回転方向を逆転、というジェスチャーになります。
リアルカーモードのジェスチャーは私が昔から求めていたものだったので、これを実現した製品を使えることに喜びを覚えているのですが、前回の作業中に一つ問題が発生しました。LEDを制御したくなってしまったのです。もともとLEDについては、ヘッドライトとブレーキランプだけ常時点灯させて完成とするつもりだったのですが、うっかり後退灯を取り付けてしまいました。さすがに後退灯が常時点灯だと違和感があるので、後退時のみ点灯するようにしなければいけませんよね。そうなるとブレーキランプもブレーキをかけているときだけ点灯してほしい。さらにヘッドライトを点けているときはブレーキをかけていなくてもテールランプとして半点灯してほしい。LEDコントローラーが必要になってしまったわけです。これが、前回の記事でLEDユニット搭載時に述べた「もうひと手間加えたい」の内容です。
リアルカーモードのジェスチャーでLEDコントローラーを使いたいとなると面倒です。なにせこのジェスチャーを採用したESCはおそらく他にありません。当然、このジェスチャーに対応しているLEDコントローラーを見つけるのも絶望的です。どの製品も、2ch入力のうち1chはステアリング操作に連動したウインカー用なので、「点滅」パターンしか用意されていません。「点灯」パターンがありさえすれば、後退灯として使えるのに。この時点で、候補がほぼ全滅してしまうわけです。例えば、手持ちにはタミヤの
TLU-02や3RACINGの
3RAC-LEDSがありますが、いずれもこの理由で使えませんでした。
どうやら市販のLEDコントローラーを買って済む話ではなさそうです。一応、ブレーキランプ用に1個、後退灯用に1個で計2個のLEDコントローラーを使えば必要な制御はできるのですが、それはなんだか採用しづらいです。というわけで、リアルカーモードに対応したLEDコントローラーの自作に踏み切る羽目になりました。
自作LEDコントローラーへの要求を整理します。最低限必要な機能は下記です。
F1. スロットルchをブレーキ側に倒す → ブレーキランプ点灯
F2. 前後進切替chのON/OFF → 後退灯点灯/消灯
ただ、せっかく6chプロポKT-631STを持っているのですから、もう1chくらい活用して何か遊べそうですよね。そこで、
F3. ライトchのON/OFF → ヘッドライトおよびテールランプ点灯/消灯
という機能も追加することにしました。
それから、LEDユニットのTLU-01に対して一つ不満があって、これR/Cメカの電源と連動してくれないんですよね。自作LEDコントローラーの電源はちゃんと連動させる予定なので、ついでに
F4. R/Cメカの電源ON/OFF → TLU-01の電源ON/OFF
という機能もこちらで担うことにします。
電子回路としてはマイコン1個とその周辺回路だけ用意して、あとはプログラミングでなんとかするという方針でいきます。こういう電子工作で使うマイコンといえば、Arduinoが有名ですね。OSすらインストールせずに使う簡素なコンピューターですが、そのぶん小型で起動も早いので今回の用途に適しています。ちなみにTLU-02や3RAC-LEDSも分解してみたら同様にマイコン1個を主体とした構成でした。とりあえず手元にあった
Arduino UNO R3…と同等な
Miuzeiの互換機を使って始めます。
まず入力についての検討です。市販のLEDコントローラーと同様に、サーボやESCへのケーブルを分岐させて受信機の信号を入力するという方式にします。受信機がサーボやESCに対して発する信号についてググってみると、例えば
Hori's Library様の記事のような情報が見つかります。厳密な規格はないものの、デファクトスタンダードとして1500±500マイクロ秒幅のパルス信号を20ミリ秒周期くらいで発しているらしいです。信号レベルは受信機やサーボの駆動電圧によると思いますが、こちらも機種によってまちまちなので決め打ちすることはできそうにありませんね。というわけで、第一の周辺回路として
C1. 受信機からの入力信号のレベル変換回路
が必要になります。ここではとりあえずデジタルトランジスタを使うことにしましたが、後で調べるとダイオード1個とかでも実現できたみたいですね。言われてみればその通りです。
次に出力については、TLU-01のコントロールユニットコネクターに信号を与えることでLEDを点灯/消灯したいと思います。TLU-02がどんな信号を出力しているか地道に調べるしかないかと思いましたが、幸いなことに同機を分解調査して回路図まで起こしてくださっていた
ikkei様の記事があったので、どうやら制御端子を「未接続で点灯、GNDに接続で消灯」という仕様らしいことがわかりました。つまり、
C2. TLU-01へのオープンコレクタ出力回路
が必要になります。これもデジタルトランジスタで実現します。
それから、F4を実現するために、
C3. マイコン電源およびTLU-01電源のスイッチ回路
が必要ですね。これにはPchのMOSFETとデジタルトランジスタを組み合わせて、受信機からの+電源線を入力として制御することにします。これで周辺回路が一通り揃いました。
周辺回路をブレッドボードに組んで適当な受信機をつなぎ、プログラミングの方も進めます。パルス信号の幅を測定してLEDをON/OFFするだけと言ってしまえばそれまでなのですが、実際に組んでみると様々な課題に直面するものです。最も大きな壁は、「受信機から複数chのパルスが同時に入力されると、測定値がずれる」というものでした。Arduinoは同時並行の処理ができないので、どちらかのパルスの測定が後回しになってしまい、その分がマイクロ秒単位の誤差として表れてしまうのです。普段だったら無視するような誤差なのですが、今回は測定対象もマイクロ秒単位なので困ってしまいました。仕方ないので、一度に受信するchを一つだけに制限して他のchを無視し、順番に測定していくことにしました。F1~F3のために合計3chを測定する必要があるので、最大で60ms程度の遅延が発生してしまうわけですね。このうえノイズ除去のためにもう一周測定するようにしたので、LEDに反映されるまで最大120ms程度の遅延になってしまいました。ここは、将来もっといい方法を思いついたら改善したいですね。
さてプログラミングができたら、どのように搭載するかが悩みどころです。Arduino UNOも名刺+αくらいの面積なので、感覚としては十分小さいのですが、ラジコンに載せようとすると意外と嵩張ります。ここに周辺回路もつけるとさらに大変なので、もっと小さい機種にする必要があります。
まず検討したのは
Arduino Nano Everyです。ユニバーサル基板にちょろっと並べてある電子部品は周辺回路です。右側の空きスペースを切り落とせば5cm四方くらいに収まりそうですね。搭載するだけなら問題ないサイズになってきましたが、きちんとケースに収めて搭載しようと思うと、この中途半端なサイズに合うものがありません。もう少し小型化する必要があります。
マイコンはArduino Nano Everyのまま、トランジスタアレイ
TBD62003をやめてディスクリートのデジタルトランジスタ
DTC114を並べると少し小さくなりました。今回の回路でアレイを使うとリード線の取り回しが悪いので、ディスクリートのほうがかえってコンパクトになるのですね。このサイズなら、タカチのユニバーサル基板
TNF34-49に載せて
SW-55ケースに収められそうです。
ただそれは、Arduinoを基板に直接ハンダした場合の話です。交換できるようにソケットで実装すると、高さがSW-55に収まらないことに気づきました。一個\2,000以上もする部品が交換できないのはちょっと嫌なのでどうしようかと思っていたとき、Arduino UNO R3互換機を眺めていて気付きました。なんか、一番大きいICが取り外せそうな構造になっているな?
調べてみるとArduino UNOの心臓部は
ATmega328PというICで、実はこれ単体でもほぼArduinoとして機能するそう。Arduino公式サイトでも、
移行のしかたを案内しています。というわけで、ATmega328Pをソケットに搭載する前提で組み直しました。マイコンの電源回路をこちらで用意しなければならないので三端子レギュレーターを1個追加していますが、Arduino Nano Everyを使うよりは余裕が生まれました。
しかし、実際にこれを組み立てることを考えると気が遠くなります。これ何か所ハンダするんですかね。ちまちましたリード線もあるので、見かけの部品点数以上の作業量があります。密度が高いので作業しにくいですし、作り直しにでもなったら…あまり考えたくありませんね。
実はここまでの検討でも、回路図作成などができるソフト
Fritzingを補助的に使っていました。これのプリント基板モードを使うと業者にも渡せる図面が作れるらしいので、改めてちゃんと描き直して
JLCPCBに発注してみたところ、ユニバーサル基板で組むよりずっとキレイな基板が楽に手に入りました。最小5枚からで納期は一週間程度。割引価格で送料込み\500ほどでしたが、正規価格でも\1,000しないみたいです。こんな立派な基板が素人の趣味で作れるなんて、いつからか知りませんがすごい時代になったものですね。
組みあがりました。とてもハンダしやすかったため、82箇所もありましたがスムーズでした。とりあえず電源が正しく来ていることを確認して、マイコンを載せます。
受信機とLEDユニットをつないで動作確認。ブレッドボードのときと基板に載せたときとでパルスの測定結果がちょっと変わってしまうようなので、微調整のプログラミングをする必要がありましたが、なんとか期待通りに動いてくれました。
本当はここに書ききれていない失敗や発見が山ほどあって、だからこそコレに3か月もかかったのですが、やはり記事にするのはこれくらいが限界です。苦労したとはいえ、ラジコン製作記としては単に「LEDコントローラーを用意した」という1ステップに過ぎないので、そう長々と語っているわけにもいきません。ともあれ、これでR/Cメカが全て揃ったので、メカ積みの仕上げとシャーシ製作の続きに入りたいと思います。