プログラムを書かずにDDT M06ダイレクトドライブモーターを動かしてみた

スポンサーリンク

静かで、パワフルで、制御が簡単、そんな都合のいいモーター「DDT M0601C_111ダイレクトドライブモーター」。発売開始は2年前なので、まあ今更ですけどお手軽にプログラムを書かずに動かしてみました。

この記事に記載した方法は、型番は違うけどWaveShareのDDSM115ドキュメントページに詳しく書かれています。(ほとんど差がないので、どちらかがOEM品?)

環境

Windows PC
DDT M0601C_111
Serial Debug Assistant (シリアル通信ソフト)

配線

線の色の説明はミクミンPさんの画像がわかりやすかったです。
その内容を元に配線。

配線メモ

モーターとのやりとり

このモーターは物理層はRS485接続、プロトコルはシリアル半二重通信で制御できます。
ホストから送信するデータは10バイトで1セット。

ID設定、モード設定を除いて、10バイト目はデータチェック用のCRC8(CRC-8/MAXIM)の値。
ID設定、モード設定を除いて、ホストからデータを送るとモーターからフィードバックデータ10バイトが送られてくる。

CRC8(CRC-8/MAXIM)の確認方法

  1. https://crccalc.com/ にアクセスする
  2. InputをHEXに変更する
  3. 9バイト分入力する 。例:「02 64 00 20 00 00 00 00 00」
  4. CRC-8」ボタンを押す
  5. CRC-8/MAXIM」のResult値を確認する。この値が10バイト目に入れるべきデータ

シリアル通信の手順

Serial Debug Assistantというシリアル通信ソフトを使いました。
16進数で読み書きできるシリアル通信ソフトが欲しかったので、ちょうど良かった。

  1. Serial Debug Assistantを立ち上げる。
  2. 必要な設定(画像参照)を行い「開ける」(Open)ボタンを押す。
  3. 「拡張コマンド」を押す
  4. 送信設定の拡張コマンドに送信したいデータをセット。
  5. 送信ボタン(数字)を押す。

送信データ内容(モーターのID確認)

注:モーターのIDを確認する場合は、モーターを1台だけ接続すること。

送信するべきデータ:C8 64 00 00 00 00 00 00 00 DE
受信するデータの例:01 02 FF FE 00 00 76 3B 00 75

1バイト目がID、2バイト目がモード(2=速度ループ)

送信データ内容(ID1のモーターへの指示)

モーターを操作するための送信データ(速度ループ時)

速度 送信するべきデータ
-200rpm 01 64 FF 38 00 00 00 00 00 1A
-115rpm 01 64 FF 8D 00 00 00 00 00 F6
-100rpm 01 64 FF 9C 00 00 00 00 00 9A
-50rpm 01 64 FF CE 00 00 00 00 00 DA
0rpm 01 64 00 00 00 00 00 00 00 50
50rpm 01 64 00 32 00 00 00 00 00 D3
100rpm 01 64 00 64 00 00 00 00 00 4F
115rpm 01 64 00 73 00 00 00 00 00 91
200rpm 01 64 00 C8 00 00 00 00 00 6E

送信データ内容(ID2のモーターへの指示)

モーターを操作するための送信データ(速度ループ時)

速度 送信するべきデータ
-200rpm 02 64 FF 38 00 00 00 00 00 EF
-115rpm 02 64 FF 8D 00 00 00 00 00 03
-100rpm 02 64 FF 9C 00 00 00 00 00 6F
-50rpm 02 64 FF CE 00 00 00 00 00 2F
0rpm 02 64 00 00 00 00 00 00 00 A5
50rpm 02 64 00 32 00 00 00 00 00 26
100rpm 02 64 00 64 00 00 00 00 00 BA
115rpm 02 64 00 73 00 00 00 00 00 64
200rpm 02 64 00 C8 00 00 00 00 00 9B

モーターIDの書き換え

電源を入れてから1回のみ設定可能

設定するID 送信するべきデータ
1 AA 55 53 01 00 00 00 00 00 00 を5回送る
2 AA 55 53 02 00 00 00 00 00 00 を5回送る

リンク

スイッチサイエンスの製品ページ
データシートやマニュアルのリンクなど

WaveShare DDSM115 Wiki

Direct Drive Tech社製DDT M06/M15ダイレクトドライブモーターを使う
M5Stack DDT Motor M06/M15 Library

Pythonでダイレクトドライブモーターを回してみた!
DDT-M0601C-112-U2D2
ROS2 driver for DDT M06xx
公式のサンプルソース(c)

DDSM115 - Arduino Reference
Waveshare DDSM115 motor wheel driver for ROS
ddsm115_python
Arduino Uno R3とCAN-BUS Shieldを使って、DDT M15モータをテストしたときのコード

Waveshare USB TO RS485
実験用安定化電源 DP100: 測定器・計測器関連 秋月電子通商