ソロでたのしむ

キャンプ、電子工作、DIY、乗り物などの趣味を紹介

ラジコンを超低速で動かす!ラジコン自動走行への第2歩目

もう1年以上前になってしまいましたが、トイラジコンに超音波センサーを5個搭載して自動走行に挑戦していました。

しかし、高回転型のDCモーターを使っていたため、スピードが早すぎて距離の計測が追いつかない!という問題がありました。

対策を考えながらも、しばらく放置していましたが、挑戦再開の一歩を踏み出します。

まずは、スピードを落としつつ正確に移動距離を制御ために、ステップモーターに変更してみます。

Arduinoとステップモーター28BYJ-48で、ラジコンを自動走行させてみます

前回作った自動走行トイラジコン

f:id:solocamptouring:20190105132806j:plain

以前作った自動走行ロボットの動き方を、簡単に紹介しておきます。

  • 前側3方向(0°と±約45°)を測距しながら、障害物との距離に合わせたスピードで、障害物から遠い方向に軽く操舵しながら前進します。
  • 前方が行き詰まったら、後方2方向(±約45°)を測距しながら、スペースが開いている方に少し後退して、その場で回転します。
  • 回転後は、また前方3方向を測距しながら前進します。

動力部は、トイラジコンに付属していたDCモーターを使って、PWMで速度を変えています。

<ご参考;PWMとは?>

細かくON/OFFを繰り返す波形で、電圧を落とす(変える)のと同じような効果を得るものです。

そのON時間の割合が、デューティー比です。

改造していく途中でわかってきたのですが、デューティー比が低くなる低速では、モーターのトルクも細くなります。

そのため、狙っていたような極低速では、トイラジコンが動かなくなってしまいました。

仕方なく、トイラジコンが動くぎりぎりのデューティー比のところを最低速として動かしましたが、それでもスピードが早すぎて測距が追いつかない場合があります。

その結果、障害物に当たってから後退し始めたり、180°転回を繰り返したりと、暴れん坊の自動走行になっていました。

ステップモーターで自動走行に再挑戦します

前回作った自動走行ロボットを改良して、低速域でのスピードと移動距離を、しっかり制御できるようにします。

5個の測距センサーは、前回取り付けたものを、今後もそのまま使う予定です。

ステップモーターを動かすためには、直流モーターの速度制限(PWM)とは違ったタイプのドライバーが必要になるので、制御用のハードも変更が必要となります。

今回は駆動モーターの変更に注力して作業します。

ステップモーター(ステッピングモーター)を準備します

トイラジコンのモジュール化されているギヤボックスへの改造を最小限にしたいので、トイラジコンに付属しているDCモーターとほぼ同じ大きさのステップモーターを探してみます。

トイラジコンのDCモーターの外形は、

  • モーター外径:約24mm
  • モーター長さ:約30mm

です。

f:id:solocamptouring:20190105135855j:plain

NMB PM25Lを試してみる

トイラジコンのDCモーターとまったく同じ大きさのステップモーターは探しきれなかったので、外径の大きさが近いNMB PM25Lを選択しました。

  • モーター外径:25mm
  • モーター長さ:16mm
  • シャフト径:2mm

f:id:solocamptouring:20190105140032j:plain

モーターシャフトに取り付けるギヤは、2mmのシャフト径用のものが必要です。

トイラジコンのDCモーターについていたのは9歯のメタルギヤでしたが、ステップモーター用で8歯の樹脂ギヤを入手しました。

ステップモータードライバーは、4フェーズ5線式ユニポーラ用の既製品ボードを使います。

駆動ユニットにステップモーターNMB PM25Lを組みます

トイラジコンのDCモーターと減速ギヤは、樹脂のハウジングで一体化されています。

入手したステップモーターの外形は少し大きめなので、ハウジングのモーター格納部は、躊躇せずに切断します。

f:id:solocamptouring:20190105140744j:plain

上の写真は右側の部品だけ加工した状態です。

左側の部品もバッサリと切断して、ステップモーターをつけてみました。

f:id:solocamptouring:20190105141323j:plain

NMB PM25Lは6.4Vでラジコンを動かせるのか?

ここまで深く考えずに作業してきましたが、NMB PM25Lはユニポーラ12V駆動です。

トイラジコンの減速ギヤをそのまま使っているので、6.4Vでも動くのではないかと期待していました。

結果はあっけなく撃沈で、トイラジコンを動かせるほどのトルクは出せませんでした。

やはり電圧に合ったモーターを選ばないといけないと反省して、次の一手を考えます。

28BYJ-48を使ってみる

f:id:solocamptouring:20190105150058j:plain

駆動ユニットにステップモーター28BYJ-48を組みます

さて、気を取り直して、いつも使っているステップモーター28BYJ-48に、今回も活躍してもらうことにします。

減速ギヤ一体式のモーターなので、5~6.4Vでラジコンを動かせることは間違いありません。

ただし、トイラジコンのギヤボックスでさらに減速するとなると、超超低速走行になってしまい、動いていても停止して見えそうです。

そこで、トイラジコンの2段減速ギヤのうち最終段だけを使うことにして、一段目のギヤを直接ステップモーターで回します。

ギヤボックスは、またまた躊躇せずに切断と穴開けを敢行します。

ギヤにも28BYJ-48にちょうどいい形と大きさの穴をあけたら、動力部を組みあげてみました。

トイラジコンのモーターを28BYJ-48にのせかえる

ステップモーター28BYJ-48を6.4Vで動かしてみます

トイラジコンのギヤボックスとホイールを組んだ状態で、ステップモーターを動かしてみます。

www.youtube.com

ものすごく低速ですが、これこそ目指していた回転速度です。

しっかりと壁などを検知させたいので、月面探査機のような速度で充分です。

ステップモーター28BYJ-48と動力部を車体に組んでみました。

Arduinoとステップモーターでラジコンを自動走行させてみます

スペースを確認しながらステップモーターの取り付け角を決めたので、トイラジコンにぴったりと収まっていますね!

今後の予定(予告)

今回はステップモーターを2個使っているので、パルスを発生させるものが合計3個必要になります。

  • 超音波センサー
  • 右ステップモーター
  • 左ステップモーター

超音波センサーは、発音と測距の間に不定でバラツキ幅の大きいタイムラグが発生します。

そのため、超音波センサーを動かしているArduinoは、測距と同時にステップモーター用のパルスを発生させることができません。

このため、まず最初に、Arduinoを複数使うか、モータードライバーを追加するかを決める予定です。

Toy RC with Arduino and 28BYJ-48

Arduinoでの速度と方向制御(構想)

前回の自動走行化では、トイラジコン付属のDCモーターをPWM制御で速度コントロールしていましたが、今回はステップモーターに数種類のパルス信号の組み合わせを出力して、目的の速度と動きを作る予定です。

右左折の操舵も、簡単なプログラムで実現したいので、曲がる時の速度は、

  • 外輪:内輪 = 2:1

とします。

走行パターンも、基本的には

  1. 直進もしくは後退
  2. 右もしくは左への操舵
  3. 右もしくは左への180°転回

の3種類だけで、前後進(1)と操舵(2)は組み合わせで使います。

前進時は3個、後退時は2個のセンサーが測距した障害物の方向と距離に応じて、3種類の走行パターンを切り替えていき、自動走行化します。

To be continued!

Arduinoとモータードライバーの構成を決めたら、後は回路を組んで、スケッチ(プログラム)を少し変えるだけですが、その結果はまた次回とさせていただきます!

きっと、極低速力強く動くだけでなく、作動音も静かになって帰ってきます。

高性能なセンサーを使わずに、超音波センサー5個だけで実現するトイロボットの自動走行化、時期は未定ですが次回のお披露目まで、しばらくお待ちください!