系列文章目录
1.非制冷红外探测器驱动模块设计与实现
文章目录
前言
IMU惯导模块选用ADI公司军工级ADIS16505或ADIS16507作为核心MEMS传感器,两款传感器内部集成了三轴正交安装的高精度微机械陀螺和三轴正交安装的微机械加速度计,MEMS器件内部还集成了高精度温度传感器,方便用户开展IMU的温度补偿应用,MEMS传感器内部还集成了数字滤波器、抽选滤波器、巴特利特窗口滤波器和标定校准算法以及高精度AD转换等关键核,笔者设计该MEMS传感器的驱动程序,实现了100Hz或者200Hz更新速率的载体的姿态角、速度和温度信息输出,还可以通过通信指令切换该模块的工作模式实现角速率、加速度和温度信息输出,该模块适用于多种环境下高精度高可靠性的运动姿态测量系统,产品实物如下图一所示。
图1 IMU惯导模块实物图
一、基于ADIS16505/16507的IMU惯导模块应用领域
IMU惯导模块主要应用领域如下:
- 无人机的飞行姿态控制
- 车辆组合导航和动态测量
- 通信天线的调平及稳定
- 机器人的姿态控制
- 石油钻探与采矿
- 平台稳定
二、产品指标简介
MEMS陀螺精度 | 测量范围 | ±125°/s ±500°/s ±2000°/s(可选) |
零偏稳定性 | 2.3°/h | |
随机游走 | 0. 13°/√hr | |
零偏重复性受温度影响 | 0.3°/s | |
主MEMS加速度计精度 | 测量范围 | ±392m/s2 (ADIS16507) ±78.4m/s2 (ADIS16505) |
零偏稳定性 | 125μm/s2 (ADIS16507) 26.5 μm/s2 (ADIS16505) | |
加表通道最小分辨率 | 12.25mm/s2 (ADIS16507) 2.45 mm/s2 (ADIS16505) | |
惯导温度测量精度 | 测量范围 | -40~85℃ |
测量精度 | 0.1℃ | |
输出接口(RS422) | 100Hz@115200bps 1起始位,8位数据位,1停止位,无奇偶校验位。 | |
物理特性 | 体积:37*32*9(L*W*H mm)重量:<10g 电源: 5V 功耗:<1W |
、
三、IMU惯导模块驱动时序设计
笔者对比了ADI公司关于ADIS1605和ADIS16507的PDF文档,确定两款MEMS仅仅在加速度通道测量量程上有差别以外,其它技术指标(如:芯片内部寄存器、硬件电气接口、引脚定义以及产品尺寸等因素)几乎一样,且笔者开发的驱动程序能够适用于两款MEMS传感器。
产品上电后,需要对MEMS传感器的部分寄存器进行配置,即完成MEMS上电后的初始化,笔者通过spi通信方式对MEMS传感器的寄存器进行配置, spi的DIN端最高位为“1”表示对寄存器进行写操作,之后写操作需要在DIN端依次完成寄存器地址值A6~A0和待写入数值的写入,且低位寄存器地址和数值先写入,高位寄存器地址和数值后写入。寄存器配置过程需要CS、SCLK和DIN三个信号配合完成,具体配置操作时序如下图2所示:
![]() | ![]() | ||
图2 MEMS传感器写操作时序图
产品上电后,笔者首先完成对MEMS传感器部分寄存器的配置处理,之后笔者还需要对将上述被配置寄存器的值进行读取,确保之前的配置工作准确无误,即确定写入寄存器的值和从寄存器中读取的值完全一致,MEMS传感器上电后的初始化工作完毕。寄存器的读取时序需要确定DIN端的最高位为“0”表示对寄存器进行读操作,且读操作仅仅只需要将操作寄存器的低位地址送到DIN端,之后紧跟的数据全部写入“00000000”,整个读操作需要CS、SCLK、DIN和DOUT四个信号共同配合,在DIN端输出“0”、寄存器低位地址信息和“00000000”信号,同时在DOUT端获取上一个读操作地址的寄存器信息。笔者初始化对三个寄存器进行了配置,为确保三个寄存器的值完整的读出,笔者将最后一个配置的寄存器读取两次。MEMS传感器寄存器读操作时序如下图3所示:
![]() |
图3 MEMS传感器寄存器读操作时序
四、IMU惯导模块工作模块设计
为了保证IMU惯导模块稳定工作,笔者主要对FILT_CTRL、MSC_ CTRL以及DEC_RATE三个寄存器进行配置。
其中FILT_CTRL主要对MEMS传感器内部的巴特利特窗口滤波器的阶数进行设置,阶数越高滤波效果越好,精度会更好,但是滤波器的解算时间也会更长,如何确保单位时间内完成解算同时获取更好的测量精度是需要设计者权衡的,解算周期和测量精度两个方面是如何设置FILT_CTRL寄存器需要考虑的两个主要因素。
MSC_ CTRL寄存器对MEMS传感器的工作模式进行设置,通过具体该寄存器的具体“位”可以设置DR端和SYNC端的指示信号的极性;用户可以提供1900~2100Hz的外部时钟作为MEMS传感器数据处理时钟,也可以将GPS的秒脉冲输出给MEMS传感器作为数据处理周期,还可以使用MEMS传感器内部2000Hz时钟作为处理周期时间,同时将SYNC端作为输出信号,将该信号传输给其它传感器,实现多传感器的处理的同步;用户可以通过特定位的设置使能或不使能加速度通道补偿陀螺通道;通过特定位的设置使能或不使能陀螺通道对加速度通道的修正;通过特定位的设置确定各个通道数据读出的格式;通过特定位的设置IMU惯导模块是工作在惯性测量工作模式还是工作在惯性导航输出工作模式。
DEC_RATE寄存器对MEMS传感器最终的数据输出频率进行设置,最高可以实现2000Hz即500us时间输出一次测量结果,笔者通过更改该寄存器的值,最终实现100Hz或者200Hz惯性信息数据更新即输出。
五、IMU惯导模块测量信息的读出与判读
笔者通过MSC_ CTRL寄存器将MEMS传感器设置为16-bit burst data工作模式,在读出上述结果后,笔者将读出值中的和校验结果与读出有效加速度和陀螺通道值进行自主解算的结果进行比对,比对结果一致则表示本周期接收到的数据有效,16-bit burst data工作模式数据格式如下图4所示。
![]() ![]() |
图4 16-bit burst data工作模式
六、IMU惯导模块测量信息PC端应用、
笔者通过422通信口获取IMU惯导模块实时测量的惯性信息,同时还可以通过该通信口实现IMU惯导模块工作模式切换。422通信口传输速率为115200bps,1起始位,8位数据位,1停止位,无奇偶校验位。笔者在PC端开发的IMU惯导模块测试应用程序界面如图5所示。
图5 PC端开发的IMU惯导模块测试应用程序界面
总结
本文较详细的介绍了如何利用ADIS16505/16507MEMS传感器完成IMU惯导模块驱动的设计与实现。