使って適当に工作したメモを残していきます。ラジコンを作る(4):WiiリモコンでDCモーターを操作する前回で材料がそろいました。DCモーターを動かします。左右キャタピラのモーターを制御するのは面倒ですので、1個で試してみましょう。出来上がるとこんな感じになります。これの回路図は次のようになります。前回書かなかった可変抵抗器と固定抵抗器が含まれていますが、これらはArduinoでソフトウェア的に代替させることも可能です。固定抵抗器なしの接続方法については「建築発明工作ゼミ2008」さんが参考になります。TA7291P10本のピンが生えていて、上部の鉄板が欠けている側が1番ピンです。それぞれのピンの役割は次のようになります。1番ピン:GNDグランドピンです。2番ピン:OUT1モーターへの出力です。モーターの片方の端子につなぎます。動かしたときにモーターが思ったのと逆向きに回ってしまう場合は、2番ピンと10番ピンを入れ替えればOKです。3番ピン:NC使いません。誤って逆に挿した場合、ちょうどこの位置にVs(8番ピン)が来ます。モーター電源なので、万が一逆に挿してしまっても回路が壊れないように3番ピンをアースしてあるんだと思います。これを考えた人って賢いですね。4番ピン:Vrefモーター制御ピンです。普通はここには抵抗器ではなくArduinoのPWM出力を繋いでモーターの回転速度を制御します。その場合は5番6番ピンをデジタル出力するようにArduinoのプログラムを書きます。今回はその代わりに4番を固定抵抗にして5番6番をPWM出力にすることで回転速度を制御しています。どちらでもモーター制御は可能です。「ところでPWMって何?」という方は前掲の「建築発明工作ゼミ2008」さんで詳しく説明されていますのでご参照ください。5番ピン:IN1モーター制御用の入力です。6番ピンにつなぎます。IN1をHIGH、IN2をLOWにするとモーターが正転します。IN1をLOW、IN2をHIGHにするとモーターが反転します。Vrefの電圧で回転速度を制御します。いうのが普通の使い方です。今回の場合、Vrefの電圧を固定にする代わり、IN1とIN2の電圧を変化させることで回転速度と方向を一気に制御します。値を元にモーター電源からモーターに流す電圧を変化させているようですね。6番ピン:IN2モーター制御用の入力です。5番ピンと組み合わせて使います。今回はArduinoの5番ピンにつなぎます。モーターは停止します。8番ピン:Vsモーター用電源です。最大20Vまで入力できます。Arduinoに20Vを繋ぐと壊れてしまうのでArduino用とモーター用の電源を分ける必要があります。電圧がVrefの電圧より低くなるとTA7291Pが壊れるそうです。4)にするとUSBの5Vより下がってしまう可能性があるので注意してください。壊れるため、それはそれで注意が必要です。余談ついでに言うと「モーターをパワフルに動かしたいがバッテリーも1つにまとめたいぜ!」という欲張りな方は20Vを分圧して5Vに落として繋ぐ方法もあります。QuadcopterにArduinoを載せる場合などにはこの方法で軽量化することもありますが電圧が不安定になるのであまりお奨めしません。9番ピン:NC使いません。万が一、左右反転して挿してしまっても、OUT1(2番ピン)の位置になってモーター回路がカットされます。10番ピン:OUT2モーターへの出力です。簡単な説明だけに留めておきます。ダウンロードしてインストールします。ケーブルでPCにつなぎます。起動すると既に認識されているはずです。スケッチは次の通りです。このスケッチは「hiramine.com」さんを参考にさせていただきました。いうか、ピン番号以外ほとんどそのままです。流し込んで可変抵抗器を動かすと動画のように動くはずです。レゴはお好みで適当に。setup()Arduino起動時に実行されます。Arduinoのスケッチを作る際は必ず必要な関数です。第一引数に指定したピンを第二引数のモードに設定する関数です。初期化された後、繰り返し実行されます。これも必ず必要な関数です。引数に指定したアナログピンからアナログ値を読む関数で、0~1023の値が返ります。適当にスリープを入れています。Map第一引数で与えた二、三引数の範囲内の値を四、五引数の範囲に丸めています。いう関数があるので見比べると参考になるかもしれません。MotorDrive可変抵抗の値がプラス側だったらモーターを正転させ、マイナス側だったら逆転させています。