DDSM Driver HAT (A)

来自Waveshare Wiki
跳转至: 导航搜索
DDSM Driver HAT (A)
RoArm-M2-S
{{{name2}}}
{{{name3}}}
板载接口
UART RS485 USB

产品说明

这是一款用于 DDSM 系列直驱伺服轮毂电机的驱动板,板载 4 路 DDSM115 电机接口,4 路 DDSM210 接口,集成 ESP32 和轮毂电机控制电路,我们开源了轮毂电机控制例程和 JSON 通信接口,用户可以通过 USB 连接,使用上位机发送 JSON 格式的指令来控制轮毂电机,并获取 JSON 格式的反馈(电机的电流,转速,温度等信息)。

用户也可以对其进行二次开发,作为机器人项目的下位机来使用。


产品特性

  • 用于驱动 DDSM 系列轮毂电机:DDSM115、DDSM210
  • 板载4路 DDSM115 电机接口,4路 DDSM210 接口
  • 提供易于使用的 DDSM 轮毂电机控制例程和 SDK
  • 支持多种有线和无线通信方式,支持 JSON 指令交互,方便上位机控制
  • 支持安装树莓派,集成5V降压稳压电路可为树莓派供电,通过GPIO串口进行通信,降低接线复杂度
  • 集成 WEB 应用用于控制和设置 DDSM 轮毂电机,方便调试
  • 可通过 Type-C 接口与 DDSM 轮毂电机直接通信

板载资源

DDSM-Driver-HAT-A-details-intro.jpg

DDSM Driver HAT (A)资源简介.png


使用前注意事项

  1. 由于轮毂电机结构特殊,不能直接放置在桌面上让其转动,最好将轮毂电机的轴固定,如果您没有对应的结构件来安装轮毂电机,可以设置心跳函数来让轮毂电机自动停止转动,具体方法会在后续介绍。
  2. 目前只有 DDSM115 和 DDSM210 两款轮毂电机。不同型号的轮毂电机不能同时混用,因为控制指令和反馈信息都是不同的,在您为电机设置ID前,先不要连接电机和驱动板。


基础使用

电源准备

准备 DDSM Driver HAT (A) 驱动板的供电电源,可以通过 DC5525 或者 XT60 两个供电接口的其中一个进行供电。

DDSM Driver HAT (A) 驱动板支持 9~28V DC 电源,但具体的电源规格需要根据您所使用的 DDSM 轮毂电机的型号来确定:

  • 使用 DDSM115 时,供电范围为 12~24V;
  • 使用 DDSM210 时,供电范围为 9~28V;

电源的电流要根据轮毂电机的工作需求来选择,支持的电流越大越好,在我们的使用测试中,使用 24V 6A 的电源可适用于绝大部分场景。


ESP32 使用控制

DDSM Driver HAT (A) 驱动板出厂上默认带有轮毂电机的控制例程,确保“串口控制切换开关”位于 ESP32 的档位(如下图),此时轮毂电机可以接收来自 ESP32 的控制指令。通过 DC5525 或 XT60 两个供电接口给驱动板供电,驱动板上的 ESP32 会自动开机并同时建立热点供用户连接。

DDSM-Driver-HAT-A-ESP32档位.jpg

  • ESP32 建立的热点名称默认为 ESP32-AP,默认密码为 12345678,您可以使用手机、平板或PC连接这个热点,然后打开浏览器,地址栏输入 192.168.4.1,访问轮毂电机 Web 控制应用。
  • Web 控制应用中有一个 JSON 指令输入框,下面是 JSON 指令案例,您可以通过点击下面 JSON 指令案例旁的 “INPUT” 来将对应的 JSON 指令自动填写到输入框中,然后再更改输入框中指令的值,更改后点击 “SEND” 将指令发送到 ESP32。
  • 根据您需要控制的轮毂电机型号向驱动板发送指令设置驱动板的通信规则类型。驱动板出厂默认会按照 DDSM115 的通信规则来解析轮毂电机的控制和反馈指令。
    • 如果需要控制的是 DDSM210 轮毂电机,则点击 DDSM CTRL 中的 CMD_TYPE_DDSM210 这条 JSON 指令旁的 “INPUT”,可以看见这条对应的 JSON 指令填写到上方的输入框中,接着点击 “SEND” 进行发送,即将驱动板设置成按照 DDSM210 的通信规则来解析轮毂电机的控制和反馈指令。
    • 如果设置成 DDSM210 的通信规则情况下,需要控制的是 DDSM115 轮毂电机,则通过 DDSM CTRL 中的 CMD_TYPE_DDSM115 这条 JSON 指令来设置成 DDSM115 的通信规则。

这个过程可以不需要连接轮毂电机,每次驱动板上电仅需进行一次该设置。


设置电机 ID

每个轮毂电机在出厂时的 ID 默认为1,因此在进行轮毂电机控制之前,需要为每个轮毂电机设置 ID。

  1. 将需要设置 ID 的轮毂电机与驱动板连接。注意:驱动板上只能连接有一个轮毂电机,如果连接了多个轮毂电机,那么驱动板上所连接的轮毂电机都会被设置为相同的新 ID。
  2. 通过 DC5525 或 XT60 两个供电接口给驱动板供电,使用手机、平板或PC连接 ESP32-AP 的热点(密码为12345678),打开浏览器访问 192.168.4.1 轮毂电机 Web 控制应用。
  3. 点击 DDSM CTRL 中的 CMD_DDSM_CHANGE_ID 这条指令旁的 “INPUT”,可以看见上方输入框中显示设置电机 ID 的 JSON 指令为:{"T":10011,"id":1},其中:
    • T:设置电机 ID 的指令类型为 10011。不同指令操作都有各自对应的指令类型。固定值,不能修改。
    • id:更改为需要设置轮毂电机的 ID 数值,为 1~253。新设置的 ID 支持断电保存。

若您忘记之前给轮毂电机设置的 ID,或者需要查看 ID 设置是否成功,可以发送 DDSM CTRL 中的 CMD_DDSM_ID_CHECK 这条指令即可查询轮毂电机 ID。反馈的信息为:

{"T":20010,"id":6,"typ":210,"spd":-1,"crt":-2,"act":1,"tep":40,"err":0}


速度闭环控制

设置心跳函数

在进行轮毂电机的转动控制前,您需要将轮毂电机的轴固定,如果您目前没有对应的结构件来固定电机轴,可以设置心跳函数来让轮毂电机自动停止转动(默认的速度环模式下)。

  • 点击 CMD_HEARTBEAT_TIME 这条指令旁的 “INPUT”,可以看见 Web 界面上方输入框中显示设置心跳函数的 JSON 指令为:{"T":11001,"time":2000},其中:
    • T:设置心跳函数的指令类型为 11001。固定值,不能修改。
    • time:时间,单位是 ms。当 time 值为 -1 时,心跳函数功能关闭;当 time 值为 2000 时,发送运动控制指令后 2 秒钟内如果没有接收到新的指令,驱动板会自动控制轮毂电机停止转动,这样可以避免轮毂电机一直转动下去。

有两点注意事项:

  1. 我们提供的例程中,心跳函数仅作用于 ID 为 1、2、3、4 的这四个轮毂电机;
  2. 当轮毂电机处于位置环模式时,最好关闭心跳函数(即 time 值为 -1 时),否则在位置环模式下自动执行心跳函数会导致轮毂电机回复到 0 位置。
例子:
你可以设置一条 time 值为 1000 的心跳函数指令,在输入框中的 JSON 指令输入:{"T":11001,"time":1000},点击 SEND 发送,这样当你控制 ID 为 1、2、3、4 的轮毂电机转动时,它转动 1 秒钟后会自动停止,这样防止无结构件固定电机轴的情况下电机突然转动引起的危险。

进行速度控制

  • 点击 CMD_DDSM_CTRL 这条 JSON 指令旁的 “INPUT”,可以看见 Web 界面上方输入框中显示速度环控制电机的 JSON 指令为:{"T":10010,"id":1,"cmd":50,"act":3},其中:
    • T:设置心跳函数的指令类型为 11001。固定值,不能修改。
    • id:改成需要控制轮毂电机的 ID。
    • cmd:动作指令的值,具体需要对应具体模式环的取值范围。
    • act:每一转的加速时间,单位为 0.1ms。act 值越大,速度变化越柔和。
  • 在默认的速度环模式下,cmd 值,对于 DDSM115 和 DDSM210 这两种轮毂电机来说都是目标转速的值,但是单位不同,DDSM115 的 cmd 值单位是 转/分钟( rpm);DDSM210 的 cmd 值的单位是 0.1 转/分钟(0.1rpm)。例如:如果 cmd 值为100,对于 DDSM115 来说是目标速度 100 rpm,对于 DDSM210 来说是目标速度 10 rpm。

点击 SEND 发送这个指令之后,轮毂电机会开始转动。如果你没有设置心跳函数(心跳函数的 time 值为 -1)轮毂电机会一直转动下去,之后你可以使用上面的速度控制指令,将目标转速 cmd 值改为 0,可以令轮毂电机停止转动。也可以使用 CMD_DDSM_STOP 指令来让电机停止转动。


电机模式切换

轮毂电机支持不同的电机模式切换,但是重新上电后的轮毂电机默认都是处于速度环模式下(即速度闭环控制的部分)。

可以使用 CMD_CHANGE_MODE 这条指令来切换模式环,可以看见 JSON 指令显示为:{"T":10012,"id":1,"mode":2},其中:

  • T:电机模式切换的指令类型为 10012。固定值,不能修改。
  • id:需要切换电机模式的 ID。
  • mode:电机模式对应的值。具体如下:
    • 0:开环,仅 DDSM210 有开环模式,类似于直流电机的 PWM 控制(同样的,当这一数值过低时电机不会转动,需要达到某一阈值后才能开始转动),cmd 值的绝对值越大,加速度越大,cmd 值的取值范围为 -32767 ~ 32767。
    • 1:电流环,仅 DDSM115 有电流环模式,闭环控制电流的大小,CMD_DDSM_CTRL 的 cmd 值(一下简称 cmd 值,因为无论什么模式坏,都是由 CMD_DDSM_CTRL 这条 JSON 指令来控制的)的绝对值越大,加速度越大,cmd 值的取值范围为 -32767 ~ 32767,对应 -8A ~ 8A,但是 DDSM115 最大只支持到 2.7 A。
    • 2:速度环,DDSM115 与 DDSM210 都具备的模式,也是轮毂电机上电后的默认模式,可闭环控制速度大小,cmd 值得取值范围根据电机的极限转速来确定,电机的极限转速取决于电源的供电能力和电机的负载大小,负载越大可以达到的极限转速越小。DDSM115 在无负载时可以达到 200 rpm;DDSM210 在无负载时可以达到 210 rpm。
    • 3:位置环,DDSM115 与 DDSM210 都具备的模式,当电机切换为位置环时的转速不能过快,最好在电机静止时切换位置环,切换位置环时的位置为 cmd 值为 0 时的位置,但是已经处于位置环的电机再次接收切换位置环的指令时,位置 0 不会更新,位置环下的 cmd 值的取值范围为 0 ~ 32767 (0 ~ 360°),数值逐渐增加为顺时针转动,且电机会自动按照最短的路径规划来运动到目标位置,例如:电机目前处于位置 0,但是你需要让它逆时针转动到某一个位置,这时的 cmd 值应该大于 32767/2,因为它逆时针转到目标位置的路程更近。


获取电机反馈

  • 每次使用 CMD_DDSM_CTRL 控制电机时,电机都会反馈当前的状态信息。
  • 您可以使用 CMD_DDSM_INFO 这条命令获取其它信息反馈。


有线控制

基础使用部分介绍的是如何在 Web 应用中发送 JSON 指令及 JSON 指令的介绍,本部分介绍如何通过有线连接的方式发送 JSON 指令控制驱动板和轮毂电机。

您可以使用 树莓派、Jetson、PC 或其它带有 USB 接口(可进行串口通信的 USB 接口)的设备做为上位机,使用 USB 线连接驱动板和上位机,您可以在上位机中运行 Python 脚本,或者串口调试助手之类的工具,生成 JSON 指令来控制轮毂电机。

这里介绍使用简单的串口调试助手来控制轮毂电机(后面的章节会介绍使用 Python 脚本来控制轮毂电机):

  • 下载串口调试助手
  • 连接轮毂电机到驱动板,为驱动板供电,使用 USB 线连接上位机和驱动板上面标记有 ESP32-USB 的 Type-C 接口,确保“串口控制切换开关”位于 ESP32 的档位
  • 选择 USB 端口号,打开串口,波特率 115200,编辑 JSON 指令,需要在 JSON 指令后面手动添加换行符 \n
  • JSON 指令的功能与上面 Web 应用章节所介绍的一致


Python 串口通信控制

您可以在上位机中运行 Python 脚本来控制轮毂电机,本脚本可以在任何支持运行 Python 脚本和支持串口通信的设备上使用,包括 Windows PC、Raspberry Pi、Jetson orin 等设备,根据实际情况更改运行 Python 脚本时的输入的串口设备名称参数即可,例如,串口设备名称为 /dev/ttyUSB0 时,使用以下方法来运行 Python 脚本:

python serial_simple_ctrl.py /dev/ttyUSB

然后你可以在终端中输入 JSON 格式的指令,按回车,即可与 DDSM Driver HAT(A) 进行通信,例如,需要需要获得当前连接的电机ID(此时只能有一个电机连接),可以发送:

{"T":10031}


资料下载

产品模型


产品出厂例程


出厂例程下载工具


Python 脚本


技术支持

联系人:刘工
EMAIL:3005296252@qq.com
QQ:3005296252
微信:扫下方二维码添加
QRCode WeiLiu.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证