Plus電子デバイス・電子工作用語集モータドライバ博士のQ&A読者よりいただいたお問い合わせを元に、ロボット製作者、エンジニアのみなさんに役に立つ技術解説を発信していきます。Plus電子デバイス・電子工作用語集モータドライバ博士のQ&A読者よりいただいたお問い合わせを元に、ロボット製作者、エンジニアのみなさんに役に立つ技術解説を発信していきます。Arduinoでモーターを制御する!(その3)。自作ラジコンカーに挑戦!サーボモーターでステアリング実装。第12回でモータードライバの使い方について学びました。今回はモータードライバのさらに詳しい使い方と、実際にモータードライバを使った簡単な自作ラジコンカーを作っていきたいと思います。簡易百葉箱の作成のときの流れのように、ラジコンカーの仕様を決めて、実際に制作に取りかかっていきたいと思います。Zigbeeとモータードライバを組み合わせて、市販のラジコンをリアルな走行に改造しよう」に紹介されていますが、本記事ではラジコンカーの基本部分から自作をして、電子回路部分の他に、ステアリングやエンジンなどの動きの部分についても勉強しながら進めていきます。図1:ラジコンカーの構成ラジコンカーの構成を主要な機能で分類すると大まかに図1のように分けることができます。逆に、この構成を満たせばラジコンカーと言える、ということですね。Zigbeeとモータードライバを組み合わせて、市販のラジコンをリアルな走行に改造しよう」の紹介記事では、このラジコンカーのステアリングやステアリング部分は市販の製品を利用して、エンジン部分やコントローラーを実装することでラジコンカーに仕上げています。本記事では、すべての部分についてその仕組みやカスタマイズをするにはどうしたらよいかを手を動かしながら考えてみたいと思います。ラジコンカーの仕様を決める手を動かす前に、どのようなラジコンカー作るかということで、大まかな仕様を決めましょう。仕様を考えて見ると...基本動作は前進・後退、ステアリングを実装ボディは手軽に組めるようにしたいできるだけコンパクト化を図りたいコントローラーはできれば無線化という感じでしょうか。→前進・後退するためのモーターとステアリング用のモーターの2つ必要です。ステアリング用のモーターはサーボモーターを利用したほうが良いようです。ボディは手軽に組めるようにしたい→LEGOブロックでいつでも作り変えたりするようにするのが便利なようです。UNO自体がやや大きいので、他のArduinoを使ってみるのが良いようです。電池も小型化できないか考えましょう。→赤外線での通信や、XBEEという無線モジュールなどを利用できそうですが、ちょっと難易度が高そうなので、できれば実装する方向で進めてみます。いう感じになりそうですね。今回のラジコンカーの実装は、新しく勉強することがたくさん出てきて盛りだくさんになりそうですね(汗)。一つひとつじっくりと取り組んでみたいと思います。モーター回路を設計するさっそく取り掛かってみましょう。「1.仕様基本動作は前進・後退、ステアリングの実装」について、ラジコンカーの心臓部分となる回路を設計します。モータードライバを使って前進・後退するモーターの前進・後退については、第12回Arduinoでモーターを制御する!(その2)の回で使った回路を利用します。参照)では、Arduinoの9番10番から交互に出力することで回転・逆回転をすることができます。ラジコンカーの前進・後退についてはこの回路をそのまま利用すれば実現が可能です。ステアリングの実現ラジコンを左右に方向を変えるためのステアリングの実装を考えてみます。これまでのようにDCモーターを利用すると考えたときに、右に30度ハンドルを切るというような処理をできるでしょうか?瞬間的にモーターを回して30度だけモーターを動かせば・・・と考えてみても、ちょっと実現が難しそうですね。そこで登場するのがサーボモーターです。サーボモーターって何?サーボモーターは、これまで利用してきたモーターに角度などの制御する回路が組み込まれたモーターです。今回利用するサーボモーターは0度から180度までモーターを制御することができます。サーボモーターを動かす回路を作成してみましょう。Arduinoでサーボモーターを利用する場合、Arduinoに予めサーボモーターを利用するための「ライブラリ」(処理が一式まとまったプログラム郡)が用意されています。このサーボライブラリを利用してサーボモーターを制御します。//サーボを動かす(90度)delay(1500);}ステアリングの制御ができたら、駆動部分の回路と一緒にしてみます。サーボをデジタル11番に、DCモーターの制御をデジタル9,10番に割り当ててプログラムを作成してみました。45;myservo.write(val);delay(1500);}今回は、delay(1500)で指定したように1.5秒ごとにステアリングと駆動部分が動くプログラムにしてみます。次回はコントローラーからの入力に応じて制御できるようにしましょう。ステアリング部分を作ってみる回路ができ、サーボモーターでモーターの角度制御ができるようになりましたので、ラジコンカーのステアリング部分を作成してみます。「3Dプリンターを使って製品のようなかっこいいラジコンカーを作ってやるぜ!」と言いたいところですが、今の段階ではハードルが高すぎますね。ステアリングの機構をどうやって作ったらよいのか考えながら、手を動かしながら試行錯誤をしたいと思いますので、「2.ボディは手軽に組めるようにしたい」を満たすために、今回はLEGOブロックを使ってラジコンカーを作ってみたいと思います。ステアリング」で検索すると、様々な方法でステアリングの実装方法が出てきます。今回はコンパクトにしたいので、このような形でステアリングを作ってみました。右:タイヤをはずした状態)前進・後退の駆動部分を作ってみるステアリング部分がとりあえずできたので、次に駆動部分を作ってみます。ミニ四駆用のピニオンギアを使ってモーターとLEGOのギアを自作する方法が紹介されていましたので、今回はこれを使いたいと思います。LEGO用の専用モーターを持っている方は、それを利用しても良いと思います。今後モーターも小さいものを利用したいので、今後もできる限り工夫していきましょう!写真4:ピニオンギアをLEGOのギアにはめ込むモーターと駆動部分は、今回そのまま接続できるようにしました。動くものを作成したいので、モーターの固定もゴムを使っています(笑)。調べてみると、変速機構を持たせたり、ギア比率を変えて速度を優先したりトルクを出すようにしたりと色々工夫ができるみたいですので、自分なりのカスタマイズをして下さい!写真5:駆動部分はシンプルに。ステアリング部分と駆動部分を合体させてみます。写真6:合体させてみました。写真7:Arduinoを本体に載せてみるArduinoをそのまま載せたらなんかそれっぽい感じに!でもこれだとモーターの電池や回路のブレッドボードが載りません...回路とボディができたら実際にテストして動かしてみます。写真8:回路をテストステアリングと駆動部分がきちんと動いていますね。これでとりあえずラジコンカーの基本部分ができました。このまま頑張ってボディにArduino等を載せてみます。写真9:一式載せてみるなんかむき出しなのがかっこいい!けどちょっとごてっとしています...無理矢理ボディに全部載せてみましたがやはりちょっとむき出しすぎるし、ボディに対してArduinoなどが大きく重くなってしまっていますね。Arduinoの電源を取る為に9V電池を接続したら載せる場所がなくなってしまいます...。まとめ次回以降はラジコンのコントローラー部分を作成して、コントローラーの入力に応じてモーターを操作できるようにしてみたいと思います。Miniなどの小さいサイズのArduinoを使ってみたいと思います。Mini(互換ボード)赤川シホロ電子工作や新しいデバイスをこよなく愛するエンジニア。日常生活のちょっとしたことを電子工作で作って試して、おもしろく過ごしたいと日々考えています。Arduinoでモーターを制御する!(その1)モーターの基本を勉強してみる。Arduinoで作る簡易百葉箱(その3)湿度センサーの習得、そして電池で動かしてみる。Arduinoで作る簡易百葉箱(その2)。電光掲示板(7セグメントLED)を使って数値を表示。Arduinoで作る簡易百葉箱(その1)。