IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> MKS SERVO42C 闭环步进电机 使用说明 V1.1 (三) 串口通讯 -> 正文阅读

[嵌入式]MKS SERVO42C 闭环步进电机 使用说明 V1.1 (三) 串口通讯

注意:

该说明书V1.1对应MKS SERVO42C V1.1固件,如果不确定,可以上电时观察屏幕显示,如下图所示:

在这里插入图片描述

第1部分 硬件介绍

1.1 硬件清单

序号品名数量
1MKS SERVO42C V1.1(包含电机)1
2PCBA连接线1
3串口助手模块/单片机1
4DC 12V-24V电源1

硬件清单如下图所示。
在这里插入图片描述

1.2 硬件连接

  1. 将MKS SERVO42C V1.1的串口接口RX、TX、GND,接到串口助手模块/单片机对应接口,连接关系如下表格所示:
序号MKS SERVO42C V1.1串口助手模块/单片机
1TXRX
2RXTX
3GNDGND
43V3/不接
  1. 将MKS SERVO42C V1.0的V+和Gnd接入12V-24V供电。

  2. 串口通讯接线图如下图所示:
    在这里插入图片描述
    在这里插入图片描述

第2部分 软件准备

  1. 使用的串口通讯助手可以通过企鹅群:732557609下载,如下图所示。
    在这里插入图片描述

在这里插入图片描述

  1. 串口助手如下图所示。
    在这里插入图片描述

第3部分 串口通讯格式

  1. 串口助手的发送和接收设置都为Hex,命令字节不要加0x的前缀。

  2. 驱动板的串口通讯波特率38400在UartBaud 选项上进行设置,如下图所示。
    在这里插入图片描述

  3. 驱动板的串口通讯地址e0在UartAddr选项上进行设置,如下图所示。
    在这里插入图片描述

  4. 每一条命令不要少发、漏发某个参数。

  5. 返回的数据格式是高8位在前。

  6. 返回e0 01 tCHK表示命令正确,返回e0 00 tCHK表示错误命令。

  7. 校验
    最后1字节为发送校验值tCHK 或 接收校验值rCHK
    校验值为所有字节和的低字节

    例如

    发送命令“e0 30 tCHK”
    tCHK = (0xe0 + 0x30) & 0xFF = 0x110 & 0xFF = 0x10

    接收命令“e0 01 rCHK”
    rCHK = (0xe0 + 0x01) & 0xFF = 0xe1 & 0xFF = 0xe1

第4部分 串口命令说明

4.1 读取参数命令

  1. 发送e0 30 tCHK,读取编码器值(经过线性化校准和插值后的值)。
    返回e0和uint16_t类型的编码器值和校验值rCHK,返回的编码器值范围为0-65535,表示0-360°,即一圈的数据范围。

  2. 发送e0 33 tCHK,读取输入累计脉冲数。
    返回e0和int32_t类型的输入累计脉冲数和校验值rCHK,也就是你的控制器发送过来的累计脉冲数。

  3. 发送e0 36 tCHK,读取闭环电机的实时位置。
    返回e0和int32_t类型的闭环电机实时位置和校验值rCHK,也就是电机自上电/使能起所转过的角度,单位:0-65535表示一圈,比如电机转一圈是65536,转了十圈就是655360,以此类推。

  4. 发送e0 39 tCHK,读取位置角度误差。
    返回e0和int16_t类型的位置角度误差和校验值rCHK,也就是你想要控制的位置角度减去电机的实时角度位置得到的差值,单位:0-65535表示0-360°,比如误差为1°时,数值为65536/360°= 182.444,以此类推。

  5. 发送e0 3a tCHK,读取闭环驱动板的使能状态。
    返回e0和uint8_t类型的闭环驱动板的使能状态和校验值rCHK,也就是En引脚的使能状态。用串口控制时,可以通过该命令获取驱动板的使能状态。

    使能 :返回 e0 01 CHK;

    没使能 :返回 e0 02 CHK;

    错误指令:返回 e0 00 CHK。

  6. 发送e0 3e tCHK,读取堵转标志位。
    返回e0和uint8_t的堵转标志和校验值rCHK,当电机发生堵转,会置位堵转标志,通过该命令可以获取到电机是否发生了堵转。如果使能了堵转保护选项,发生堵转后,驱动板会自动关闭驱动器。

    堵转 :返回 e0 01 rCHK;

    没堵转 :返回 e0 02 rCHK;

    错误指令:返回 e0 00 rCHK。

4.2 设置系统参数命令

  1. 校准编码器 (对应屏幕上的“Cal”选项)
    发送e0 80 00 tCHK校准编码器。
    校准编码器前,请确保电机没带负载!!!建议校准好以后再装进机器。

    比如:
    发送e0 80 00 60,校准编码器。

    校准成功,返回 e0 01 e1;

    校准失败,返回 e0 02 e2。

  2. 设置电机类型 (对应屏幕上的“MotType”选项)
    发送e0 81 __ tCHK,修改电机类型。

    00对应0.9度电机

    01对应1.8度电机

    比如:
    发送e0 81 01 62,修改电机类型为 1.8°。
    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

    设置电机类型后,需要重新校准编码器,校准前要断开电机负载。

  3. 设置工作模式 (对应屏幕上的“CtrMode”选项)
    发送e0 82 __ tCHK,设置工作模式。

    00 CR_OPEN (开环模式)

    01 CR_vFOC (闭环模式(STP/DIR 接口))

    02 CR_UART (闭环模式 (UART 接口))

    比如:
    发送e0 82 01 63,设置CR_vFOC模式。

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  4. 设置电流档位 (对应屏幕上的“Ma”选项)
    发送e0 83 __ tCHK,设置电流档位。
    00 对应 0ma

    01 对应 200ma

    02 对应 400ma

    0C对应 2400ma

    0D 对应 2600ma

    0E 对应 2800ma

    0F 对应 3000ma

    比如:
    发送e0 83 06 69,设置电流1200ma。

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  5. 设置任意细分 (对应屏幕上的“MStep”选项)
    发送e0 84 MS tCHK,设置1~256任意细分。
    可以在MStep选项看到设置的细分。

    比如:
    发送e0 84 07 6B,修改为7细分;

    发送e0 84 4e B2,修改为78细分;

    发送e0 84 00 64,修改为256细分。
    以此类推…

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  6. 设置En 引脚有效电平 (对应屏幕上的“En”选项)
    发送e0 85 __ tCHK,设置En 引脚有效电平。

    00 对应低电平使能(L)

    01 对应高电平使能(H)

    02 对应一直使能(Hold)

    比如:
    发送e0 85 00 65,设置为低电平使能。
    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  7. 设置电机旋转正方向 (对应屏幕上的“Dir”选项)
    发送e0 86 __ tCHK,设置电机旋转正方向。

    00 对应顺时针旋转

    01 对应逆时针旋转

    比如:
    发送e0 86 00 66,设置为顺时针旋转。

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  8. 设置自动熄屏功能 (对应屏幕上的“AutoSDD”选项)
    发送e0 87 __ tCHK,设置自动熄屏功能。
    00 关闭自动熄屏功能

    01使能自动熄屏功能

    比如:
    发送e0 87 00 67,设置关闭自动熄屏功能。

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  9. 设置堵转保护功能 (对应屏幕上的“Protect”选项)
    发送e0 88 __ tCHK,设置堵转保护功能。
    00关闭堵转保护功能

    01使能堵转保护功能

    比如:
    发送e0 88 00 68,设置关闭堵转保护功能。

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  10. 设置细分插补功能 (对应屏幕上的“MPlyer”选项)
    发送e0 89 __ tCHK,设置堵转保护功能。
    00关闭内部的 256 细分插补功能
    01使能内部的 256 细分插补功能

    比如:
    发送e0 89 00 69,设置关闭细分插补功能。

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  11. 设置串口波特率 (对应屏幕上的“UartBaud”选项)
    发送e0 8a __ tCHK,设置串口波特率。
    01 9600

    02 19200

    03 25000

    04 38400

    05 57600

    06 115200

    比如:
    发送e0 8a 04 6e,设置波特率为38400。
    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  12. 设置串口地址 (对应屏幕上的“UartAddr”选项)
    发送e0 8b __ tCHK,设置串口地址。
    00 对应e0

    01对应e1

    09对应e9

    比如:
    发送e0 8b 00 6b,设置串口地址为e0。

    发送e0 8b 01 6c,设置串口地址为e1。

    发送e0 8b 02 6d,设置串口地址为e2。

    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

4.3 自动回零相关命令

  1. 设置自动回零的模式 (对应屏幕上的“0_Mode”选项)
    发送e0 90 __ tCHK,设置自动回零的模式。
    00 关闭自动回零Disable

    01方向模式DirMode

    02就近模式NearMode

    比如:
    发送e0 90 01 71,设置为DirMode模式
    设置成功,返回 e0 01 e0;

    设置失败,返回 e0 00 e1;

  2. 设置自动回零的零点 (对应屏幕上的“Set 0”选项)
    发送e0 91 00 tCHK,设置自动回零的零点。

    比如:
    发送e0 91 00 71,设置零点
    设置成功,返回 e0 01 e0;

    设置失败,返回 e0 00 e1。
    注意:需要先设置“0_Mode” 的模式。

  3. 设置自动回零的速度 (对应屏幕上的“0_Speed”选项)
    发送e0 92 __ tCHK,设置自动回零的速度(范围0~4,数值越小速度越快)。

    比如:
    发送e0 92 02 74,设置自动回零速度为2。
    设置成功,返回 e0 01 e0;

    设置失败,返回 e0 00 e1。

  4. 设置自动回零的方向 (对应屏幕上的“0_Dir”选项)
    发送e0 93 __ tCHK,设置自动回零的模式。
    00 对应顺时针方向CW

    01 对应逆时针方向CCW

    比如:
    发送e0 93 00 73,设置自动回零方向为顺时针方向。
    设置成功,返回 e0 01 e0;

    设置失败,返回 e0 00 e1。
    注意:对于就近模式回零模式NearMode,0_Dir的设置应该和电机实际运行方向一致,否则会回零失败。

  5. 返回零点 (对应屏幕上的“Goto 0”选项)
    发送e0 94 00 tCHK,返回零点。

    比如:
    发送e0 94 00 74,返回零点
    返回成功,返回 e0 01 e1;

    返回失败,返回 e0 00 e0。
    注意:需要先设置 “0_Mode” 和 “Set 0”。

4.4 设置PID/加速度/扭矩参数命令

  1. 设置位置Kp参数
    发送e0 a1 __ __ tCHK,设置位置Kp参数。(Kp默认值为 0x650)

    比如:
    发送e0 a1 01 20 a2,设置Kp = 0x120;
    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  2. 设置位置Ki参数
    发送e0 a2 __ __ tCHK,设置位置Ki参数。(Ki默认值为 1)

    比如:
    发送e0 a2 00 02 84,设置Ki = 2;
    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

  3. 设置位置Kd参数
    发送e0 a3 __ __ tCHK,设置位置Kd参数。(Kd默认值为 0x650)

    比如:
    发送e0 a3 02 50 d5,设置Kd = 0x250;
    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。
    注意:PID参数设置不当,电机可能震动,请谨慎设置参数!!!

  4. 设置加速度ACC参数
    屏幕上的“ACC”选项只能设置7个固定数值,这里可以任意设置数值。
    发送e0 a4 __ __ tCHK,设置ACC参数。(ACC默认值为 0x11E)
    比如:
    发送e0 a4 00 80 04,设置ACC = 0x80;
    设置成功,返回 e0 01 e1;
    设置失败,返回 e0 00 e0;
    注意: ACC设置过大,可能损坏驱动板,请谨慎设置参数!!!

  5. 设置最大扭矩MaxT参数
    发送e0 a5 __ __ tCHK,设置最大扭矩MaxT。(MaxT默认值为 0x4B0)
    MaxT取值范围(0 ~ 0x4B0)

    比如:
    发送e0 a5 02 58 df,设置MaxT = 0x258;
    设置成功,返回 e0 01 e1;

    设置失败,返回 e0 00 e0。

4.5 恢复默认参数命令

  1. 发送e0 3f tCHK,恢复默认参数。
    (对应屏幕上的“Restore”选项)

    比如:
    发送e0 3f 1f,恢复默认参数;

    恢复成功,返回 e0 01 e1;

    恢复失败,返回 e0 00 e0。
    注意:恢复默认参数后,需要重新上电并且需重新设置串口波特率,才能串口通信。

4.6 串口直接控制命令

  1. 发送e0 f3 0_,修改串口控制模式下驱动板的使能状态。
    在串口控制模式下,驱动板的使能状态不再受En引脚的电平控制,而是利用该命令进行控制。

    发送e0 f3 00,关闭驱动板;

    发送e0 f3 01,使能驱动板;

    修改成功,返回 0xe0 0x01 rCHK;

    修改失败,返回 0xe0 0x00 rCHK;

  2. 发送e0 f6 __,让电机以一定的速度进行正/反转。
    __字节的最高位表示方向,低7位表示128个速度档位,
    在这里插入图片描述

    转速计算公式为:
    Vrpm = (speed × 3000)/(Mstep × 200) 1.8度电机
    Vrpm = (speed × 3000)/(Mstep × 400) 0.9度电机

    例如 1.8度电机,150细分,speed=1
    Vrpm = (1 × 3000)/(150 × 200) = 1

    部分转速如下表在这里插入图片描述

    比如:
    发送e0 f6 01 tCHK,电机以1档速度正转;

    发送e0 f6 81 tCHK,电机以1档速度反转;

    发送e0 f6 5a tCHK,电机以90(0x5a)档速度正转;

    发送e0 f6 da tCHK,电机以90(0xda = 0x5a | 0x80)档速度反转;
    运行成功,返回 0xe0 0x01 rCHK;

    运行失败,返回 0xe0 0x00 rCHK;

  3. 发送e0 f7 tCHK,让电机停止正/反转。

    成功,返回 0xe0 0x01 rCHK;

    失败,返回 0xe0 0x00 rCHK;

  4. 发送e0 ff c_ tCHK保存/清除保存上面(2)中所设置的正/反转速度。

    发送e0 ff c8 tCHK,保存上面(2)中所设置的正/反转速度;

    发送e0 ff ca tCHK,清除已保存的正/反转速度;

    注1:可以让电机每次上电都直接按照保存的速度和方向一直转动。
    也就是说,如果你想要电机一上电就以一定的速度正/反转,你可以先按照(2)中的命令设置好想要的速度和方向,接着利用该命令进行保存,然后重新上电后电机就会按照保存的速度和方向转动了。

    注2:保存成功后,会关闭驱动板,需重新使能驱动板。

    成功,返回 0xe0 0x01 rCHK;

    失败,返回 0xe0 0x00 rCHK;

  5. 发送e0 fd __ __ __ __ __ tCHK,串口直接位置控制。
    第一个__字节,最高位表示方向,低7位表示速度。

    第二个__字节、第三个__字节、第四个__字节、第五个__字节组成 uint32_t类型的数据,表示你要发送的脉冲数。
    在这里插入图片描述

    转速计算公式同上面(2)。

    比如:
    在16细分下,发送e0 fd 01 00 00 0c 80 6a,表示电机以1档速度正转360°。
    (01表示1档速度正转,0c 80表示3200(0x0c80)个脉冲 = 360°)

    又比如:
    在16细分下,发送e0 fd 88 00 10 75,表示电机以8档速度反转1.8°
    (88表示8档速度反转,00 00 00 10表示16(0x10)个脉冲 = 1.8°)

    成功,返回 0xe0 0x01 rCHK;

    失败,返回 0xe0 0x00 rCHK;

第5部分 串口通讯步骤

5.1 配置串口

  1. 在SERVO42C菜单设置中,开启串口直接控制功能。
    在这里插入图片描述

  2. 配置通讯波特率为38400,如下图所示。
    在这里插入图片描述

  3. 打开串口助手,

    选择串口端口;

    设置波特率为38400;

    接收设置,选择 Hex,勾选自动换行;

    发送设置,选择 Hex,勾选自动发送附加为,选择校准算法为 CHECKSUM-8。

    如下图所示:
    在这里插入图片描述

5.2 读取闭环电机实时位置

  1. 发送 e0 36(附加校准位后 e0 36 16),读取闭环电机的实时位置。
    返回数据为 E0 FF FF FF F8 D5
    在这里插入图片描述

5.3 控制电机正/反转

  1. 发送 e0 f6 10(附加校准位后 e0 f6 10 e6),电机以 16 档速度正转;
    在这里插入图片描述

  2. 发送 e0 f6 90(附加校准位后 e0 f6 90 66),电机以 16 档速度反转;
    在这里插入图片描述

至此,Makerbase SERVO42C 使用说明 V1.1 (三)串口通讯完成。

创客基地 Makerbase SERVO42C 使用说明 V1.1(三)串口通讯 到此结束。

欢迎加入 创客基地 电机控制Q群 讨论电机控制相关问题:732557609

欢迎光临 创客基地 B站 了解技术资料:https://space.bilibili.com/393688975

欢迎光临 创客基地 淘宝店 采购产品:https://makerbase.taobao.com/

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:35:28  更:2022-04-01 23:36:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:21:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码