Emm42_V5.0是张大头闭环伺服全新推出的基于Emm42_V4.2的升级版本,它对闭环算法进行了升级改造,并融合了ZDT_X42_V1.2的软硬件框架,使它具有更高的转速和更快的打印速度,并拥有更多强大的功能,此外它还支持内置串口/RS232/RS485/CAN总线模块、支持限制电机堵转电流等,具有更高的安全性和可靠性,满足更广大用户的需求,适合3D打印、写字机、雕刻机、PLC控制、机械臂、小车比赛等用户使用,欢迎大家使用。
主板型号 |
Emm42_V5.0 |
主控芯片 |
高性能32位ARM处理器 |
驱动电路 |
8个高品质MOS管组成双H桥驱动 |
传感器 |
工业级高精度16384线磁编码器、精密电流传感器 |
供电电压 |
7-32V |
工作电流 |
0-3000mA任意电流 |
信号输入 |
3.3-28V支持共阳/共阴输入、支持PLC的NPN/PNP的24V信号输入 |
闭环反馈频率 |
力矩环20KHz+、速度环20KHz+ 、位置环20KHz+ |
最大脉冲频率 |
160KHz以上 |
最高转速 |
0.1RPM-3000RPM+,每个电机参数不一样最高转速可能不同 |
控制精度 |
小于0.08° |
细分支持 |
1-256任意细分,支持细分插补功能 |
控制方式 |
支持脉冲控制,支持串口/RS232/RS485/CAN总线多机通讯同步控制 |
通讯控制 |
支持速度模式、位置模式控制,支持曲线加减速,支持立即停止 |
保护措施 |
具有堵转保护、欠压警告等功能 |
静音/震动 |
低速超静音、超低震动,高速运行平稳,不抖动 |
其他功能 |
编码器自校准、电机线序错误识别、自动熄屏、恢复出厂设置等 |
制动/换向 |
支持高速3000RPM+立即停止,立即切换方向 |
回零模式 |
单圈就近/方向回零、多圈无/有限位开关回零(3D打印不支持) |
输出类型支持 |
支持通讯控制到位输出/到位返回命令、支持脉冲控制报警输出 |
品名 |
Emm42_V5.0 |
上一代Emm42_V4.2 |
外观 |
||
发布时间 |
2023年8月 |
2022年5月 |
处理器 |
Cortex-M4F内核,主频120MHz |
Cortex-M0内核,主频72MHz |
闭环反馈频率 |
力矩、速度、位置环都是20KHz+ |
力矩20KHz+、速度、位置10KHz+ |
最高转速 |
0.1RPM-3000RPM+ |
2200RPM+ |
最大打印速度 |
250mm/s以上 |
180-220mm/s |
控制支持 |
CAN/485/232/串口/脉冲 |
485/232/串口/脉冲 |
电机参数辨识 |
自动测量电机相电阻、相电感 |
无 |
堵转检测和保护 |
可设置堵转检测电流、转速、时间 |
可设置堵转检测误差角度、阈值 |
堵转电流限制 |
可限制0-3000Ma堵转电流 |
无 |
回零模式支持 |
单圈回零、多圈无/有限位回零 |
仅支持单圈回零 |
回零触发方式 |
上电自动触发、发送命令触发 |
仅支持上电自动触发 |
通讯控制 |
速度模式、位置模式、实时转速 |
速度模式、位置模式 |
通讯位置模式 |
支持绝对位置和相对位置模式 |
仅支持相对位置模式 |
曲线加减速 |
0-255加速度档位,加减速更平滑 |
0-255加速度档位 |
速度档位 |
0.0 - 3000.0RPM(转/分钟) |
1279个非线性速度档位 |
PID参数 |
可修改PID参数 |
不可修改 |
序号 |
品名 |
数量 |
1 |
42步进电机 |
1 |
2 |
ZDT_X42_V1.2闭环PCBA |
1 |
3 |
M3*7mm螺丝 |
4 |
4 |
5*3mm径向磁铁 |
1 |
5 |
尼龙垫片 |
4 |
6 |
3M胶水/超能胶水 |
1 |
8 |
螺丝刀 |
1 |
9 |
1米通讯线 |
1 |
硬件清单如下图所示:
注意:
闭环驱动模块的V+和Gnd之间接7-32V电源进行供电,供电接线如下图所示:
接好V+和Gnd供电线后上电,ZDT_X42_V1.2闭环驱动板第一次上电会进行自检,可能会出现以下几种情况的提示,请按照相应的步骤进行操作:
(1)提示1秒“Not Cal”,然后进入校准菜单(此时只有6个菜单项,含Exit项)
(2)提示“Phase A+ A- Error!”或“Phase B+ B- Error!”或“Phase AA BB Error!”
(3)提示“Waiting V+ Power”
(4)提示“Magnet Loss! Enter..”
(5)提示“Ref Voltage Error!”或者“Bus Current Error!”
请参考下面4.1章节的“参数显示说明”熟悉使用ZDT_X42_V1.2闭环电机的按键操作和参数显示;
1. 没进行过编码器校准的闭环电机只有6个菜单项,分别是“Cal”、“MotType”、“P_Pul”、“P_Serial”、“Restore”、“Exit”;
2. 没进行过编码器校准的需要先进行编码器校准,操作步骤如下:
(1)上电后选中Cal菜单,按Enter键确认选择,电机开始校准编码器;
(2)电机在“哔”的一声后会慢慢的正转一圈,然后再慢慢的反转一圈;
3. 注意事项:
(1)校准前,请先按照上面2.2章节的“安装步骤”正确安装好磁铁和板子;
(2)请尽量确保电机是空载校准,也可以带轻载进行校准;
(3)电机在校准编码器的过程中,会测量和纠正相关参数,如下:
(4)板子如果从电机上拆卸下来后,磁铁与编码器的相对位置会发生改变,请恢复出厂设置(Restore菜单),再重新上电空载校准编码器;
菜单功能:校准编码器
菜单选项:无
菜单作用:闭环模式下对编码器进行线性化插值和电角度对齐,可以提高编码器的线性精度,校准前请确保电机类型(MotType菜单)选择正确,并且确保电机空载校准;
菜单功能:步进电机类型选择
菜单选项:0.9°、1.8°
菜单作用:选择你的42步进电机类型,是0.9°步进电机,还是1.8°步进电机;
菜单功能:脉冲输入端口控制模式选择
菜单选项:PUL_OFF、PUL_OPEN、PUL_FOC、ESI_RCO
菜单作用:脉冲端口控制模式选择:
菜单功能:通讯端口复用选择
菜单选项:RxTx_OFF、ESI_ALO、UART_FUN、CAN1_MAP
菜单作用:选择通讯端口复用为哪种通讯方式:
菜单功能:设置En端口的有效电平
菜单选项:L、H、Hold
菜单作用:选择En端口的有效电平:
注意:En端口在不接线情况下,En端口默认是Hold模式,即一直使能状态;
菜单功能:设置脉冲控制下,电机旋转的正方向
菜单选项:CW、CCW
菜单作用:设置Dir端口的有效方向,即设置脉冲输入控制下,电机旋转的正方向;
菜单功能:设置细分步数
菜单选项:1、2、4、8、16、32、64、128、256
菜单作用:设置闭环驱动脉冲输入的细分步数,此值要与你的主板设置的细分步数要保持一样,默认16细分。如果需要用到其他细分,可以通过串口发送命令进行修改;
菜单功能:设置脉冲输入控制下,内部的细分插补功能
菜单选项:Disable、Enable
菜单作用:使能(Enable)该选项后,驱动器会将你设置的当前细分值,如16细分,内部自动插补到最高细分去运行,这将有效的减少电机低速运动时的震动和噪音;
菜单功能:设置自动熄屏功能
菜单选项:Disable、Enable
菜单作用:使能(Enable)该选项后,在7秒内无任何按键操作时,屏幕会自动关闭显示,需要点亮时,可以按任意按键进行重新点亮。
菜单功能:设置开环模式的工作电流(电机相电流)
菜单选项:200、400、...、3000(其他电流可用串口进行修改,范围0-3000Ma)
菜单作用:设置开环模式的实际运行时的工作电流,默认是1000Ma。
菜单功能:设置FOC矢量闭环控制模式下电机堵转时的最大电流(电机相电流)
菜单选项:200、400、...、3000(其他电流可用串口进行修改,范围0-3000Ma)
菜单作用:设置FOC矢量闭环控制模式下电机堵转时的最大电流,默认是3000Ma。
菜单功能:设置FOC矢量闭环模式下的最大输出电压(可限制最大输出电流和转速)
菜单选项:200、400、...、5000(单位:mV)
菜单作用:设置FOC矢量闭环控制模式下的最大输出电压,默认是(5000 * 2)mV,该选项通过限制驱动的最大输出电压,可以近似的限制电机的最高转速。
菜单功能:设置串口/RS232/RS485通讯的波特率
菜单选项:9600、19200、25000、38400、57600、115200、256000、512000、921600
菜单作用:设置串口/RS232/RS485通讯的波特率,默认是115200;
菜单功能:设置CAN通讯的速率
菜单选项:10000、20000、50000、83333、100000、125000、250000、500000、800000、1000000
菜单作用:设置CAN通讯的速率,默认是500000,即500KHz;
菜单功能:设置串口/RS232/RS485/CAN多机通讯时的本机的地址
菜单选项:1、2、...、16(其他地址可用串口进行修改,范围1-255)
菜单作用:设置串口/RS232/RS485/CAN多机通讯时本机的地址,0为广播地址;
菜单功能:设置串口/RS232/RS485/CAN多机通讯时的校验方式
菜单选项:0x6B、XOR、CRC-8、Modbus
菜单作用:默认为0x6B,即通讯时每条命令最后一个字节都固定为0x6B,其他校验的计算方式请查看“通讯控制”章节;Modbus请查看“Modbus-RTU指令说明”文档;
菜单功能:设置串口TTL/RS232/RS485/CAN通讯控制时控制动作命令列表是否回复
菜单选项:None、Receive、Reached、Both、Other
菜单作用:设置串口/RS232/RS485/CAN总线通讯控制时,主机发送控制动作命令列表中的命令时,从机收到命令后,是否返回确认收到命令,以及是否返回到位命令;
菜单功能:修改通讯控制的输入速度是否缩小10倍输入(精确到0.1RPM输入)
菜单选项:Disable、Enable
菜单作用:默认通讯控制输入转速最低为1RPM,将S_Vel_IS设置为Enable后,则输入的转速会缩小10倍,比如发送1RPM的转速,但电机实际是以0.1RPM的转速运行;
菜单功能:设置堵转保护功能
菜单选项:Disable、Enable
菜单作用:电机发生堵转时,不管该选项是否使能,LED都会点亮提示;如果使能(Enable)该选项后,堵转时电机将自动关闭驱动器,可以保护电机和驱动器不受堵转大电流的损坏;如果P_Serial设置为ESI_ALM时,则在触发了堵转保护后,T/B/L端口将输出3.3V高电平,将R/A/H引脚接Gnd(0V)可以复位堵转保护,不需要重新上电;
(堵转保护触发条件:电机实际转速 < 设置的堵转检测转速阈值 + 电机实际相电流 >
设置的堵转检测相电流阈值 + 持续时间 > 设置的堵转检测时间阈值)
菜单功能:设置堵转检测的转速阈值
菜单选项:8、16、...、112(单位:RPM,即转/每分钟)
(如果需要设置为其他值,则需要通过通讯的方式发送命令进行修改)
菜单作用:堵转检测判定条件之一:电机实际转速 < 堵转检测转速阈值。
菜单功能:设置堵转检测的相电流阈值
菜单选项:1800、3000、...、3000(单位:Ma)
菜单作用:堵转检测判定条件之二:电机实际相电流 > 堵转检测相电流阈值 。
菜单功能:设置堵转检测的时间阈值
菜单选项:1000、2000、...、12000(单位:Ms)
(如果需要设置为其他值,则需要通过通讯的方式发送命令进行修改)
菜单作用:堵转检测判定条件之三:持续时间 > 堵转检测时间阈值。
菜单功能:设置回零模式
菜单选项:Nearest、Dir、Senless、EndStop
菜单作用:设置上电自动触发回零的回零模式,分别是单圈就近回零、单圈方向回零、多圈无限位碰撞回零、多圈有限位开关回零。原点回零操作说明请参考第七章节;
菜单功能:设置回零方向
菜单选项:CW、CCW
菜单作用:设置单圈方向回零、多圈无限位碰撞回零、多圈有限位开关回零的方向。
菜单功能:设置回零转速
菜单选项:30、60、...、300(单位:RPM)
菜单作用:设置回零的速度。
菜单功能:设置回零超时时间
菜单选项:2000、4000、...、20000(单位:毫秒)
菜单作用:回零超过这个时间就自动中断并退出回零,并置位回零失败标志位。
菜单功能:设置单圈就近/方向回零的零点位置
菜单选项:Set O、Clear O、Exit
菜单作用:设置单圈就近/方向回零的零点位置。
(无限位碰撞回零触发条件:电机实际转速 < 设置的碰撞回零转速阈值 + 电机实际相电流 > 设置的碰撞回零相电流阈值 + 持续时间 > 设置的碰撞回零时间阈值)
菜单功能:设置无限位碰撞回零的检测转速
菜单选项:30、60、...、300(单位:RPM)
菜单作用:碰撞回零检测判定条件之一:电机实际转速 < 碰撞回零检测转速。
菜单功能:设置无限位碰撞回零的检测电流
菜单选项:400、600、...、3000(单位:Ma)
菜单作用:碰撞回零检测判定条件之二:电机实际电流 > 碰撞回零检测电流。
菜单功能:设置无限位碰撞回零的检测时间
菜单选项:20、40、...、200(单位:毫秒)
菜单作用:碰撞回零检测判定条件之三:持续时间 > 碰撞回零检测时间。
菜单功能:设置上电自动触发回零操作
菜单选项:Disable、Enable
菜单作用:设置上电自动触发回零操作。
菜单功能:恢复出厂设置
菜单选项:Yes、No
菜单作用:恢复出厂设置,需要断电重新上电,重新校准编码器。
1.什么是脉冲?
控制器控制某一个IO端口输出一个0(低电平)和一个1(高电平),就是一个脉冲,相当于一个IO端口取反两次,下图是控制器IO端口输出2个脉冲,如图所示:
2.如何发脉冲去控制ZDT_X42_V1.2闭环驱动器?
按照前面章节安装并校准完成编码器后,用控制器一个IO端口向ZDT_X42_V1.2闭环驱动器的Stp端口发送脉冲过去,就可以控制电机进行旋转。
3.如何控制旋转的角度?
以1.8°步进电机、16细分为例,就是发送3200个脉冲,电机就旋转一圈360°,如果是32细分,那就是发送6400个脉冲,电机旋转一圈,其他细分或角度可以类推。
4.如何控制旋转的方向?
用控制器另外一个IO端口控制ZDT_X42_V1.2闭环驱动器的Dir端口,输出0为一个方向旋转,输出1为另外一个方向旋转。
5.如何控制旋转的速度?
控制器输出0和1的时间加快,就能加快电机旋转的速度,也就是加快脉冲频率。
串口TTL单机通讯控制接线:
串口TTL多机通讯控制接线:
(注意:每个ZDT_X42_V1.2闭环驱动的插针上左边都需要插入两个跳线帽,是横着插)
RS232单机通讯控制接线:
RS232多机通讯控制接线:
(注意:每个ZDT_X42_V1.2闭环驱动的插针上都需要插入一个ZDT_RS232模块)
RS485单机通讯控制接线:
RS485多机通讯控制接线:
(注意:每个ZDT_X42_V1.2闭环驱动的插针上都需要插入一个ZDT_RS485模块)
CAN单机通讯控制接线:
CAN多机通讯控制接线:
(注意:每个ZDT_X42_V1.2闭环驱动的插针上都需要插入一个ZDT_CAN模块)
Emm42_V5.0闭环驱动通讯控制命令格式,发送和接收都按照以下格式:
地址 |
功能码 |
指令数据 |
校验字节 |
|||
ID_Addr |
Func_Code |
CheckSum |
1. 地址(ID_Addr)默认为1,可设置范围为1-255,0为广播地址 。
(1)485总线的负载能力理论上最多能够挂载256个从机。
(2)CAN总线的负载能力理论上最多能够连接110个节点。
(3)地址1-10可以在菜单ID_Addr上进行选择修改,大于10的地址通过串口/CAN通讯发送命令进行修改。
(4)0为广播地址,上位机以0地址发送命令,则所有的闭环电机都会执行这条命令。
(5)0为广播地址发送命令时,则只有地址为1的电机会回复命令,其他地址不回复。
2. 不同的命令对应不同的功能码和指令数据,详见下一章节“通讯控制命令列表”。
3. 校验字节(CheckSum)可选0x6B、XOR校验、CRC-8校验三种,默认为0x6B。
(1)可在菜单Checksum上进行选择修改通讯校验方式;
(2)选择0x6B,意思就是每条命令的最后一个字节都是0x6B作为校验;
(3)选择XOR校验,意思就是每条命令最后一个字节都是将前面全部的字节进行异或作为校验,比如命令01 06 45 42,最后一个字节0x42 = 0x01 ^ 0x06 ^ 0x45;
(4)选择CRC-8校验,意思就是每条命令最后一个字节都是将前面全部的字节进行CRC-8计算作为校验;
(勾选16进制发送和16进制显示,取消勾选发送新行,波特率默认是115200)
命令格式:地址 + 0xF3 + 0xAB + 使能状态 + 多机同步标志 + 校验字节
命令返回:地址 + 0xF3 + 命令状态 + 校验字节
命令示例:发送01 F3 AB 01 00 6B,正确返回01 F3 02 6B,条件不满足返回01 F3 E2 6B,错误命令返回01 00 EE 6B
数据解析:控制电机使能发送01 F3 AB 01 00 6B;不使能发送01 F3 AB 00 00 6B
命令格式:地址 + 0xF6 + 方向 + 速度 + 加速度 + 多机同步标志 + 校验字节
命令返回:地址 + 0xF6 + 命令状态 + 校验字节
命令示例:发送01 F6 01 05 DC 0A 00 6B,命令正确返回01 F6 02 6B,条件不满足返回01 F6 E2 6B,错误命令返回01 00 EE 6B
(条件不满足情况:触发了堵转保护、电机没使能)
数据解析:01表示旋转方向为CCW(00表示CW),05 DC表示速度为0x05DC = 1500(RPM),0A表示加速度档位为0x0A = 10,00表示不启用多机同步(01表示启用),如果需要多个电机同步开始运动,请参考“多机通讯及同步控制”章节;
注意:加速度档位为0表示不使用曲线加减速,直接按照设定的速度运行。曲线加减速时间计算公式:t2 - t1 = (256 - acc) * 50(us),Vt2 = Vt1 + 1(RPM);
(注:acc为加速度档位,Vt1为t1时刻的转速,,Vt2为t2时刻的转速)
命令格式:地址 + 0xFD + 方向 + 速度+ 加速度 + 脉冲数 + 相对/绝对模式标志 + 多机同步标志 + 校验字节
命令返回:地址 + 0xFD + 命令状态 + 校验字节
命令示例:发送01 FD 01 05 DC 00 00 00 7D 00 00 00 6B,正确返回01 FD 02 6B,条件不满足返回01 FD E2 6B,错误命令返回01 00 EE 6B
(条件不满足情况:触发了堵转保护、电机没使能)
数据解析:01表示旋转方向为CCW(00表示CW),05 DC表示速度为0x05DC = 1500(RPM),00表示加速度档位为0x00 = 0,00 00 7D 00表示脉冲数为0x00007D00 = 32000个,00表示相对位置模式(01表示绝对位置模式),00表示不启用多机同步(01表示启用),如果需要多个电机同步开始运动,请参考“多机通讯及同步控制”章节;
(16细分下发送3200个脉冲电机旋转一圈,32000个脉冲表示转10圈)
注意:加速度档位为0表示不使用曲线加减速,直接按照设定的速度运行。曲线加减速时间计算公式:t2 - t1 = (256 - acc) * 50(us),Vt2 = Vt1 + 1(RPM);
(注:acc为加速度档位,Vt1为t1时刻的转速,,Vt2为t2时刻的转速)
命令格式:地址 + 0xFE + 0x98 + 多机同步标志 + 校验字节
命令返回:地址 + 0xFE + 命令状态 + 校验字节
命令示例:发送01 FE 98 00 6B,正确返回01 FE 02 6B,条件不满足返回01 FE E2 6B,错误命令返回01 00 EE 6B
(条件不满足情况:触发了堵转保护、电机没使能)
数据解析:让电机立即停止转动(紧急刹车),可用于速度模式和位置模式都可以。
命令格式:地址 + 0xFF + 0x66 + 校验字节
命令返回:地址 + 0xFF + 命令状态 + 校验字节
命令示例:发送01 FF 66 6B,正确返回01 FF 02 6B,条件不满足返回01 FF E2 6B,错误命令返回01 00 EE 6B
(条件不满足情况:触发了堵转保护、电机没使能)
数据解析:让多个电机同步开始运动,请参考“多机通讯及同步控制”章节。
命令格式:地址 + 0x93 + 0x88 + 是否存储标志 + 校验字节
命令返回:地址 + 0x93 + 命令状态 + 校验字节
命令示例:发送01 93 88 01 6B,正确返回01 93 02 6B,错误命令返回01 00 EE 6B
数据解析:可以让电机转到想要的位置,然后发送该命令设置单圈回零的零点位置。
命令格式:地址 + 0x9A + 回零模式 + 多机同步标志 + 校验字节
命令返回:地址 + 0x9A + 命令状态 + 校验字节
命令示例:发送01 9A 00 00 6B,正 确返回01 9A 02 6B,条件不满足返回01 9A E2 6B,错误命令返回01 00 EE 6B
(条件不满足情况:触发了堵转保护、电机没使能、单圈回零的零点位置值无效)
数据解析:设置完原点回零参数后,可以发送该命令触发原点回零功能。其中,00表示触发单圈就近回零,01表示触发单圈方向回零,02表示触发多圈无限位碰撞回零,03表示触发多圈有限位开关回零
命令格式:地址 + 0x9C + 0x48 + 校验字节
命令返回:地址 + 0x9C + 命令状态 + 校验字节
命令示例:发送01 9C 0x48 6B,正 确返回01 9C 02 6B,条件不满足返回01 9C E2 6B,错误命令返回01 00 EE 6B
(条件不满足的情况有:当前没有触发回零操作)
数据解析:正在回零的过程中,可以使用该命令强制中断并退出回零操作。
命令格式:地址 + 0x22 + 校验字节
命令返回:地址 + 0x22 + 原点回零参数 + 校验字节
命令示例:发送01 22 6B,正确返回01 22 00 00 00 1E 00 00 27 10 0F A0 03 20 00 3C 00 6B ,错误命令返回01 00 EE 6B
数据解析:返回的原点回零参数,它将按照下面的数据格式进行排列和数据的转换:
回零模式 = 0x00 = Nearest = 单圈就近回零模式
回零方向 = 0x00 = CW
回零转速 = 0x001E = 30(RPM)
回零超时时间 = 0x00002710 = 10000(ms)
无限位碰撞回零检测转速 = 0x012C = 300(RPM)
无限位碰撞回零检测电流 = 0x0320 = 800(Ma)
无限位碰撞回零检测时间 = 0x003C = 60(ms)
是否使能上电自动触发回零功能 = 0x00 = 不使能
(无限位碰撞回零检测判定条件:电机转速 < 碰撞回零检测转速 + 电机相电流 >
碰撞回零检测电流 + 持续时间 > 碰撞回零检测时间)
命令格式:地址 + 0x4C + 0xAE + 是否存储标志 + 原点回零参数 + 校验字节
命令返回:地址 + 0x4C + 命令状态 + 校验字节
命令示例:发送01 4C AE 01 原点回零参数 6B,正确返回01 4C 02 6B,
错误命令返回01 00 EE 6B
数据解析:修改原点回零参数需要按照下面的数据格式进行排列和数据的转换:
比如,发送如下数据对原点回零参数进行修改:
01 4C AE 01 00 00 00 1E 00 00 27 10 01 2C 03 20 00 3C 00 6B
0x01 = 保存本次修改的配置参数;
0x00 = 回零模式为Nearest(单圈就近回零模式);
0x00 = 回零方向为CW;
0x001E = 回零速度为30(RPM);
0x00002710 = 回零超时时间为10000(ms);
0x012C = 无限位碰撞回零检测转速为300(RPM);
0x0320 = 无限位碰撞回零检测电流为800(Ma);
0x003C = 无限位碰撞回零检测时间为60(ms);
0x00 = 不使能上电自动触发回零功能;
命令格式:地址 + 0x3B + 校验字节
命令返回:地址 + 0x3B + 回零状态标志+ 校验字节
命令示例:发送01 3B 6B,正确返回01 3B 回零状态标志字节 6B,错误命令返回01 00 EE 6B
数据解析:返回的回零状态标志字节的每一位都代表一种状态,比如返回的回零状态标志字节为0x03,它将按照下面的数据格式进行排列和数据的转换:
编码器就绪状态标志位 = 0x03 & 0x01 = 0x01
校准表就绪状态标志位 = 0x03 & 0x02 = 0x01
正在回零标志位 = 0x03 & 0x04 = 0x00
回零失败标志位 = 0x03 & 0x08 = 0x00
命令格式:地址 + 0x06 + 0x45 + 校验字节
命令返回:地址 + 0x06 + 状态码 + 校验字节
命令示例:发送01 06 45 6B,正确返回01 06 02 6B,条件不满足返回01 06 E2 6B,错误命令返回01 00 EE 6B
(条件不满足的情况有:当前是开环模式、触发了堵转保护)
数据解析:触发编码器校准,对应屏幕上的“Cal” 菜单
命令格式:地址 + 0x0A + 0x6D + 校验字节
命令返回:地址 + 0x0A + 状态码 + 校验字节
命令示例:发送01 0A 6D 6B,正确返回01 0A 02 6B,错误命令返回01 00 EE 6B
数据解析:将当前位置角度、位置误差、脉冲数等全部清零。
命令格式:地址 + 0x0E + 0x52 + 校验字节
命令返回:地址 + 0x0E + 状态码 + 校验字节
命令示例:发送01 0E 52 6B,正确返回01 0E 02 6B,条件不满足返回01 0E E2 6B,错误命令返回01 00 EE 6B
(条件不满足的情况有:没有触发到堵转保护)
数据解析:电机发生堵转后,发送该命令可以解除堵转保护。
命令格式:地址 + 0x0F + 0x5F + 校验字节
命令返回:地址 + 0x0F + 状态码 + 校验字节
命令示例:发送01 0F 5F 6B,正确返回01 0F 02 6B,错误命令返回01 00 EE 6B,触发恢复出厂设置后,蓝灯亮起,需要断电重新上电校准编码器。
数据解析:发送该命令可以恢复出厂设置,恢复出厂设置后需要重新上电,重新空载校准编码器 。
命令格式:地址 + 0x1F + 校验字节
命令返回:地址 + 0x1F + 固件版本号 + 对应的硬件版本号 + 校验字节
命令示例:发送01 1F 6B,正确返回01 1F 7D 6F 6B,错误命令返回01 00 EE 6B
数据解析:固件版本 = 0xF4 = Emm42_V5.0.0,对应的硬件版本 = 0x78 = 120 = ZDT_X42_V1.2版本
命令格式:地址 + 0x20 + 校验字节
命令返回:地址 + 0x20 + 相电阻 + 相电感 + 校验字节
命令示例:发送01 20 6B,正确返回01 20 04 7A 0D 28 6B,错误命令返回01 00 EE 6B
数据解析:相电阻 = 0x047A = 1146mΩ,相电感 = 0x0D28 = 3368uH(注意单位)
命令格式:地址 + 0x21 + 校验字节
命令返回:地址 + 0x21 + 位置环PID参数 + 校验字节
命令示例:发送01 21 6B,正确返回01 21 00 00 F2 30 00 00 00 64 00 00 F2 30 6B ,错误命令返回01 00 EE 6B
数据解析:
Kp = 0x0000F230 = 62000,Ki = 0x00000064 = 100,Kd = 0x0000F230 = 62000;
命令格式:地址 + 0x24 + 校验字节
命令返回:地址 + 0x24 + 总线电压 + 校验字节
命令示例:发送01 24 6B,正确返回01 24 5C 6A 6B,错误命令返回01 00 EE 6B
数据解析:总线电压 = 0x5C6A = 23658mV(输入电压经过反接二极管后会有压降)
命令格式:地址 + 0x27 + 校验字节
命令返回:地址 + 0x27 + 总线相电流 + 校验字节
命令示例:发送01 27 6B,正确返回01 27 02 73 6B,错误命令返回01 00 EE 6B
数据解析:相电流 = 0x0273 = 627Ma
命令格式:地址 + 0x31 + 校验字节
命令返回:地址 + 0x31 + 读取经过线性化校准后的编码器值 + 校验字节
命令示例:发送01 31 6B,正确返回01 31 8D 9E 6B,错误返回01 00 EE 6B
数据解析:经过线性化校准后的编码器值 = 0x8D9E = 36254
(注意:经过线性化校准后,内部对编码器值进行了4倍频,一圈的数值是0-65535)
命令格式:地址 + 0x32 + 校验字节
命令返回:地址 + 0x32 + 符号 + 输入脉冲数 + 校验字节
命令示例:发送01 32 6B,正确返回01 32 01 00 00 0C 80 6B,错误命令返回01 00 EE 6B
数据解析:01表示负数(00表示正数),00 00 0C 80表示输入脉冲数
输入脉冲数 = -0x0C80 = -3200个
命令格式:地址 + 0x33 + 校验字节
命令返回:地址 + 0x33 + 符号 + 电机目标位置 + 校验字节
命令示例:发送01 33 6B,正确返回01 33 01 00 01 00 00 6B,错误命令返回01 00 EE 6B
数据解析:01表示负数(00表示正数),00 01 00 00表示电机目标位置值(0-65535表示一圈),如果要转换成角度,可以这样计算:
电机目标位置角度 = -0x00010000 = (-65536 * 360) / 65536 = -360.0°
命令格式:地址 + 0x34 + 校验字节
命令返回:地址 + 0x34 + 符号 + 电机目标位置 + 校验字节
命令示例:发送01 34 6B,正确返回01 34 01 00 01 00 00 6B,错误命令返回01 00 EE 6B
数据解析:01表示负数(00表示正数),00 01 00 00表示电机实时设定的目标位置(0-65535表示一圈),如果要转换成角度,可以这样计算:
电机实时设定的目标位置 = -0x00010000 = (-65536 * 360) / 65536 = -360.0°
命令格式:地址 + 0x35 + 校验字节
命令返回:地址 + 0x35 + 符号 + 电机实时转速 + 校验字节
命令示例:发送01 35 6B,正确返回01 35 01 05 DC 6B,错误命令返回01 00 EE 6B
数据解析:01表示负数(00表示正数),05 DC表示电机实时转速
电机实时转速 = -0x05DC = -1500RPM(转/每分钟)
命令格式:地址 + 0x36 + 校验字节
命令返回:地址 + 0x36 + 符号 + 电机实时位置 + 校验字节
命令示例:发送01 36 6B,正确返回01 36 01 00 01 00 00 6B,错误命令返回01 00 EE 6B
数据解析:01表示负数(00表示正数),00 01 00 00表示电机实时位置值(0-65535表示一圈),如果要转换成角度,可以这样计算:
电机实时位置角度 = -0x00010000 = (-65536 * 360) / 65536 = -360.0°
命令格式:地址 + 0x37 + 校验字节
命令返回:地址 + 0x37 + 符号 + 电机位置误差 + 校验字节
命令示例:发送01 37 6B,正确返回01 37 01 00 00 00 08 6B,错误命令返回01 00 EE 6B
数据解析:01表示负数(00表示正数),00 00 00 08表示电机位置误差值(0-65535表示一圈),如果要转换成角度,可以这样计算:
电机实时位置角度 = -0x00000008 = (-8 * 360) / 65536 = -0.0439453125°
命令格式:地址 + 0x3A + 校验字节
命令返回:地址 + 0x3A + 状态标志+ 校验字节
命令示例:发送01 3A 6B,正确返回01 3A 电机状态标志字节 6B,错误命令返回01 00 EE 6B
数据解析:比如返回01 3A 03 6B,可以这样进行电机状态的判断:
电机使能状态标志位 = 0x03 & 0x01 = 0x01 = true
电机到位标志位 = 0x03 & 0x02 = 0x01 = true
电机堵转标志位 = 0x03 & 0x04 = 0x00 = false
电机堵转保护标志 = 0x03 & 0x08 = 0x00 = false
命令格式:地址 + 0x42 + 0x6C + 校验字节
命令返回:地址 + 0x42 + 驱动配置参数 + 校验字节
命令示例:发送01 42 6C 6B,正确返回01 42 驱动配置参数 6B,错误命令返回01 00 EE 6B
数据解析:命令正确返回01 42后面的字节就是驱动的配置参数,它将按照下面的数据格式进行排列和数据的转换:
比如,发送读取驱动配置参数01 42 6C 6B命令后,返回如下数据:
01 42 21 15 19 02 02 02 00 10 01 00 03 E8 0B B8 0F A0 05 07 01 00 01 01 00 28 09 60 0F A0 00 01 6B
返回命令所包含的字节数 = 0x21 = 33个;
返回命令的配置参数个数 = 0x15 = 21个;
电机类型 = 0x19 = 25 = 1.8°电机(0.9°电机为50);
脉冲端口控制模式 = 0x02 = PUL_FOC = FOC矢量闭环模式(对应屏幕选项顺序);
通讯端口复用模式 = 0x02 = UART_FUN = 串口/RS232/RS485通讯;
En引脚的有效电平 = 0x02 = Hold = 一直有效;
Dir引脚的有效方向 = 0x00 = CW = 顺时针方向;
细分 = 0x10 = 16(如果返回0x00,则为256细分);
细分插补功能 = 0x01 = Enable = 使能;
自动熄屏功能 = 0x00 = Disable = 不使能;
开环模式工作电流 = 0x03E8 = 1000Ma;
闭环模式堵转时的最大电流 = 0x0BB8 = 3000Ma;
闭环模式最大输出电压 = 0x0FA0 = 4000mV;
串口波特率 = 0x05 = 115200(对应屏幕选项顺序:0x00为9600,...);
CAN通讯速率 = 0x07 = 500000(对应屏幕选项顺序:0x00为10000,...);
ID地址(串口/RS232/RS485/CAN通用) = 0x01 = 1;
通讯校验方式 = 0x00 = 通讯校验方式固定为0x6B;
控制命令应答 = 0x01 = 控制命令列表只回复确认收到命令;
堵转保护功能 = 0x01 = 使能;
堵转保护转速阈值 = 0x0028 = 40RPM(转/每分钟);
堵转保护电流阈值 = 0x0960 = 2400Ma;
堵转保护检测时间阈值 = 0x0FA0 = 4000ms;
(堵转检测判定条件:电机实际转速 < 设置的堵转检测转速阈值 + 电机实际相电流 >
设置的堵转检测相电流阈值 + 持续时间 > 设置的堵转检测时间阈值)
位置到达窗口 = 0x0001 = 1 = 0.1°;
(表示当目标位置(你发送的位置角度)与传感器实际位置(传感器读取的位置角度)相差小于0.1°时,认为电机已经到达设定的位置,将置位位置到达标志位,如果控制命令应答设置为返回到位命令,则到位后将返回到位命令:地址 + FD + 9F + 6B)
命令格式:地址 + 0x43 + 0x7A + 校验字节
命令返回:地址 + 0x43 + 系统状态参数 + 校验字节
命令示例:发送01 43 7A 6B,正确返回01 43 系统状态参数 6B,错误命令返回01 00 EE 6B
数据解析:命令正确返回01 43后面的字节就是系统的状态参数,它将按照下面的数据格式进行排列和数据的转换:
比如,发送读取系统状态参数01 43 7A 6B命令后,返回如下数据:
01 43 1F 09 5C 67 00 03 43 EB 01 00 01 00 00 00 00 00 01 00 01 00 00 01 00 00 00 08 03 03 6B
返回命令所包含的字节数 = 0x1F = 31个;
返回命令的配置参数个数 = 0x09 = 9个;
总线电压 = 0x5C67 = 23655mV;
总线相电流 = 0x0003 = 3Ma;
校准后编码器值 = 0x43EB = 17387;
电机目标位置 = -0x00010000 = -(65536 * 360)/65536 = -360°(01表示符号);
电机实时转速 = 0x0000 = 0RPM(00表示符号);
电机实时位置 = -0x00010000 = -(65536 * 360)/65536 = -360°(01表示符号);
电机位置误差 = -0x00000001 = -(8 * 360)/65536 ≈ -0.044°(01表示符号);
就绪状态标志 = 0x03;
电机状态标志 = 0x03;
命令格式:地址 + 0x84 + 0x8A + 是否存储标志 + 细分值 + 校验字节
命令返回:地址 + 0x84 + 命令状态 + 校验字节
命令示例:发送01 84 8A 01 07 6B,正确返回01 84 02 6B,错误命令返回01 00 EE 6B
数据解析:修改细分为0x07 = 7细分,并存储到芯片上;(注:00表示256细分)
命令格式:地址 + 0xAE + 0x4B + 是否存储标志 + ID地址 + 校验字节
命令返回:地址 + 0xAE + 命令状态 + 校验字节
命令示例:发送01 AE 4B 01 10 6B,正确返回01 AE 02 6B,错误命令返回01 00 EE 6B
数据解析:修改ID地址为0x10 = 16,并存储到芯片上;
命令格式:地址 + 0x46 + 0x69 + 是否存储标志 + 开环/闭环模式 + 校验字节
命令返回:地址 + 0x46 + 命令状态 + 校验字节
命令示例:发送01 46 69 01 01 6B,正确返回01 46 02 6B,错误命令返回01 00 EE 6B
数据解析:发送01 46 69 01 01 6B修改为开环模式,发送01 46 69 01 02 6B修改为闭环模式
命令格式:地址 + 0x44 + 0x33 + 是否存储标志 + 开环模式电流 + 校验字节
命令返回:地址 + 0x44 + 命令状态 + 校验字节
命令示例:发送01 44 33 00 03 E8 6B,正确返回01 44 02 6B,错误命令返回01 00 EE 6B
数据解析:修改开环模式电流为0x03E8 = 1000(Ma),不存储(断电丢失);
命令格式:地址 + 0x48 + 0xD1 + 是否存储标志 + 驱动配置参数 + 校验字节
命令返回:地址 + 0x48 + 命令状态 + 校验字节
命令示例:发送01 48 D1 01 驱动参数 6B,正确返回01 48 02 6B,错误命令返回01 00 EE 6B
数据解析:修改驱动配置参数需要按照下面的数据格式进行排列和数据的转换:
比如,发送如下数据对驱动的配置参数进行修改:
01 48 D1 01 19 02 02 02 00 10 01 00 03 E8 0B B8 0F A0 05 07 01 00 01 01 00 28 09 60 0F A0 00 01 6B
0x01 = 保存本次修改的配置参数;
0x19 = 修改电机类型为1.8°电机;
0x02 = 修改脉冲端口控制模式为PUL_FOC,即FOC矢量闭环模式;
0x02 = 修改通讯端口复用模式为UART_FUN,即串口/RS232/RS485通讯;
0x02 = 修改En引脚的有效电平为Hold,即一直有效;
0x00 = 修改Dir引脚的有效方向为CW,即顺时针方向;
0x10 = 修改细分为16细分(注意:256细分用00表示);
0x01 = 修改细分插补功能为Enable,即使能细分插补;
0x00 = 修改自动熄屏功能为Disable,即不使能自动熄屏功能;
0x03E8 = 修改开环模式工作电流为1000Ma;
0x0BB8 = 修改闭环模式堵转时的最大电流为3000Ma;
0x0FA0 = 修改闭环模式最大输出压为4000mV;
0x05 = 修改串口波特率为115200(对应屏幕选项顺序:0x00为9600,...);
0x07 = 修改CAN通讯速率为500000(对应屏幕选项顺序:0x00为10000,...);
0x01 = 该值原为修改ID地址为1,现取消,使得可用广播地址批量修改驱动参数;
0x00 = 修改通讯校验方式为0x6B;
0x01 = 修改控制命令应答为Receive,即只回复确认收到命令;
0x01 = 修改堵转保护功能为Enable,即使能堵转保护;
0x0028 = 修改堵转保护转速阈值为40RPM(转/每分钟);
0x0960 = 修改堵转保护电流阈值为2400Ma;
0x0FA0 = 修改堵转保护检测时间阈值为4000ms;
0x0001 = 修改位置到达窗口为0.1°;
(当目标位置 - 实时位置 < 0.1°时,认为电机已经到达位置,将置位到位标志)
命令格式:地址 + 0x4A + 0xC3 + 是否存储标志 + 位置环PID参数 + 校验字节
命令返回:地址 + 0x4A + 命令状态 + 校验字节
命令示例:发送01 4A C3 01 位置环PID参数 6B,正确返回01 4A 02 6B,错误命令返回01 00 EE 6B
数据解析:修改位置环PID参数需要按照下面的数据格式进行排列和数据的转换:
比如,发送如下数据对位置环的PID参数进行修改:
01 4A C3 00 00 00 F2 30 00 00 00 64 00 00 F2 30 6B
0x00 = 不保存本次修改的配置参数;
0x0000F230 = 修改Kp = 62000;
0x00000064 = 修改Ki = 100;
0x0000F230 = 修改Kd = 62000;
命令格式:地址 + 0xF7 + 0x1C + 存储/清除标志 + 方向 + 速度 + 加速度 + 是否使能En引脚控制启停标志 + 校验字节
命令返回:地址 + 0xF7 + 命令状态 + 校验字节
命令示例:发送01 F7 1C 01 01 05 DC 0A 01 6B,正确返回01 F7 02 6B,错误命令返回01 00 EE 6B
数据解析:01表示方向为CCW(00表示CW),05 DC表示速度为0x05DC = 1500(RPM),0A表示加速度档位为0x0A = 10,01表示启用En引脚控制电机启停(00表示不启用);(发送命令01 F7 1C 01 01 05 DC 0A 01 6B后,每次上电,电机都会自动以加速度10加速到-1500RPM的速度运行,并可以通过En引脚进行控制启动和停止,其中,En引脚控制电机启动的有效电平可在菜单En中选择,选H为高电平启动,低电平停止)
命令格式:地址 + 0x4F + 0x71 + 是否存储标志 + 通讯控制输入速度是否缩小10倍标志 + 校验字节
命令返回:地址 + 0x4F + 命令状态 + 校验字节
命令示例:发送01 4F 71 01 01 6B,正确返回01 4F 02 6B,错误命令返回01 00 EE 6B
数据解析:01为使能(00为不使能),使能后,通讯控制发送的速度值会缩小10倍,比如发送1RPM的速度,但电机实际是以0.1RPM的速度去运行;
(速度模式控制指令、位置模式控制指令、存储速度模式参数指令都有效)
小于8字节命令(速度模式:01 F6 01 05 DC 01 00 6B)
大于8字节命令(位置模式:01 FD 01 0F A0 00 00 01 FA 00 00 00 6B)
1. 先发送FD 01 0F A0 00 00 01 FA(注意:帧ID为0100,表示第0包数据)
2. 再发送FD 00 00 00 6B(注意:帧ID为0101,表示第1包数据)
一、多机通讯:
1. 多机通讯的接线见6.1章节“通讯控制接线”。
2. 修改每个电机的ID地址唯一,在菜单ID_Addr中进行选择修改,详细操作见 6.2章节“通讯控制命令格式说明”。
3. 按电机ID地址发送命令,控制电机运动,比如有地址1和地址2两个电机:
二、同步控制:
比如有地址1、地址2两个电机,假设需要:
则,可以按照以下操作进行两者的同步控制:
单圈回零模式有两种:单圈就近回零和单圈方向回零,顾名思义,单圈就近回零就是往靠近零点位置的方向回零,而单圈方向回零就是根据O_Dir选项设定的方向回零, 单圈就近/方向回零操作步骤如下:
原理:利用电机运动过程中,碰撞到机器结构边缘时,电流会瞬间变大,转速会瞬间变小,这一特点,类似堵转检测的原理,简而言之,就是让电机碰一下进行回零。
前提条件:电机带的负载固定;
检测判定条件:电机转速 < 碰撞回零检测转速 + 电机相电流 > 碰撞回零检测电流 + 持续时间 > 碰撞回零检测时间(注意:检测阈值可在上位机或屏幕中进行修改)
多圈无限位碰撞回零操作步骤如下:
多圈有限位开关回零根据自身使用的控制模式按照下图进行接线和设置:
脉冲模式控制-上电自动回零限位开关接线
串口/232/485/CAN通讯控制-上电自动回零限位开关接线
1.到位输出
菜单P_Pul选择为ESI_RCO,当电机到位,即输入位置角度 - 电机实时位置角度 < 位置到达窗口(默认0.3°,可在上位机上修改)时,Dir引脚会输出高电平。(注意:如果Com不接或者接3.3V,则到位后Dir引脚到位输出3.3V;如果Com接5V,则到位后Dir引脚到位输出5V;如果Com接24V,则到位后Dir引脚到位输出24V;到位输出仅适用于非工业套餐,也就是不带光耦隔离的套餐。)
2.到位返回命令(地址 + FD + 9F + 6B)
菜单Response可设置串口/RS232/RS485/CAN总线通讯控制时,主机发送控制动作命令列表中的命令时,从机收到命令后,是否返回确认收到命令,以及是否返回到位命令;
nNone: 不返回确认收到命令,在发送位置模式命令时也不返回到位命令;
nReceive: 只返回确认收到命令(默认值);
nReached: 只在发送位置模式命令时返回到位命令(地址 + FD + 9F + 6B);
nBoth: 既返回确认收到命令,也在发送位置模式命令时返回到位命令;
nOther: 位置模式下只返回到位命令,其他控制动作命令返回确认收到命令;
菜单P_Serial选择为ESI_ALO,当闭环电机发生堵转、欠压等异常情况时,T/B/L引脚会输出3.3V高电平,正常情况下默认是0V低电平;发生堵转后,将R/A/H引脚接Gnd(0V)可以复位堵转保护,不需要重新上电;
序号 |
问题 |
解决方法 |
1 |
Waiting V+ Power! |
供电电压不足,V+和Gnd需要12-32V进行供电 |
2 |
Not Cal |
未校准编码器,可以点击Cal进行编码器校准 |
3 |
Phase AABB Error! |
电机线序A+ A-和B+ B-错误,请检查电机线序 |
4 |
Magnet Loss! Enter.. |
检测不到磁铁,未安装磁铁或驱动到电机上 |
5 |
Encoder Error! Enter.. |
磁编码器通讯失败,可能编码器芯片已经损坏 |
6 |
Ref Voltage Error! |
基准电压错误,可能基准电压芯片已经损坏 |
7 |
Bus Current Error! |
上电瞬间总线电流过大,请检查是否短路 |
8 |
Origin Set Done! |
单圈回零的零点位置设置成功 |
9 |
Origin Set Fail! |
单圈回零的零点位置设置失败,检查是否校准编码器 |
10 |
Going to Origin.. |
正在执行回零操作 |
11 |
Go to Origin Fail! |
上电自动回零失败,请检查电机力矩是否足够 |
12 |
Restore Done! Reboot! |
恢复出厂设置成功,请重新上电校准编码器 |
日期 |
版本 |
内容 |
2023/8/21 |
Rev1.0 |
初版 |
2023/9/2 |
Rev1.1 |
修正文档中的一些说明纰漏、增加一些细节描述 |
2023/9/6 |
Rev1.2 |
增加和上一代版本Emm_V4.2的参数对比和新增功能 |
2023/11/20 |
Rev1.3 |
增加5.1.0版本新固件新增功能说明 |