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 SERVO28C 闭环步进电机 使用说明 -> 正文阅读

[嵌入式]MKS SERVO28C 闭环步进电机 使用说明

第1部分 按键和状态说明

1.1 按键用法

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

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

1.2 状态说明

状态LED指示灯串口输出指示
开机点亮1smks 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 硬件连接

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

硬件清单如下图所示。
在这里插入图片描述
MKS SERVO28C 硬件接口介绍:

2.2硬件连接

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

序号MKS SERVO28C V1.0串口助手模块/单片机
1MKS SERVO42C V1.0(包含电机)1
2TXRX
3RXTX
4GNDGND
53V3不接

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 使用说明到此结束。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:44:29  更:2022-09-21 00:48: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年5日历 -2024/5/19 13:10:21-

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