闭环步进电机SDK开发

@闭环步进电机SDK开发TOC

介绍

大家好,这是我第一次写文章,可能有些方面处理的不好,希望大家谅解。最近撸了一块闭环电机驱动板。闭环电机驱动板
准备后面用来做六轴机械臂项目。最近通过他的通信协议来开发他的SDK功能包。来实现直接通过串口通信控制。

硬件选择准备

在进行串口通信功能实现前,我们需要在对应界面选择上设置需要的选项。
Mode选择 CR_UART
UartBaud 根据通信波特率需要选择
UartAddr 根据需要的通信地址选择


SDK开发

在这里插入图片描述
即发送 e0 30,闭环控制器就会返回 e0 AB CD 这里ABCD未返回的0到F的参数,为 16进制 .
即返回的参数为:
angle=A*(16)^3+ B16^2+ C16+D;

std::array<float, 6> StepMotorControl::GetActualAngel()
{
   int u_numm = 0;
   long Para[ROBOTArm]={0};
   int DataPara[ROBOTArm][4]={0};
   int DataTwo[2]={0};
   std::array<float, ROBOTArm> Angel = {0};
   for (int i = 0; i < ROBOTArm; i++)
   {
      Sentdata[i][1] = 0x30;
   }
   for (int i = 0; i <= ROBOTArm; i++)
   {
      u_numm = 0;
      SendData(i, 2);
      while (Serial1xx.available() > 0)
      {
         Getdatas[i][u_numm] = (int)Serial1xx.read();
         u_numm++;
      }
   }
   for(int i = 0; i < ROBOTArm; i++)
   {
      mathAlgorithm::Turn10to16(Getdatas[i][1],DataTwo);
      DataPara[i][0]=DataTwo[0];
      DataPara[i][1]=DataTwo[1];
      mathAlgorithm::Turn10to16(Getdatas[i][2],DataTwo);
      DataPara[i][2]=DataTwo[0];
      DataPara[i][3]=DataTwo[1];
   }

   for (int i = 0; i < 6; i++)
   {
      long ass=DataPara[i][0]*4096+DataPara[i][1]*256+DataPara[i][2]*16+DataPara[i][3];
      Angel[i]=float(3.6*ass/655.35);
   }
   return Angel;
}


void StepMotorControl::SendData(char ModorID, char kk)
{
   for (int i = 0; i < kk; i++)
   {
      Serial1xx.write(Sentdata[ModorID][i]);
   }
}

   void Turn10to16(int &HEX10,int *HEX16two)
   {
       HEX16two[0]=HEX10/16;
       HEX16two[1]=HEX10%16;
   }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值