・こんにちは!yumeno-robotですー。 今回は、私が中学生時代に最も時間をかけた技術ともいえる「6CH をArduinoで動かす方法」をご紹介します!
・このインターネットでほぼすべてのことが解決してしまうこの世の中、 Arduinoで6chモーターコントローラーを動かす方法なんて探せ見つかると思う方も多いと思いますが、 全然見つからないんですよねー。データシートをたくさん読んでシリアル通信の勉強もそれなりにして やっと発見したものなので参考にできればどうぞ。 まあ、別のモータードライバを使えば終わる話なのですがw (↑これはマジで言っちゃいけないことだよ☆)
・私の所属していた科学部では先輩方の栄光のおかげで「Arduino」「TJ3B」などのマイコンや、 「シングルパルスボールセンサー」「ホワイトラインセンサー」などのお高めのセンサーなどがたくさんあり、 自分たちの欲しい部品を買うのではなく、今ある部品を使うのが好ましい.... みたいな感じだったので、部室に落ちてた「6CHモーターコントローラー」を使うことにしました。
・Arduino
・6CHモーターコントローラー
・ブレットボード
・ケーブル(ジャンパー線)
・電池
・皆さん経験したことある通り、異なる会社の製品同士のマイコンやセンサーなどで遊んでいたりすると、
「UART」「SPI」「I2C」などを使わなければならない場合ってありますよね。
(ものによってはうまくできなくていやになるやつらですねーーーw)
なんか、通信方法の説明をしそうな雰囲気ですが長くなるしめんどくさいのでカットします!!
6CHモーターコントローラーのデーターシートを見てみると
----USART(シリアル)通信19200bps
----I²C 通信インターフェイス装備(100KHzまたは400KHz)
の2つの通信方法が使えるそうです。
私も最初は「I2C通信」でやってたのですが全然うまくいかなかったり、
なぜか煙が出てくることもあったので「UART通信」でやることに決まました。
(そういえば言ってなかったわ。今回は「UART通信」で動かす説明ですw!)
1.UART通信」通信をするわけですから「TX」「RX」ピンを使用します。
ArduinoのRXをモーターコントローラーのTXに接続し、
ArduinoのTXをモーターコントローラーのRXに接続する。(図1)
2.電池をモータードライバーとArduinoにつなぐ。
(図1)
⇩⇩まずプログラムです⇩⇩
3行目でシリアル通信のデータ転送レートをbpsで指定している。つまり通信開始の合図。
7行目で実際に("")データに入っているデータを送信している。
・上の写真にある通りプログラムはとても短く済みます。しかし、転送するデータがどうなっているかわからないと思うので解説します。
1.この文字列は"1R100"、"2R100"、"3F100"、"4F100"、"5R100"、"6R100"と6つに分けて見ます。
この1ブロック("1R100")が6つあるモーターの1つを制御するプログラムです。
2."1R100"の一番にある「1」は動かすモーターピン番号を示します。
モーターピンは6つあるので1から6まで設定できます。
3.2文字目の「R」「F」は回転方向を示します。
「R」は後転。「F」は正転となります。
4.それ以降の3桁の数「100」や「080」「050」「000」は回転出力を示します。
出力は0%から100%まで設定でき必ず3桁にする必要があるため2桁の場合は前に0を追加する必要がある。
つまり80%や50%の場合は「080」「050」と設定する必要がある
ちょっと複雑ですよね。
一緒にやってみましょう!
1番ピン 正転 100%の出力
2番ピン 後転 100%の出力
3番ピン 後転 50%の出力
4番ピン 後転 77%の出力
5番ピン 正転 8%の出力
6番ピン 後転 0%の出力
で回す場合
"1F100"
"2R100"
"3R050"
"4R077"
"5F008"
"6R000"
となり、それを合わせればいいので
となる!!
複雑でわかるずらいですよね。
簡単にできるよう、昔よく使っていた自作ライブラリがあるのでもし使えそうなら使ってみてください。
⇩⇩⇩URL⇩⇩⇩
一様、私のころはこれで動いていました。
もし動かなかったらごめんなさい!