2026年5月22日金曜日

Wiiリモコン+Arduino+LEGOでラジコン作る(2):DCモーターを動かすをトレースしてみた

部品を前にちょっと身構える私

こんにちは。前回、2015年のおっさん記事「Wiiリモコン+Arduino+LEGOでラジコンを作る」の材料選定編をトレースしました。机に部品がひととおり並んだので、今回は連載第2回、いよいよDCモーターを動かす回です。

元記事をのぞいたら、いきなり TA7291P っていう10本足のICが出てきて、ちょっと身構えました。モーターなんて電池をつなげば回るんじゃ…?と思っていたんですけど、どうやらそんな単純な話ではないみたいです。

→ 元記事:「Wiiリモコン+Arduino+LEGO でラジコンを作る(2):DCモーターを動かす」(tech.andhandworks.com)

完成品イメージ:DCモーターをドライバICとブレッドボードでつないだ作業机

TA7291P とは

TA7291P は、東芝が作っていたモータードライバICです。Arduinoのようなマイコンが出す弱い信号を受け取って、別に用意したモーター用の電源からモーターへ流す電圧を切り替える、いわば「力の中継役」。マイコンのピンはモーターを直接回せるほど電流を流せないので、こういうICを間に挟むんだそうです。

Arduino用とモーター用、電源は分ける

元記事でくり返し念を押されていたのが、電源を2系統に分けること。「ArduinoにVs(モーター電源)の20Vをつなぐと壊れる」、しかも「逆にVsがVrefより低くてもICが壊れる」そうで、読んでいて素直に「こわ…」となりました。いまどきのドライバモジュールは保護回路が入っていることが多いですけど、2015年は配線ミス=即お亡くなり、だったんですね。元記事の慎重さにも納得です。

今回の登場部品は、マイコンの Arduino UNO、モータードライバの TA7291P、速度を決める 可変抵抗器、それに DCモーター。※TA7291P は2026年現在ほぼ生産終了で、流通しているのは在庫品や互換品が中心です。

速度を決めるコードで、つまずく

元記事のスケッチを写していたら、こんな自作関数が出てきました。

int Map(int iIn, int iIn1, int iIn2, int iOut1, int iOut2, ...) {
  // 0〜1023 の読み値を -255〜255 の範囲に変換する
}

可変抵抗を回すと 0〜1023 の値が読めるので、それを -255〜255 に変換して、プラスなら正転・マイナスなら逆転、ゼロ付近なら停止、という仕組みです。よく考えられてるなぁ…と感心しつつ、ひとつ引っかかりました。これ、Arduinoに最初から入っている map() 関数では…?

2026年の私なら、ここをこうします

スマホでClaudeに聞く私

スマホでClaudeに「TA7291Pのこの自作Map関数、いまならどう書く?」と聞いてみたら、5秒でこう返ってきました。

int iMotor = map(analogRead(A0), 0, 1023, -255, 255);
iMotor = constrain(iMotor, -255, 255);

標準の map()constrain() で2行。元記事の自作Map関数、まるごと要らなくなりました。2015年当時のArduinoにも map() はあったはずなので、たぶん「自分で書いたほうが挙動が読めて安心」だったんでしょうね。その気持ちはちょっとわかります。

ドライバICのほうも、今あえて TA7291P を選ぶ理由はそんなになくて、TB6612FNGDRV8833 のような新しいモジュールなら、1枚でモーター2個ぶん・保護回路つき・配線もぐっと楽になります。キャタピラのラジコンは左右モーター2個構成なので、これ1枚で足りてしまいます。

それでも、おっさんは正しかった

…とさんざん時代差をツッコみましたが、「電源は分ける」「ICを壊さないよう電圧に気をつける」という大原則は、2026年の TB6612FNG でもまったく同じです。部品が新しくなっても、電気の理屈は11年前から1ミリも変わっていないんですよね。次回はいよいよキャタピラ部分。モーターが1個回っただけで、私もちょっとワクワクしてきました。

今回の用語メモ

  • モータードライバ:マイコンの弱い信号を合図に、別電源の大きな電流をモーターへ流すための中継IC。
  • PWM:電圧をものすごく速くON/OFFして、平均の強さを変える仕組み。モーターの速度調整に使われる。
  • map() / constrain():Arduino標準の関数。ある範囲の数値を別の範囲に変換/指定した範囲内に収める。

関連アイテム

0 件のコメント:

コメントを投稿