EtherCAT从站读取MPU9250数据并进行姿态解算

1.EtherCAT从站硬件设计

18年8月的时候,基于LAN9252、stm32、mpu9250芯片设计了一款EtherCAT从站,是我设计的第一款从站。手工焊芯片和元件,焊得我眼睛都快瞎了~~~~~~
在这里插入图片描述
第二版采用了双层设计,将stm32层和lan9252层分开,stm32直接可以买现成的核心板用上,因此我只需要手工焊接lan9252电路部分,大大减少了工作了,哈哈、这下爽多了!!!
在这里插入图片描述
硬件架构如下,stm32和lan9252之间通过fsmc进行数据交互,stm32通过IIC读取mpu9250的数据。
在这里插入图片描述

2.修改XML文件

CANopen是基于CAN总线的应用层协议,EtherCAT在应用层支持CANopen协议。从站传递给主站的EtherCAT数据帧中包括横滚角Roll、俯仰角Pitch和偏航角Yaw数据,需要对XML文件进行修改。
在这里插入图片描述

3.姿态解算程序

通过MPU9250采集到的是3轴角速度、3轴加速度和3轴磁感应强度数据。利用得到的9轴原始数据,进行姿态融合解算,就能求出运动物体的姿态角:Roll、Pitch和Yaw。姿态融合算法有很多,比如著名的基于卡尔曼滤波的解算方法,这些算法在无人机等领域已经大量运用了,我们也可以在网上找到一部分开源算法,这些算法我就不详述了。

4.从站测试

本文采用TwinCAT3.0软件对EtherCAT从站进行测试,使用Qt开发的“三维姿态监测软件”与TwinCAT进行ADS通讯。pc机与EtherCAT从站的连接如图所示。
在这里插入图片描述
在twincat中新建工程,扫描得到三个从站设备。在PLC程序中添加9个变量,分别对应每个从站的横滚角roll、俯仰角pitch和偏航角yaw。变量声明如下:

PROGRAM MAIN
VAR
	pitch AT%I* : INT:=0;
	roll AT%I* : INT:=0;
	yaw AT%I* : INT:=0;
	pitch1 AT%I* : INT:=0;
	roll1 AT%I* : INT:=0;
	yaw1 AT%I* : INT:=0;
	pitch2 AT%I* : INT:=0;
	roll2 AT%I* : INT:=0;
	yaw2 AT%I* : INT:=0;
END_VAR

然后将PLC程序中定义的变量链接到对象字典,接着在twincat中新建ScopeYT工程。Scope模块能通过ADS协议获取到变量,从而将欧拉角变量曲线在图表栏里显示出来,实验中将监测到的姿态数据放大了100倍。
在这里插入图片描述
使用Qt开发的“三维姿态监测软件”查看姿态角
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值