微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于ARM-Linux的微惯性单元数据采集与处理

基于ARM-Linux的微惯性单元数据采集与处理

时间:05-15 来源:电子技术应用 点击:

的数据可产生较好的滤波效果。通过计算得出低通滤波器的权系数ak和br,便可根据差分方程编制C语言程序。

2.4 输出数据基于Qt的界面显示

Qt是一个跨平台的C++图形界面库,主要通过汇集C++类的形式来实现应用程序界面开发所需要的一切,包括Qt/X11、Qt Embedded、Qtdesigner和Qt linguist等[4]。Qt是基于面向对象的C++语言,它提供了signal(信号)和slot(槽)的对象通信机制,具有可查询和设计的属性以及强大的事件和事件过滤器。本文主要用到其面向嵌入式开发的Qt Embedded及其设计器Qtdesigner。

Qt界面开发通常有以下步骤:
(1)用Qt生成file.ui和main.cpp;
(2)用uic生成file.h和file.cpp;
(3)用qmake生成file.pro;
(4)通过./setenv命令设置环境变量;
(5)用tmake生成二进制代码。

主函数部分如下:
int main( int argc, char ** argv)
{
QApplication a(argc, argv);
IMU_display w;
QTimer *t = new QTimer(&w );
a.connect(t,SIGNAL(timeout()),&w,SLOT(imu()));
t->start( 10, FALSE);
w.show();
a.connect(&a,SIGNAL(lastWindowClosed()),&a, SLOT(quit()) );
return a.exec();
}

IMU数据输出速率为100 Hz,将Qtimer定时器设置为10 ms刷新一次,保证数据输出的完整性。IMU数据的具体输出可以进行定制。在上位机开发完系统之后,可以利用虚拟帧缓存技术(qvfb)技术在PC机上测试Qt/Embedded 程序。经过反复的测试修改,测试成功之后制作图标和桌面启动器,通过minicom拷贝到ARM-Linux系统下的指定目录,便完成了程序的开发工作,需要注意的是交叉编译前需要将程序中上位机的串口名改为ARM开发板的指定串口名,否则程序将不会正常运行。

本文实现了ARM-Linux环境下对于MEMS IMU的数据采集处理,功耗低、成本低、体积小,可广泛应用到各种惯性测量领域。文中所述IIR数字低通滤波器,设计简单,适合运用于有用信号和噪声的频带不重叠的非高速变化运动的场合。其不足之处在于虽然可以取得较为理想的滤波效果,但同时产生了一定的延迟,所以不适合对于实时性要求很高的惯性测量场合,但可以通过改进滤波算法来实现。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top