第1部分 硬件介绍
1.1 硬件清单
序号 | 品名 | 数量 |
---|---|---|
1 | MKS SERVO42C V1.0(包含电机) | 1 |
2 | PCBA连接线 | 1 |
3 | 串口助手模块/单片机 | 1 |
4 | DC 12V-24V电源 | 1 |
硬件清单如下图所示。
1.2 硬件连接
- 将MKS SERVO42C V1.0的串口接口RX、TX、GND,接到串口助手模块/单片机对应接口,连接关系如下表格所示:
序号 | MKS SERVO42C V1.0 | 串口助手模块/单片机 |
---|---|---|
1 | TX | RX |
2 | RX | TX |
3 | GND | GND |
4 | 3V3 | / |
-
将MKS SERVO42C V1.0的V+和Gnd接入12V-24V供电。
-
串口通讯接线图如下图所示:
第2部分 软件准备
- 使用的串口通讯助手可以通过Q群:732557609下载,如下图所示。
- 串口助手如下图所示。
第3部分 串口通讯格式
-
串口助手的发送和接收设置都为Hex,命令字节不要加0x的前缀。
-
驱动板的串口通讯波特率38400在UartBaud 选项上进行设置,如下图所示。
-
驱动板的串口通讯地址e0在UartAddr选项上进行设置,如下图所示。
-
每一条命令不要少发、漏发某个参数。
-
返回的数据格式是高8位在前。
-
返回e0 01表示命令正确,返回e0 00表示错误命令。
第4部分 串口命令说明
4.1 读取参数命令
-
发送e0 30,读取编码器值(经过线性化校准和插值后的值)。
返回e0和uint16_t类型的编码器值,返回的编码器值范围为0-65535,表示0-360°,即一圈的数据范围。 -
发送e0 33,读取输入累计脉冲数。
返回e0和int32_t类型的输入累计脉冲数,也就是你的控制器发送过来的累计脉冲数。 -
发送e0 36,读取闭环电机的实时位置。
返回e0和int32_t类型的闭环电机实时位置,也就是电机自上电/使能起所转过的角度,单位:0~65535表示一圈,比如电机转一圈是65536,转了十圈就是655360,以此类推。 -
发送e0 39,读取位置角度误差。
返回e0和int16_t类型的位置角度误差,也就是你想要控制的位置角度减去电机的实时角度位置得到的差值,单位:065535表示0360°,比如误差为1°时,数值为65536/360°= 182.444,以此类推。 -
发送e0 3a,读取闭环驱动板的使能状态。
返回e0和uint8_t类型的闭环驱动板的使能状态,也就是En引脚的使能状态。用串口控制时,可以通过该命令获取驱动板的使能状态。使能 :返回e0 01;
没使能 :返回e0 02;
错误指令:返回e0 00。
-
发送e0 3e,读取堵转标志位。
返回e0和uint8_t的堵转标志,当电机发生堵转,会置位堵转标志,通过该命令可以获取到电机是否发生了堵转。如果使能了堵转保护选项,发生堵转后,驱动板会自动关闭驱动器。
4.2 设置任意细分命令
发送e0 84 __,设置1~256任意细分,可以在MStep选项看到设置的细分
比如,
发送e0 84 07,修改为7细分;
发送e0 84 4e,修改为78细分;
发送e0 84 00,修改为256细分;
以此类推…
4.3 串口直接控制命令
-
发送e0 f3 0_,修改串口控制模式下驱动板的使能状态。
在串口控制模式下,驱动板的使能状态不再受En引脚的电平控制,而是利用该命令进行控制。发送e0 f3 00,关闭驱动板;
发送e0 f3 01,使能驱动板;
-
发送e0 f6 __,让电机以一定的速度进行正/反转。
__字节的最高位表示方向,低7位表示128个速度档位,
比如:
发送e0 f6 00,电机以0档速度正转;
发送e0 f6 80,电机以0档速度反转;
发送e0 f6 5a,电机以90(0x5a)档速度正转;
发送e0 f6 da,电机以90(0xda = 0x5a | 0x80)档速度反转;
-
发送e0 f7,让电机停止正/反转。
-
发送e0 ff c_,保存/清除保存上面(2)中所设置的正/反转速度。
发送e0 ff c8,保存上面(2)中所设置的正/反转速度;
发送e0 ff ca,清除已保存的正/反转速度;
注:可以让电机每次上电都直接按照保存的速度和方向一直转动。
也就是说,如果你想要电机一上电就以一定的速度正/反转,你可以先按照(2)中的命令设置好想要的速度和方向,接着利用该命令进行保存,然后重新上电后电机就会按照保存的速度和方向转动了。 -
发送e0 fd __ __ __,串口直接位置控制。
第一个__字节,最高位表示方向,低7位表示速度。
第二个__字节和第三个__字节组成uint16_t类型的数据,表示你要发送的脉冲数。
比如:
在16细分下,发送e0 fd 00 0c 80,表示电机以0档速度正转360°。
(00表示0档速度正转,0c 80表示3200(0x0c80)个脉冲 = 360°)又比如:
在16细分下,发送e0 fd 88 00 10,表示电机以8档速度反转1.8°
(88表示8档速度反转,00 10表示16(0x0010)个脉冲 = 1.8°)
第5部分 串口通讯步骤
5.1 配置串口
-
在SERVO42C菜单设置中,开启串口直接控制功能。
-
配置通讯波特率为38400,如下图所示。
-
打开串口助手,
选择串口端口;
设置波特率为38400;
接收设置,选择Hex,勾选自动换行;
发送设置,选择Hex。
如下图所示:
5.2 读取闭环电机实时位置
发送e0 36,读取闭环电机的实时位置。
返回数据为E0 FF FF FF FC
5.3 控制电机正/反转
发送e0 f6 00,电机以0档速度正转;
发送e0 f6 80,电机以0档速度反转;
至此,Makerbase SERVO42C 使用说明(三)串口通讯 完成。
创客基地 Makerbase SERVO42C 使用说明(三)串口通讯 到此结束。
欢迎加入 创客基地 电机控制Q群 讨论电机控制相关问题:732557609
欢迎光临 创客基地 B站 了解技术资料:https://space.bilibili.com/393688975
欢迎光临 创客基地 淘宝店 采购产品:https://makerbase.taobao.com/