当前位置:首页 » 《随便一记》 » 正文

MKS SERVO42C 闭环步进电机 使用说明(三)串口通讯_gjy_skyblue的博客

5 人参与  2022年02月23日 15:24  分类 : 《随便一记》  评论

点击全文阅读


第1部分 硬件介绍

1.1 硬件清单

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

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

1.2 硬件连接

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

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

第2部分 软件准备

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

在这里插入图片描述

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

第3部分 串口通讯格式

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

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

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

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

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

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

第4部分 串口命令说明

4.1 读取参数命令

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

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

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

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

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

    使能 :返回e0 01;

    没使能 :返回e0 02;

    错误指令:返回e0 00。

  6. 发送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 串口直接控制命令

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

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

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

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

    比如:

    发送e0 f6 00,电机以0档速度正转;

    发送e0 f6 80,电机以0档速度反转;

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

    发送e0 f6 da,电机以90(0xda = 0x5a | 0x80)档速度反转;

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

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

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

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

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

  5. 发送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 配置串口

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

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

  3. 打开串口助手,
    选择串口端口;
    设置波特率为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/


点击全文阅读


本文链接:http://zhangshiyu.com/post/35258.html

串口  发送  电机  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1