M2006+C610驱动方案(一)基础

c用着不顺手,总有种有心无力的感觉,一个好办法是把c的源码找来翻译成java理解充分后再写c,

基础1 , can总线通信
can通信的内容很多,这里用到的只涉及标准数据帧,
控制器发送的报文格式:
在这里插入图片描述
发送的控制信号只有一个信息,电流 current
在这里插入图片描述
高八位低八位的解释:
一个字节是8位二进制,汇编中,为了表示一个整数类型,用两个字节来表示,即总共16位。
20是0000 0000 0001 0100 其中前0000 0000为高8位,后边0001 0100为低8位
两个字节的数据能表示正65535 - 负65536之间的数,如257表示为0000 0001 0000 0001.所以0000 00001为高8位,0000 0001为低8位
举个例子 给canId为2的电调 257的控制电流:

  uint16_t current = 257 ;
  uint8_t stmp[8] = {0, 0, 0, 0, 0, 0, 0, 0};  //每个元素是8位  故类型是uint8_t
  
  stmp[2] = (current >> 8);  //id 为2的c610    //高八位
  stmp[3] = current;										  //低八位

  CAN.sendMsgBuf(0x200, 0, 8, stmp);

c610 是根据控制信号来行动的, 控制信号大约2.5秒收不到就停转
电流范围-10000~10000. 面对输出轴 正的电流时电机是逆时针转动,负 顺时针

基础2 pid闭环控制算法

https://www.cnblogs.com/sasasatori/p/11672918.html

这里有文章讲的详细,本质是根据反馈调整输出
举一个简单的例子,狗不听话要打一顿,
通过计算觉得打5下就能听话然后打5下 这是开环控制,有点是简单速度快,缺点是5下可能打太疼了也可能打的轻不长记性
每打一下看看啥反应 是闭环控制

基础3 设备相关
arduino uno + mcp2515模块+

https://github.com/Seeed-Studio/CAN_BUS_Shield

usb_can模块和他的上位机 用于调试 (很重要 can通信调通了后就没用了)

资料
大疆的源码和

https://blog.csdn.net/Introver_t/article/details/80103041

上面这个可能运行不了,但是对理解大疆的源码有帮助

猜你喜欢

转载自blog.csdn.net/wangduqiang747/article/details/105334117
今日推荐