基于STM32的惯性姿态模拟系统
2018-07-26王建政林克宾
王建政,林克宾
(91049 部队 ,山东 青岛 266700)
0 引言
目前,惯性系统以其高精度、长航时、自主性等优势,在航空航天、海洋探测、军事装备等方面有广泛应用,由于惯性导航系统的造价高昂、其标准的工作要求较高,需要专业的高精尖设备辅助。因此,研究一种通用型,能够迅速模拟各种姿态的惯性姿态模拟系统,就变得非常有必要了。
论文提供一种基于嵌入式系统的便携式、智能化惯性姿态模拟系统,该系统采用多处理器架构,采用MEMS[6]惯性测量组件,采用高精度驱动算法,使系统完成高精度驱动、低误差测量,并加入北斗导航模块,可以完成快速标定和对准。
1 系统架构
系统的组成框图如图1所示:
图1 系统总体架构Fig 1 System architecture
三轴姿态传感器主要用于采集载体的方位、偏航和横滚信息,并将采集到的数字信息输送至三轴姿态采集板,采集板完成对姿态信息的数字转换、数据传输等功能,将转换后的结果送至核心控制板,完成对数据的进一步加工解算;核心控制板是系统的核心控制板,主要完成数据采集、驱动信号生成、系统通信、命令解析和上位机通信等功能,由于核心控制板的任务量较大,采用分布式多处理器架构,各处理器相互配合,共同完成核心控制板的各项功能。
2 系统组成
2.1 系统硬件组成
2.1.1 三轴姿态传感器
三轴姿态传感器采用MEMS(Micro-Electro-Mechanical System,即微机电系统,指尺寸在几毫米乃至更小的高科技装置)系统。并采用北斗定位系统辅助定位,目前,系统根据标定的任务精度,采用的是ADI(亚德诺半导体)公司的ADIS16488惯性测量组件[5],该组件是一款完整的惯性系统,内置一个三轴陀螺仪、一个三轴加速度计、一个三轴磁力计和一个压力传感器。每个惯性传感器都实现了业界领先的技术与信号调理技术的完美结合,可提供优化的动态性能。工厂校准针对各传感器的灵敏度、偏置、对准和线性加速度(陀螺偏置)进行校准。因此,各传感器均有其自己的动态补偿公式,可提供精确的传感器测量。其组成如图2所示:
图2 ADIS16488系统框图Fig 2 Block diagram of ADIS16488 system
ADIS16488是一款自治传感器系统,当存在有效电源时,它会自动启动。完成初始化过程后,它开始采样、处理以及将校准的传感器数据载入输出寄存器,通过SPI端口可访问该数据。SPI端口通常连接到嵌入式处理器的兼容端口,连接图参见图3。
四个SPI信号支持同步串行数据传输。复位线连接到VDD,正常工作期间断开。在工厂默认配置下,DIO2引脚提供数据就绪信号;当输出数据寄存器中有新数据可用时,该引脚变为高电平。
图3 ADIS16488接线图Fig 3 ADIS6488 wiring diagram
这里需要注意的是ADIS16488需要3.3V稳定直流电源供电,因此,如果用于采集数据的上位机不满足条件时,需要进行电源转换。
ADIS16488对外采用SPI数字接口对外通信,采用全双工工作模式,具有传输速度快、当进行数据采集时,ADIS16488作为从机,进行通信,ADIS16488由于内部采用了DSP处理器,转换效率非常高,可以达到2.46ksps,完全可以满足系统对传感器采集的需要,其中,ADIS16488的工作模式及配置如表1所示:
表1 ADIS16488的配置Tab 1 The configuration of ADIS16488
2.1.2 三轴姿态采集板
ADIS16488的封装接口如图4所示:
图4 ADIS16488引脚封装Fig 4 ADIS16488 pin package
为了使ADIS16488的接口进行匹配,需要使用数据采集板,用于匹配接口和电平信息,同时方便进行安装,接口采集板采用ADI公司配套采集板,如图5所示:
图5 数据采集卡pcb板图Fig 5 PCB board diagram of a data acquisition card
在该采集板卡基础上,增加了电源自动适配装置,采用HT7133芯片,可以适配4V-15V的直流电源,进行稳定供电,为ADIS16488提供干净持续的3.3V直流电,并为SPI通信提供稳定的电平和驱动。
2.1.3 核心控制板
核心控制板是系统的控制核心,主要完成与三轴姿态传感器的的数据采集与控制,数据加工与使用、与计算机系统通信、驱动三轴姿态平台等功能,由于核心控制板中的数据量大,功能多,单一的处理器很难完成如此艰巨的任务,因此,采用多处理器架构,划分各个功能模块,使各功能模块与相应MCU进行功能映射,其中,MCU与各个功能模块之间的映射关系如图6所示:
图6 多处理器模块划分功能映射图Fig 6 Multiprocessor module partition function mapping
由图6可以看出,处理器1(MCU1)主要负责与三轴姿态传感器进行数据通信和数据解码,并将处理结果反馈给处理器2(MCU2),处理器2为多处理器架构中的核心控制模块,通过CAN总线完成与上位机的通信,对上位机的命令进行解析、执行,通过USART(异步串行通信)接口与处理器1和处理器3进行通信,完成相应的数据采集、平台驱动等功能,处理器3与姿态驱动平台进行通信,主要完成步进电机驱动、PWM(脉冲宽度调制)控制、速度调制等功能,用于执行完成对载体的姿态控制。
处理器主要采用MCU(微处理器),采用意法半导体的STM32F103ZET6[3-4],如图7所示:
图7 STM32F103ZET6引脚图Fig 7 STM32F103ZET6 pin diagram
该微处理器为COTEX-M3 32位的RISC(精简指令集)内核,工作频率为72MHz,内置高速存储器(高达512K字节的闪存和64K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含3个12位的ADC、4个通用16位定时器和2个PWM定时器,还包含标准和先进的通信接口:多达2个I2C接口、3个SPI接口、2个I2S接口、1个SDIO接口、5个USART接口、一个USB接口和一个CAN接口,供电电压2.0V至3.6V,满足一系列的省电模式保证低功耗应用的要求。
该处理器由于具有丰富的可以完成与ADIS16488的直接通信。同时,可以利用PWM定时器,产生PWM波,用于完成与姿态驱动平台之间的通信和速度调节。
2.1.4 三轴姿态驱动平台及平台驱动板
三轴姿态驱动平台主要完成载体姿态的驱动变化,基于经费原因,在某型手动三轴姿态平台基础上,对其进行了自动化改装,加装了步进电机,并设计了相应的驱动控制板,利用PWM调制控制,可以实现平台的自动高精度姿态控制和快速调制。
三轴姿态驱动平台如图8所示:
图8 三轴转动平台Fig 8 The three axis rotating platform
该平台可以完成Z轴360度,XY轴正负20度范围内的手动调制,因此,通过加装步进电机及其对应的驱动板,完成自动化升级改造。
步进电机驱动芯片采用东芝公司的THB7128芯片,该芯片可以驱动57步进电机,最高耐压40伏,可以进行最多128细分,最大驱动电流为3A,该芯片在3d打印机、雕刻机等高精度工业设备中广泛应用。其不仅点击驱动板如图9所示:
图9 步进电机驱动板Fig 9 Stepping motor drive board
该驱动板一共三块,主要完成步进电机的精度调制和速度控制,采用PWM控制,最大输出电流为3A。
(1)重要系统软件介绍:
系统姿态解算主要采用四元数算法,这里不再赘述,主要介绍ADIS16488的驱动及PWM的调制。
①ADIS16488的数据采集
三轴姿态传感器主要完成三轴姿态的数据采集,其中,加载驱动[1,2]及初始化的代码如下:
static struct spi_board_info board_spi_board_info[]__initdata = {
#if defined(CONFIG_adis16488)
|| defined(CONFIG_adis16480_MODULE)
{
.modalias = "adis16488",
.max_speed_hz = 2000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 0,
.chip_select = 1, /* CS, change it for your board */
.platform_data = NULL, /* No spi_driver specific config */
.mode = SPI_MODE_3,
.irq = IRQ_PF5,
},
#endif
};
剩下的是初始化和采集数据代码等由于比较常规,这里不再赘述,可以参考其数据手册实现。
②PWM调制模块实现
STM32里面集成了PWM模块,因此,通过配置其占空比、输出引脚就可以达到生成PWM波形的目的,可以利用定时器,使PWM波形按照预设的时间和时长进行输出。主要代码如下:
void PWM_cfg()
{
TIM_OCInitTypeDef TimOCInitStructure;
//设置缺省值
TIM_OCStructInit(&TimOCInitStructure);
//PWM模式1输出
TimOCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
//设置占空比,占空比=(CCRx/ARR)*100%或(TIM_Pulse/TIM_Period)*100%
TimOCInitStructure.TIM_Pulse = dutyfactor * 7200 /100;
//TIM输出比较极性高
TimOCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
//使能输出状态 TimOCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
//TIM3的CH2输出
TIM_OC2Init(TIM3, &TimOCInitStructure);
//设置TIM3的PWM输出为使能
TIM_CtrlPWMOutputs(TIM3,ENABLE);
}
3 结论
论文介绍了一种基于STM32的小型化、便携式惯性姿态模拟系统,该系统具有体积小、响应速度快等优点,在载体快速对正、载体状态模拟等方面有较高的应用价值,后续将进一步对系统进一步优化,增加冲击力等方面功能,有助于提高装备测量的高精度、低成本和智能化。