😸

付属品が同梱していなかったロボットモータ DAMIAO DM-J4340-2ECをCAN通信で回すまで苦労した話

に公開

はじめに

こんにちは!
自作ロボットの製作や電子工作を常日頃からやっているnicoraといいます!

今回は、DAMIAOのDM-J4340-2ECというモータを購入したので回すまでに苦労した話を書こうと思います!これまでDCモータ、ステッピングモータ、ブラシレスやDynamixel等のシリアルサーボは触ってみたことがあるのですが、この手のモータを回すのは初めてなので備忘録としても残しておきます。

この記事ではPCからCAN通信でDAMIAOのDM-J4340-2ECを動作させるところまで記事にしてます。マイクロコンピュータからDAMIAOのDM-J4340-2ECを動作させる内容については別記事で記載予定です。

本記事は自分で調べた情報になりますので、実践する際には自己責任でお願いします。

DM-J4340-2ECについて

DM-J4340-2ECは「MIT制御モードで角度・速度・トルクを8バイトCANで同時制御できる小型サーボモータ」となります。中国の通販サイトで購入することが主流でしたが、スイッチサイエンス様など日本国内でも取り扱いしているようです。
ちなみに私はRT ROBOT SHOP様で購入しました。(到着するまで2週間ほどかかりました汗)

alt text

スイッチサイエンス_ DM-J4340-2EC
RT ROBOT SHOP_ DM-J4340-2EC

データシートはすべて中国語になります。

DM-J4340-2EC_データシート

購入したものまとめ

今回の記事で購入したものは以下のとおりです。

商品 購入先 備考
DM-J4340-2EC RT ROBOT SHOP 2週間かかった
XT30 (2+2)-Fケーブル スイッチサイエンス
USBtoTTL基板 Amazon
USBtoCAN基板 Amazon

ハードウェアセットアップ

DM-J4340-2ECのインターフェースと付属品について

購入したDM-J4340-2ECには付属品がついていませんでした(泣)
そのため、自力でモータのインターフェースを調べる必要がありましたが、全体的に情報がかなり少ない印象を受けました。

XT30 (2 + 2)‑F コネクタ

DM-J4340-2ECの側面にあるXT30 (2 + 2)‑F コネクタはモータの電源供給(24V/GND)とCAN通信に必要なCAN 通信線(CAN_H / CAN_L)が一体となったコネクタです。XT30 (2 + 2)‑Fのケーブルについても国内であまり流通していないようでしたが、スイッチサイエンス様で販売されていましたのでそちらで購入しました。

スイッチサイエンス_ XT30 (2 + 2)‑Fケーブル

XT30 (2 + 2)‑F コネクタは初めて使用したため、LiPo用XT30と接続できるか心配でした。XT30 (2 + 2)‑F コネクタはXT30とCAN通信信号線の間隔が狭く、物理的に干渉するのではないかと思っていました。そのため、プラスチック部分だけを切断しましたが、結果から申し上げますと不要でした。

alt text

GH1.25 3ピン コネクタ

GH1.25 3ピン コネクタはシリアル通信でのデバッグやモータのパラメータを設定するためのものでパソコンと接続するために使用します。GH1.25の3ピンは(TX/RX/GND)となります。モータの電源供給は XT30 (2 + 2)‑F プラグを介して行うことになるため、シリアル接続する際はモータの電源を供給しながら行う必要があります。

USBtoTTLの変換基板とUSBtoCAN変換基板

付属品が同梱されていなかったため、私の場合は、USBtoTTLの変換基板とGH1.25 3ピン コネクタを併用してシリアル通信をしました。この状態だとパラメータの書き込み、読み込みはできますが、CAN通信を行うことができません。CAN通信を行うには別途USBtoCANの変換基板が必要となります。

モータのTX/RXに対し、USBtoTTLの変換基板のRX/TXに接続します。
alt text

CANはモータのCAN_H / CAN_Lに対し、USBtoCAN変換基板のCAN_H / CAN_Lに接続します。
基板にはジャンパーピンがありますが、終端抵抗をONするために必要なのでジャンパーしておきます。終端抵抗はCAN通信を安定させるために必要となります。
alt text

当然ですが、両方同時に使用するのであれば、ブレッドボードなどでGNDは共通にしておきましょう。

純正品との違い

純正のDAMIAOのDM-J4340-2ECのシリアル通信用の基板はシリアル通信(TX/RX)とCAN通信(CAN_H / CAN_L)が併設された特殊な基板となっています。流通していないか調べてみましたが、国内で入手するのは難しそうでした。もし類似品などあれば、コメントで教えていただければ幸いです。

CAN通信について

概要

CAN(Controller Area Network)通信は、ツイストペア線(CAN_H / CAN_L)で複数の機器が 同じバス(線)を接続して通信するマルチノードバス通信です。1Mbpsの高速通信が可能ですが、通信を安定させるために、両端に120Ωの終端抵抗を入れるといった特徴があります。本記事ではDAMIAOのDM-J4340-2ECを動作させるMIT制御フレームとフィードバックとして返ってくるフレームについて記載します。

MIT制御フレーム

フレーム概要

MIT制御フレームは8バイト固定長で 目標位置・目標速度・比例ゲインKp・微分ゲインKd・トルクを指定します。データシートの記載は下記の通りです。
alt text

バイト ビット 内容
D[0] 15…8 目標位置 p_des 上位バイト
D[1] 7…0 目標位置 p_des 下位バイト
D[2] 11…4 目標速度 v_des 上位8ビット
D[3] 3…0 / 7…4 v_des 下位4ビット / Kp 上位4ビット
D[4] 7…0 Kp 下位バイト
D[5] 11…4 Kd 上位8ビット
D[6] 3…0 / 7…4 Kd 下位4ビット / t_ff 上位4ビット
D[7] 7…0 t_ff 下位バイト
  • ID:設定されたCAN ID値
  • p_des:目標位置(Position)
  • v_des:目標速度(Velocity)
  • Kp:位置比例ゲイン(Position P)
  • Kd:位置微分ゲイン(Position D)
  • t_ff:フィードフォワードトルク(Torque Feedforward)

フィードバックフレーム

フレーム概要

フィードバックフレームは8バイト固定長で モータの位置・速度・トルク・温度情報 を返します。データシートの記載は下記の通りです。
alt text
alt text

フレーム構造(8バイト)

バイト ビット 内容
D[0] 7…4 / 3…0 ID |ERR<<4
D[1] 15…8 位置 POS 上位バイト
D[2] 7…0 位置 POS 下位バイト
D[3] 11…4 速度 VEL 上位4ビット
D[4] 3…0 / 11…8 速度 下位4ビット / トルク 上位4ビット
D[5] 7…0 トルク 下位バイト
D[6] 7…0 T_MOS(ドライバ上MOS平均温度, ℃)
D[7] 7…0 T_Rotor(モータ内部コイル平均温度, ℃)

ERR(ステータス)の値

意味
0 無効(失能)
1 有効(使能)
8 過電圧
9 欠電圧
A 過電流
B MOS過温
C モータコイル過温
D 通信途絶
E 過負荷
  • POS:モータの位置情報(16ビット)
  • VEL:モータの速度情報(12ビット)
  • T:モータのトルク情報(12ビット)
  • T_MOS:ドライバ上MOSの平均温度(℃)
  • T_Rotor:モータ内部コイルの平均温度(℃)

GUIツール

DAMIAOのGUIツールでパラメータの設定を行います。
詳細な使用方法は下記のページに記載されています。
Damiao Series Motors

前提条件

  • USBtoTTL基板をPCに接続してください
  • モータの電源をXT30 (2 + 2)‑Fケーブル経由で24V供給してください
  • パラメータの取得と設定のみに使用します

手順

  1. シリアル接続しているCOMポートを選択します
  2. 画面下のトグルスイッチを押すと緑色から赤色になり、言語が中国語から英語になります
  3. 「OpenPort」を押すと、緑色になり、「ClosePort」となります!
    alt text
  4. 「Set parameters」タブに移動します
  5. 「ReadParam」を押すとモータのパラメータが表示されます
  6. 「Contorl settings」の「ControlMode」が1.MITとなっていることを確認します
  7. 「DriveParameter」の「Master ID」を0x01とします
  8. 「DriveParameter」の「CAN ID」を0x01とします

alt text

純正の変換基板を使用していれば、このままCAN通信でのモータの動作も確認できると思いますが、本記事では別の通信ツールを使ってCAN通信の確認をします。

SavvyCANの利用

SavvyCANはCAN通信解析・操作ツールです。モジュールと通信してデータをモニターしたり、ログを取ったり、テスト用にメッセージを送信したりできます。
下記のリンクからダウンロードしました。
SavvyCAN

前提条件

  • USBtoCAN基板をPCに接続してください
  • モータの電源をXT30 (2 + 2)‑Fケーブル経由で24V供給してください

手順

  1. SavvyCANを開くと、下記のような画面が出るので「Connection」タブ→「Open Connnection Window」を選択します。
    alt text

  2. 「Add New Device Connection」を押すと別のウインドウが表示されるため、以下のように設定します

    • Connection Type:LAWICEL/ SLCAN Serial
    • Serial Port: COM * ※ USBtoCAN基板を接続したポートを指定
    • Serial Port Speed: 1000000
    • CAN Bus Speed:1000000
  3. 設定後、「Create New Connection」を押します!
    alt text

  4. 接続ができていればStatusが「Connected」となっています!!
    alt text

  5. ホーム画面に戻り、「Send Frames」タブ→「Custom」を押すと下記のような画面が表示されます。
    alt text

  6. CAN通信で送信するBus、IDを設定し、DataにMIT制御フレームを入力します

  7. TriggerでDataを送るタイミングを指定します

  8. Enのチェックボックスにチェックを入れるとDataが送信され、Dataによってはモータが動作しますので注意してください

  9. 通信できていれば、ホーム画面にTXとRXのログが流れます

モータの動作

実際に動かしたモータの動作は下記の通りです。トルクが高いため、手で持っておかないと危険です。目標角度を±90度や±180度に設定して動作させています。

https://www.youtube.com/watch?v=vW7iwY1QPX8

まとめ

今回はCAN通信でDAMIAOのDM-J4340-2ECを回すための手順について記載しました。
個人的な感想としては、下記の通りです。

  • 入手できるのであれば、付属品が同梱しているものを購入したほうが圧倒的に楽です
  • Dynamixelのシリアル通信と似ているといった印象を受けました。Dynamixelのシリアル通信でモータを動かした経験がある人なら、データシートを見ればなんとなく理解はできます
  • 今後はマイクロコンピュータから動作させてロボットを作りたい

初投稿のため、拙い記事だったと思いますが、最後まで読んでくださってありがとうございます!Youtubeにも今まで作成したものの動画がありますのでよかったらチャンネル登録よろしくお願いします!

Discussion