第1部分 按键和状态说明

1.1 按键用法

操作方式 功能 LED指示灯 串口输出指示
连续短按2次 恢复出厂参数 LED循环闪烁 reboot
长按3s以上,直到指示灯亮 校准电机 校准中 LED灯亮 Cal…
长按3s以上,直到指示灯亮 校准电机 校准完成 LED灯灭 Cal Done

注1:串口出厂参数为:波特率38400,数据位8,无校验位,停止位1
注2:恢复出厂参数后,需断电重启,重新校准电机

1.2 状态说明

状态 LED指示灯 串口输出指示
开机 点亮1s mks Servo28c running…motoType=xx (xx=1.8 或 0.9)
电机未校准 每间隔2秒,快闪2次 Not Cal
电机线序错误 每间隔2秒,快闪3次 Phase Line Error
电机类型错误 电机类型错误 Motor Type Error
磁铁安装错误 常亮 Magnet Error
编码器错误 常亮 Encoder Error
电源电压低 常亮 Waiting Power
偏置电压错误 常亮 Offset Error
校准数据错误1 常亮 dx=0 Error
校准数据错误2 常亮 Reverse Error
堵转保护 循环闪烁(亮1秒,灭1秒) Protect Error

读取状态的串口输出指示需要设置为ASCII才能显示对应状态,发送串口指令需要设置为HEX。

第2部分 硬件介绍

2.1 硬件连接

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

硬件清单如下图所示。

MKS SERVO28C 硬件接口介绍:

2.2硬件连接

1.将MKS SERVO28C V1.0的串口接口RX、TX、GND,接到串口助手模块/单片机对应接口,连接关系如下表格所示:

序号 MKS SERVO28C V1.0 串口助手模块/单片机
1 MKS SERVO42C V1.0(包含电机) 1
2 TX RX
3 RX TX
4 GND GND
5 3V3 不接

2.将MKS SERVO28C V1.0的V+和Gnd接入12V-24V供电。
3.串口通讯接线图如下图所示:

第3部分 软件准备

1.使用的串口通讯助手可以通过Q群:732557609下载,如下图所示。


2.串口助手如下图所示。

第4部分 串口通讯格式

1.读取状态的串口发送和接收设置需要设置为ASCII才能显示。
2.串口指令的发送和接收设置都为Hex,命令字节不要加0x的前缀。
3.驱动板的串口通讯波特率需要通过串口指令进行设置。
发送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。

4.驱动板的串口通讯地址需要通过串口指令进行设置,如下图所示。
发送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。

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

6.返回的数据格式是高8位在前。
7.返回e0 01表示命令正确,返回e0 00表示错误命令。

  1. 校验
    最后1字节为发送校验值tCHK 或 接收校验值rCHK
    校验值为所有字节和的低字节
    例如
    发送命令“e0 30 tCHK”
    tCHK = (0xe0 + 0x30) & 0xFF = 0x110 & 0xFF = 0x10
    接收命令“e0 01 rCHK”
    rCHK = (0xe0 + 0x01) & 0xFF = 0xe1 & 0xFF = 0xe1
    串口助手的校验位设置
    打开串口助手,
    选择串口端口;
    设置波特率为38400;
    接收设置,选择Hex,勾选自动换行;
    发送设置,选择Hex,勾选自动发送附加为,选择校准算法为CHECKSUM-8。
    如下图所示:

第5部分 串口命令说明

5.1 读取参数命令

1.发送e0 30 tCHK,读取编码器值。
返回e0, int16_t类型进位值,uint16_t类型当前编码器值和校验值rCHK。记录上电后(使能或不使能),编码器记录的电机转动范围。
低16位记录当前编码器值,范围为00x10000,表示0360°。
高16位记录编码器进位值,范围 -32767 ~ +32767。
进位规则:当编码器值大于0x10000,进位加1
当编码器值小于0,进位减1
例如:
编码器值为0xFFF0,当编码器值继续增加,越过0x10000时,进位值加1.
编码器值为0x00F0,当编码器值继续减小,越过0x0000时,进位值减1.
2.发送e0 31 tCHK,读取固件版本号。
返回e0,uint8_t类型的固件版本号和校验值rCHK。
0x11 对应固件版本 V1.1
0x12 对应固件版本 V1.2

3.发送e0 33 tCHK,读取输入累计脉冲数。
返回e0,int32_t类型的输入累计脉冲数和校验值rCHK,也就是你的控制器发送过来的累计脉冲数。
例如,16细分转动10mm,检测到返回E0 00 00 03 20 03,
收到脉冲800。

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

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

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

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

5.2 设置系统参数命令

1.校准编码器
发送e0 80 00 tCHK校准编码器。
校准编码器前,请确保电机没带负载!!!建议校准好以后再装进机器。
比如:
发送e0 80 00 60,校准编码器。
校准成功,返回 e0 01 e1;
校准失败,返回 e0 02 e2。
2.设置电机类型
发送e0 81 __ tCHK,修改电机类型。
00对应0.9度电机
01对应1.8度电机
比如:
发送e0 81 01 62,修改电机类型为 1.8°。
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。
设置电机类型后,需要重新校准编码器,校准前要断开电机负载。

3.设置工作模式
发送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。
注:发送串口指令前需要设置为串口模式e0 82 02

4.设置电流档位
发送e0 83 __ tCHK,设置电流档位。
00 对应 0ma
01 对应 200ma
02 对应 400ma
03 对应 600ma
04 对应 800ma
05 对应 1000ma
06 对应 1200ma
07 对应 1400ma
08 对应 1600ma
09 对应 1800ma
0A 对应 2000ma
比如:
发送e0 83 06 69,设置电流1200ma。
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。
?设置成功,但28C没有开环模式,如何验证?
5.设置任意细分
发送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 引脚有效电平
发送e0 85 __ tCHK,设置En 引脚有效电平。
00 对应低电平使能(L)
01 对应高电平使能(H)
02 对应一直使能(Hold)

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

7.设置电机旋转正方向
发送e0 86 __ tCHK,设置电机旋转正方向。
00 对应顺时针旋转
01 对应逆时针旋转
比如:
发送e0 86 00 66,设置为顺时针旋转。
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。

8.设置堵转保护功能
发送e0 88 __ tCHK,设置堵转保护功能。
00关闭堵转保护功能
01使能堵转保护功能
比如:
发送e0 88 00 68,设置关闭堵转保护功能。
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。

9.设置细分插补功能
发送e0 89 __ tCHK,设置堵转保护功能。
00关闭内部的 256 细分插补功能
01使能内部的 256 细分插补功能
比如:
发送e0 89 00 69,设置关闭细分插补功能。
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。

10.设置串口波特率
发送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。

11.设置串口地址
发送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。

5.3 自动回零相关命令

1.设置自动回零的模式
发送e0 90 __ tCHK,设置自动回零的模式。
00 关闭自动回零Disable
01方向模式DirMode
02就近模式NearMode
比如:
发送e0 90 01 71,设置为DirMode模式
设置成功,返回 e0 01 e0;
设置失败,返回 e0 00 e1;

2.设置自动回零的零点
发送e0 91 00 tCHK,设置自动回零的零点。
比如:
发送e0 91 00 71,设置零点
设置成功,返回 e0 01 e0;
设置失败,返回 e0 00 e1。
注:需要先设置“0_Mode” 的模式。

3.设置自动回零的速度
发送e0 92 __ tCHK,设置自动回零的速度(范围0~4,数值越小速度越快)。
比如:
发送e0 92 02 74,设置自动回零速度为2。
设置成功,返回 e0 01 e0;
设置失败,返回 e0 00 e1。

4.设置自动回零的方向
发送e0 93 __ tCHK,设置自动回零的模式。
00 对应顺时针方向CW
01 对应逆时针方向CCW
比如:
发送e0 93 00 73,设置自动回零方向为顺时针方向。
设置成功,返回 e0 01 e0;
设置失败,返回 e0 00 e1。
注:对于就近模式回零模式NearMode,0_Dir的设置应该和电机实际运行方向一致,否则会回零失败。

5.返回零点
发送e0 94 00 tCHK,返回零点。
比如:
发送e0 94 00 74,返回零点
返回成功,返回 e0 01 e1;
返回失败,返回 e0 00 e0。
注意:需要先设置 “0_Mode” 和 “Set 0”。

5.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参数
可以任意设置数值。
发送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。

5.5 恢复默认参数命令

1.发送e0 3f tCHK,恢复默认参数。
比如:
发送e0 3f 1f,恢复默认参数;
恢复成功,返回 e0 01 e1;
恢复失败,返回 e0 00 e0。
注意:恢复默认参数后,需要重新上电,重新设置串口波特率,才能串口通信。

5.6 串口直接控制命令

1.发送e0 f3 0_ tCHK修改串口控制模式下驱动板的使能状态。
在串口控制模式下,驱动板的使能状态不再受En引脚的电平控制,而是利用该命令进行控制。
发送e0 f3 00 tCHK,关闭驱动板;
发送e0 f3 01 tCHK,使能驱动板;
修改成功,返回 0xe0 0x01 rCHK;
修改失败,返回 0xe0 0x00 rCHK;
注:使用该指令前需先设置为串口模式。

2.发送e0 f6 __ tCHK,让电机以一定的速度进行正/反转。
__字节的最高位表示方向,低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;
注3:
1、保存会让电机停止转动,需要重新上电电机才会转动;
2、在重新上电后才能使用清除指令;
3、清除已保存的正反转速度会使电机使能。

5.发送e0 fd __ __ __ __ __ tCHK,串口直接位置控制。
第一个__字节,最高位表示方向,低7位表示速度。
第二个__字节、第三个__字节、第四个__字节、第五个__字节组成uint32_t类型的数据,表示你要发送的脉冲数。

转速计算公式同上面(2)。
比如:
在16细分下,发送e0 fd 01 00 00 0c 80 6a,表示电机以1档速度正转360°。
(01表示1档速度正转,00 00 0c 80表示3200(0x0c80)个脉冲 = 360°)
又比如:
在16细分下,发送e0 fd 88 00 00 00 10 75,表示电机以8档速度反转1.8°
(88表示8档速度反转,00 00 00 10表示16(0x10)个脉冲 = 1.8°)
在16细分下,发送e0 fd 88 01 e8 48 00 96,表示电机以8档速度反转3600000°。
(88表示8档速度反转,01 e8 48 00表示32000000(0x1e84800)个脉冲 = 3600000°)
成功,返回 0xe0 0x01 rCHK;
失败,返回 0xe0 0x00 rCHK;

第6部分 串口通讯步骤

6.1 配置串口

1.打开串口助手,
选择串口端口;
设置波特率为38400;
接收设置,选择Hex,勾选自动换行;
发送设置,选择Hex,勾选自动发送附加为,选择校准算法为CHECKSUM-8。
如下图所示:

2.在SERVO28C中配置为串口模式,发送串口指令e0 82 02
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。

3.配置通讯波特率,发送e0 8a 04 6e,设置波特率为38400(28C默认通讯波特率为38400)。
设置成功,返回 e0 01 e1;
设置失败,返回 e0 00 e0。

6.2 读取闭环电机实时位置

发送e0 36(附加校准位后e0 36 16),读取闭环电机的实时位置。
返回数据为E0 FF FF FF F8 D5

6.3 控制电机正/反转

发送e0 f6 10(附加校准位后e0 f6 10 e6),电机以16档速度正转;

发送e0 f6 90(附加校准位后e0 f6 90 66),电机以16档速度反转;

至此,Makerbase SERVO28C 使用说明 完成。

创客基地 Makerbase SERVO28C 使用说明到此结束。

MKS SERVO28C 闭环步进电机 使用说明相关推荐

  1. MKS SERVO42C 闭环步进电机 使用说明(一)安装闭环PCBA

    第1部分 产品介绍 1.1 硬件接口说明 1.2 功能特点 板载工业级高精度16384线磁编码器. FOC矢量控制,力矩.速度.位置三环控制,最高转速1000+RPM. 支持开环.矢量闭环.串口控制三 ...

  2. MKS SERVO42C 闭环步进电机 使用说明(二)菜单介绍及控制

    第1部分 硬件介绍 1.1 硬件清单 序号 品名 数量 1 MKS SERVO42C V1.0(包含电机) 1 2 PCBA连接线 1 3 主板连接线 1 4 MKS Gen_L V1.x主板(带屏幕 ...

  3. MKS SERVO42C 闭环步进电机 使用说明 V1.1(二)菜单介绍及控制

    注意: 该说明书V1.1对应MKS SERVO42C V1.1固件,如果不确定,可以上电时观察屏幕显示,如下图所示: 第1部分 硬件介绍 1.1 硬件清单 序号 品名 数量 1 MKS SERVO42 ...

  4. MKS SERVO42C 闭环步进电机 使用说明(三)串口通讯

    第1部分 硬件介绍 1.1 硬件清单 序号 品名 数量 1 MKS SERVO42C V1.0(包含电机) 1 2 PCBA连接线 1 3 串口助手模块/单片机 1 4 DC 12V-24V电源 1 ...

  5. MKS SERVO42C 闭环步进电机 使用说明 V1.1 (三) 串口通讯

    注意: 该说明书V1.1对应MKS SERVO42C V1.1固件,如果不确定,可以上电时观察屏幕显示,如下图所示: 第1部分 硬件介绍 1.1 硬件清单 序号 品名 数量 1 MKS SERVO42 ...

  6. MKS SERVO57C 闭环步进电机V1.0 使用说明

    1.1 产品介绍 1.1 产品介绍 MKS SERVO57C 闭环步进电机是创客基地为满足市场需求而自主研发的一款产品.具备脉冲接口和串行接口,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈, ...

  7. MKS SERVO4257D 闭环步进电机_系列1 产品简述

    第1部分 产品概述 1.1 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品.具备脉冲接口,RS485接口和CAN接口,内置高 ...

  8. MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例

    第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品.具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU ...

  9. 3D打印机如何使用marlin固件控制普通57闭环步进电机-“教程”

    本次教程中主板型号为MKS GENL V2.1,创客之家的 探究原因是在b站看见大佬飞翔的AMX用雷赛57闭环步进做3D打印,但是可惜的是大佬刷的klipper固件,我用的marlin固件 在大佬评论 ...

最新文章

  1. 2.9 Logistic 回归的梯度下降法-深度学习-Stanford吴恩达教授
  2. Leetcode589.N-ary Tree Preorder TraversalN叉树的前序遍历
  3. 【新书速递】你想知道的通信“灵魂三问”都在这里……(福利再现)
  4. python数据分析之matplotlib绘图
  5. python调用so库输出传入指针_python中使用ctypes调用so传参设置遇到的问题及解决方法...
  6. matlab2014 下的 libsvm 安装
  7. 汽车经销商销售发票扫描识别方案
  8. 深入浅出设计模式 ------ Abstract Factory(抽象工厂)
  9. Arduino使用NRF24L01模块进行无线通信
  10. vue 点击文字input_Vue实现点击按钮复制文本内容
  11. 2825 codevs危险的组合(递推)
  12. win10投影到电脑无法成功,一直显示即将投影
  13. PS标尺和标记线用法的简单记录
  14. python3通过request多进程获取驾校一点通试题库
  15. kafka Process ‘command ‘/jdk1.8.0_77/jre/bin/java.exe finished with non-zero exit value 1
  16. (青龙面板)xdd机器人对接诺兰进行短信提交
  17. 元宇宙将如何重塑摄影艺术?
  18. 【2】python算法练习--动态规划专题(1)
  19. 淘宝TOP开发:(二)
  20. 嵌入式linux dlna,基于嵌入式Linux的家用蓝光播放机上DLNA功能的实现

热门文章

  1. 鸟哥Linux-第六章、Linux 的档案权限与目录配置
  2. 阿里云 OSS 对象存储 OSS 图片加文字水印
  3. SAP 设置登录快捷方式 Shortcut for SAP Login
  4. QSqlDatabase QMYSQL driver not loaded
  5. Hanselminutes播客165-与Michael Feathers一起有效使用遗留代码
  6. AutoCAD C# 多段线自相交检测
  7. 思维导图 进阶(03)链接 高效记忆,理解与记忆同在
  8. 虎书Fundamentals of Computer Graphics 5th Edition个人学习思维导图分享-第八章 Viewing
  9. Bert+FGSM/PGD实现中文文本分类(Loss=0.5L1+0.5L2)
  10. [原创] wildfly 部署应用时出错原因调查