PICK UP

ZUGYUUUN!で実現!! スマホで操作するラジコン戦車:解説編

LAB

山本 允葵

ラジコン戦車の解説編です。

応用すれば自作のロボットでも何でも作れると思いますので、 自作ラジコンの製作の一助になれば幸いです。

【解説編1/2】 駆動回路

前回のおさらい

モータードライバとして、TA7291Pを用いております。
駆動電圧は、分解前と同じく、8Vを想定しています。
⇒前回の記事はこちら

ラジコン側で工夫するポイントは以下の2点です。

  • 無段階変速を実現するためにPWM信号を注入する
  • モータードライバへ注入するPWM信号は、電源電圧相当(8V)まで昇圧しなければいけない

戦車を駆動させる電源は、電圧が8V必要です。
対してRaspberryPiのGPIO端子の出力は3.3Vとなっています。
従ってRaspberryPiの信号だけえはモーターは駆動できないので、
モータードライバ TA7291P を用いて制御します。

TA7291Pの説明

TA7291P

5番ピン、6番ピンの電圧印加で、モーターの回転方向を変えることができます。

pin5 OFF pin5 ON
pin6 OFF 停止 前進
pin6 ON 後退 未使用

4番ピンは、Δrefとして、電源電圧を印加したり、パルスで駆動速度を制御します。
最高速度と、停止の2段階で良い場合は、ここに駆動電圧をかけます。
速度をコントロールしたいキャタピラ側は、ここにRaspberryPiからPWM信号を入力し、
無段階に速度を調整できるようにしました。

エミッタ接地増幅回路

スイッチオンでキビキビと走らせるためには、GPIO端子からの信号を増幅してやる必要があります。
そのため、RaspberryPiからの出力をエミッタ接地増幅回路で増幅します。
その場合、エミッタ接地増幅回路の特性により、 副作用としてスイッチが反転するので、0ならGo 1ならStopになります。
ここで、部品点数を抑えるために、プログラムの方で出力を反転させています。

エミッタ設置増幅回路

制御回路の作成

結果、以下のような回路を設計し、それぞれ2セットづつ組み込むことにしました。
モーターのコンデンサなどは元々のラジコンに実装されていたものをそのまま利用します。

circuit01

完成した回路が、以下になります。

モータードライバ基板1

ほぼモータードライバが4つ搭載されているだけの実装です。

【解説編2/2】 操作UI

次に、操作UIについて説明します。 RaspberryPiからの接続端子の構成は、以下としました。

RasPi配線

  • 操作用のUIはハンドルタイプの操作系で、ラジコンは左右のキャタピラの独立制御なので、変換する必要がある
  • ブラウザで傾き検出をする

ブラウザによる操作において、左右のキャタピラを別々で動かそうとした場合、
安直なブラウザのマルチタッチでは、従来の簡単なWebUIを捨てなければ実現できなくなります(※1)
そこで、ブラウザの傾き検出を利用して、ハンドルを切るように左右に動かす方法で実装することにしました。

ブラウザの傾きを検出する方法は、 重力加速度を検知して、そのベクトルから、現在の端末の傾きを算出します(※2)

(※1)html5rocks.com マルチタッチ ウェブ開発
(※2)da-tools.com 逆正接 atan2()

今回は、端末の横向きの回転方向のみを算出しました。

前後の駆動は、アクセルが前方向の時は前方向のみ、後ろ方向の時は後ろ方向のみの進行方向、
停止中の回転は左右の駆動を等速で逆向きに回転させています。

スマホの左右の傾きは、旋回方向内側の減速率を決定します。
前進中に傾けたときのアクセル開度を数式で表すと、
外側:Δacc 内側:Δacc * (1-sin(Θ))

となります。 停止中のアクセル開度は、以下のようになります。
左側:△max * sin(Θ)
右側:- △max * sin(Θ)

次に、アクセル開度からPWMのデューティー比(※3)への変換をします。

前述のとおり、PWMからの信号はエミッタ接地増幅回路で反転させますので、
デューティー比0 で アクセル全開 デューティー比1 で アクセル停止 となります。
ここで、実際に負荷をかけた状態(キャタピラを実装した状態)で駆動させた場合、
デューティー比0.5で止まるので、それ以上は切り捨ています。

(※3)Wikipedia デューティー比

実際の駆動コードは以下になります。

▼実装のGitHubリポジトリへのリンク
https://github.com/m2wasabi/zgn-tank-controller

これらを組んだ後、動かしたい場合、 GitHubにアップされたソースから展開させます。

wifi接続について

現状、ZUGYUUUN! OS でwi-fi接続を行うには、
インストール前のOSイメージを編集するか、起動後のRaspberryPiに侵入する必要があります。
前回のアナウンスどおり、今後のアップデートで簡単に設定できるようにする予定ですので、
本稿では具体的な手順は割愛させていただきます。

【応用編】 オリジナルのラジコンを作ろう!

ZUGYUUUN! 用のアプリケーションとして、
GitHubのリポジトリをForkするなどして、ZUGYUUUN! のコンソールに登録すれば、
あなただけのUIが手に入ります。

今回ご紹介したラジコンのソースコードは、GitHubで公開しておりますので、
是非ご利用ください。

※Web側のUIを作る際の注意
データベースへアクセスさせるパスワードなど、
機密性の高い情報をリポジトリに含めないようにしてください。

それでは、良いIoTライフを!

blog_banner