注意:
该说明书V1.1对应MKS SERVO42C V1.1固件,如果不确定,可以上电时观察屏幕显示,如下图所示:
第1部分 硬件介绍
1.1 硬件清单
序号 | 品名 | 数量 |
---|---|---|
1 | MKS SERVO42C V1.1(包含电机) | 1 |
2 | PCBA连接线 | 1 |
3 | 串口助手模块/单片机 | 1 |
4 | DC 12V-24V电源 | 1 |
硬件清单如下图所示。 | ||
![]() |
1.2 硬件连接
- 将MKS SERVO42C V1.1的串口接口RX、TX、GND,接到串口助手模块/单片机对应接口,连接关系如下表格所示:
序号 | MKS SERVO42C V1.1 | 串口助手模块/单片机 |
---|---|---|
1 | TX | RX |
2 | RX | TX |
3 | GND | GND |
4 | 3V3 | /不接 |
-
将MKS SERVO42C V1.0的V+和Gnd接入12V-24V供电。
-
串口通讯接线图如下图所示:
第2部分 软件准备
- 使用的串口通讯助手可以通过企鹅群:732557609下载,如下图所示。
- 串口助手如下图所示。
第3部分 串口通讯格式
-
串口助手的发送和接收设置都为Hex,命令字节不要加0x的前缀。
-
驱动板的串口通讯波特率38400在UartBaud 选项上进行设置,如下图所示。
-
驱动板的串口通讯地址e0在UartAddr选项上进行设置,如下图所示。
-
每一条命令不要少发、漏发某个参数。
-
返回的数据格式是高8位在前。
-
返回e0 01 tCHK表示命令正确,返回e0 00 tCHK表示错误命令。
-
校验
最后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 读取参数命令
-
发送e0 30 tCHK,读取编码器值(经过线性化校准和插值后的值)。
返回e0和uint16_t类型的编码器值和校验值rCHK,返回的编码器值范围为0-65535,表示0-360°,即一圈的数据范围。 -
发送e0 33 tCHK,读取输入累计脉冲数。
返回e0和int32_t类型的输入累计脉冲数和校验值rCHK,也就是你的控制器发送过来的累计脉冲数。 -
发送e0 36 tCHK,读取闭环电机的实时位置。
返回e0和int32_t类型的闭环电机实时位置和校验值rCHK,也就是电机自上电/使能起所转过的角度,单位:0-65535表示一圈,比如电机转一圈是65536,转了十圈就是655360,以此类推。 -
发送e0 39 tCHK,读取位置角度误差。
返回e0和int16_t类型的位置角度误差和校验值rCHK,也就是你想要控制的位置角度减去电机的实时角度位置得到的差值,单位:0-65535表示0-360°,比如误差为1°时,数值为65536/360°= 182.444,以此类推。 -
发送e0 3a tCHK,读取闭环驱动板的使能状态。
返回e0和uint8_t类型的闭环驱动板的使能状态和校验值rCHK,也就是En引脚的使能状态。用串口控制时,可以通过该命令获取驱动板的使能状态。使能 :返回 e0 01 CHK;
没使能 :返回 e0 02 CHK;
错误指令:返回 e0 00 CHK。
-
发送e0 3e tCHK,读取堵转标志位。
返回e0和uint8_t的堵转标志和校验值rCHK,当电机发生堵转,会置位堵转标志,通过该命令可以获取到电机是否发生了堵转。如果使能了堵转保护选项,发生堵转后,驱动板会自动关闭驱动器。堵转 :返回 e0 01 rCHK;
没堵转 :返回 e0 02 rCHK;
错误指令:返回 e0 00 rCHK。
4.2 设置系统参数命令
-
校准编码器 (对应屏幕上的“Cal”选项)
发送e0 80 00 tCHK校准编码器。
校准编码器前,请确保电机没带负载!!!建议校准好以后再装进机器。比如:
发送e0 80 00 60,校准编码器。校准成功,返回 e0 01 e1;
校准失败,返回 e0 02 e2。
-
设置电机类型 (对应屏幕上的“MotType”选项)
发送e0 81 __ tCHK,修改电机类型。00对应0.9度电机
01对应1.8度电机
比如:
发送e0 81 01 62,修改电机类型为 1.8°。
设置成功,返回 e0 01 e1;设置失败,返回 e0 00 e0。
设置电机类型后,需要重新校准编码器,校准前要断开电机负载。
-
设置工作模式 (对应屏幕上的“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。
-
设置电流档位 (对应屏幕上的“Ma”选项)
发送e0 83 __ tCHK,设置电流档位。
00 对应 0ma01 对应 200ma
02 对应 400ma
…
0C对应 2400ma0D 对应 2600ma
0E 对应 2800ma
0F 对应 3000ma
比如:
发送e0 83 06 69,设置电流1200ma。设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。
-
设置任意细分 (对应屏幕上的“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。
-
设置En 引脚有效电平 (对应屏幕上的“En”选项)
发送e0 85 __ tCHK,设置En 引脚有效电平。00 对应低电平使能(L)
01 对应高电平使能(H)
02 对应一直使能(Hold)
比如:
发送e0 85 00 65,设置为低电平使能。
设置成功,返回 e0 01 e1;设置失败,返回 e0 00 e0。
-
设置电机旋转正方向 (对应屏幕上的“Dir”选项)
发送e0 86 __ tCHK,设置电机旋转正方向。00 对应顺时针旋转
01 对应逆时针旋转
比如:
发送e0 86 00 66,设置为顺时针旋转。设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。
-
设置自动熄屏功能 (对应屏幕上的“AutoSDD”选项)
发送e0 87 __ tCHK,设置自动熄屏功能。
00 关闭自动熄屏功能01使能自动熄屏功能
比如:
发送e0 87 00 67,设置关闭自动熄屏功能。设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。
-
设置堵转保护功能 (对应屏幕上的“Protect”选项)
发送e0 88 __ tCHK,设置堵转保护功能。
00关闭堵转保护功能01使能堵转保护功能
比如:
发送e0 88 00 68,设置关闭堵转保护功能。设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。
-
设置细分插补功能 (对应屏幕上的“MPlyer”选项)
发送e0 89 __ tCHK,设置堵转保护功能。
00关闭内部的 256 细分插补功能
01使能内部的 256 细分插补功能比如:
发送e0 89 00 69,设置关闭细分插补功能。设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。
-
设置串口波特率 (对应屏幕上的“UartBaud”选项)
发送e0 8a __ tCHK,设置串口波特率。
01 960002 19200
03 25000
04 38400
05 57600
06 115200
比如:
发送e0 8a 04 6e,设置波特率为38400。
设置成功,返回 e0 01 e1;设置失败,返回 e0 00 e0。
-
设置串口地址 (对应屏幕上的“UartAddr”选项)
发送e0 8b __ tCHK,设置串口地址。
00 对应e001对应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 自动回零相关命令
-
设置自动回零的模式 (对应屏幕上的“0_Mode”选项)
发送e0 90 __ tCHK,设置自动回零的模式。
00 关闭自动回零Disable01方向模式DirMode
02就近模式NearMode
比如:
发送e0 90 01 71,设置为DirMode模式
设置成功,返回 e0 01 e0;设置失败,返回 e0 00 e1;
-
设置自动回零的零点 (对应屏幕上的“Set 0”选项)
发送e0 91 00 tCHK,设置自动回零的零点。比如:
发送e0 91 00 71,设置零点
设置成功,返回 e0 01 e0;设置失败,返回 e0 00 e1。
注意:需要先设置“0_Mode” 的模式。 -
设置自动回零的速度 (对应屏幕上的“0_Speed”选项)
发送e0 92 __ tCHK,设置自动回零的速度(范围0~4,数值越小速度越快)。比如:
发送e0 92 02 74,设置自动回零速度为2。
设置成功,返回 e0 01 e0;设置失败,返回 e0 00 e1。
-
设置自动回零的方向 (对应屏幕上的“0_Dir”选项)
发送e0 93 __ tCHK,设置自动回零的模式。
00 对应顺时针方向CW01 对应逆时针方向CCW
比如:
发送e0 93 00 73,设置自动回零方向为顺时针方向。
设置成功,返回 e0 01 e0;设置失败,返回 e0 00 e1。
注意:对于就近模式回零模式NearMode,0_Dir的设置应该和电机实际运行方向一致,否则会回零失败。 -
返回零点 (对应屏幕上的“Goto 0”选项)
发送e0 94 00 tCHK,返回零点。比如:
发送e0 94 00 74,返回零点
返回成功,返回 e0 01 e1;返回失败,返回 e0 00 e0。
注意:需要先设置 “0_Mode” 和 “Set 0”。
4.4 设置PID/加速度/扭矩参数命令
-
设置位置Kp参数
发送e0 a1 __ __ tCHK,设置位置Kp参数。(Kp默认值为 0x650)比如:
发送e0 a1 01 20 a2,设置Kp = 0x120;
设置成功,返回 e0 01 e1;设置失败,返回 e0 00 e0。
-
设置位置Ki参数
发送e0 a2 __ __ tCHK,设置位置Ki参数。(Ki默认值为 1)比如:
发送e0 a2 00 02 84,设置Ki = 2;
设置成功,返回 e0 01 e1;设置失败,返回 e0 00 e0。
-
设置位置Kd参数
发送e0 a3 __ __ tCHK,设置位置Kd参数。(Kd默认值为 0x650)比如:
发送e0 a3 02 50 d5,设置Kd = 0x250;
设置成功,返回 e0 01 e1;设置失败,返回 e0 00 e0。
注意:PID参数设置不当,电机可能震动,请谨慎设置参数!!! -
设置加速度ACC参数
屏幕上的“ACC”选项只能设置7个固定数值,这里可以任意设置数值。
发送e0 a4 __ __ tCHK,设置ACC参数。(ACC默认值为 0x11E)
比如:
发送e0 a4 00 80 04,设置ACC = 0x80;
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0;
注意: ACC设置过大,可能损坏驱动板,请谨慎设置参数!!! -
设置最大扭矩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 恢复默认参数命令
-
发送e0 3f tCHK,恢复默认参数。
(对应屏幕上的“Restore”选项)比如:
发送e0 3f 1f,恢复默认参数;恢复成功,返回 e0 01 e1;
恢复失败,返回 e0 00 e0。
注意:恢复默认参数后,需要重新上电并且需重新设置串口波特率,才能串口通信。
4.6 串口直接控制命令
-
发送e0 f3 0_tCHK,修改串口控制模式下驱动板的使能状态。
在串口控制模式下,驱动板的使能状态不再受En引脚的电平控制,而是利用该命令进行控制。发送e0 f3 00 tCHK,关闭驱动板;
发送e0 f3 01 tCHK,使能驱动板;
修改成功,返回 0xe0 0x01 rCHK;
修改失败,返回 0xe0 0x00 rCHK;
-
发送e0 f6 __tCHK,让电机以一定的速度进行正/反转。
__字节的最高位表示方向,低7位表示128个速度档位,
转速计算公式为:
Vrpm = (speed × 30000)/(Mstep × 200) 1.8度电机
Vrpm = (speed × 30000)/(Mstep × 400) 0.9度电机例如 1.8度电机,150细分,speed=1
Vrpm = (1 × 30000)/(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;
-
发送e0 f7 tCHK,让电机停止正/反转。
成功,返回 0xe0 0x01 rCHK;
失败,返回 0xe0 0x00 rCHK;
-
发送e0 ff c_ tCHK保存/清除保存上面(2)中所设置的正/反转速度。
发送e0 ff c8 tCHK,保存上面(2)中所设置的正/反转速度;
发送e0 ff ca tCHK,清除已保存的正/反转速度;
注1:可以让电机每次上电都直接按照保存的速度和方向一直转动。
也就是说,如果你想要电机一上电就以一定的速度正/反转,你可以先按照(2)中的命令设置好想要的速度和方向,接着利用该命令进行保存,然后重新上电后电机就会按照保存的速度和方向转动了。注2:保存成功后,会关闭驱动板,需重新使能驱动板。
成功,返回 0xe0 0x01 rCHK;
失败,返回 0xe0 0x00 rCHK;
-
发送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 配置串口
-
在SERVO42C菜单设置中,开启串口直接控制功能。
-
配置通讯波特率为38400,如下图所示。
-
打开串口助手,
选择串口端口;
设置波特率为38400;
接收设置,选择 Hex,勾选自动换行;
发送设置,选择 Hex,勾选自动发送附加为,选择校准算法为 CHECKSUM-8。
如下图所示:
5.2 读取闭环电机实时位置
- 发送 e0 36(附加校准位后 e0 36 16),读取闭环电机的实时位置。
返回数据为 E0 FF FF FF F8 D5
5.3 控制电机正/反转
-
发送 e0 f6 10(附加校准位后 e0 f6 10 e6),电机以 16 档速度正转;
-
发送 e0 f6 90(附加校准位后 e0 f6 90 66),电机以 16 档速度反转;
至此,Makerbase SERVO42C 使用说明 V1.1 (三)串口通讯完成。
创客基地 Makerbase SERVO42C 使用说明 V1.1(三)串口通讯 到此结束。