×
FPGA/DSP > 可编程逻辑 > 详情

基于DSP的室内惯性导航系统设计

发布时间:2020-05-16 发布时间:
|
轮式遥控机器人已经应用在地震、火灾等一些危险的室内区域进行救援和探测,或执行反恐任务。由于在这些特殊的环境下存在诸多的未知因素,且室内无GPS信号,人们不得不依靠先进的科学技术和仪器来获取遥控机器人小车的导航信息。但是目前轮式运动小车主要采用的导航传感方式有视觉、光电、超声、里程计等,比较容易被外界环境干扰,不能满足广大市场的需求。

但是惯性导航装备安置在运载体内,工作时不依赖外界信息,也不向外界辐射能量,不容易遭到滋扰,是一种自立式导航系统,优于上述的导航传感例子。 并且近年来MEMS(微机电系统)结构的惯性传感器随半导体技术的进步得到了迅速发展,使其低成本而高精度的期望得到了实现。MEMS惯性传感器组成的惯性导航装置结合轮式小车的里程计,能够产生导航和定位信息,减少对外部环境的倚赖,实现在外部环境条件(例如光照、墙壁材质)未知情况下的导航。

由于是在室内区域进行勘测搜索,小车的运行特点与一般的飞机、船、车不同,它的运动轨迹变化较快,且在运动时存在一定的振动,因此常用的卡尔曼滤波算法需要进一步改进才能应用。惯性传感器采集数据量大,且进行惯性导航时需要大量的浮点运算,因此本项目采用了具有强大数字信号处理功能的DSP 28335芯片和PC控制终端,实现惯性传感器的数据采集、时序逻辑控制、与驱动系统通信和地图显示功能, 具有体积小、成本低、功耗低等优点。

综上所述,本文将选用低成本的MEMS器件,结合DSP和卡尔曼滤波算法,能实现较高精度的轮式小车导航和定位。

1 系统体系架构

本文的目标是研制一个轮式小车惯性导航系统,能够通过wifi实现PC终端和手持终端控制轮式小车行动以及小车所采集数据的传输。

TI公司的浮点DSP TMS320F28335芯片作为主数字信号处理器,采集各MEMS惯性传感器的信号并处理,处理结果通过WIFI将数据输送到PC终端;PC终端负责显示定位结果和地图显示,并向小车驱动系统发送控制命令,同时接收驱动系统反馈的里程计信息。

2. 硬件计划及详细实现

硬件设计上,主要分为核心板和驱动板。核心板包括DSP最小系统,JTAG下载口设计,系统电源供给电路和MEMS传感器,WIFI模块等。而驱动板主要设计的内容是直流大电机的驱动模块。

2.1 核心板设计

2.1.1 电源电路设计

TMS320F28335工作时需要的电压不同:内核电压(1.9 V)与I/O供电电压(3.3 V),对于电源比较敏感,所以电源部分利用两路输出电源器件TPS767D318来实现。同时根据仿真实验和实际焊接电路的测试,电源模块输出端最好使用一些容值不小于10uf的保护电容,且不能使用贴片电容,否则工作不稳定。

在电源设计中,考虑到TPS767D318芯片可以产生复位信号,所以在核心板上并没有再另外为DSP设计复位电路。

2.1.2 JTAG下载口电路设计

按照仿真器的通信引脚选择14脚的仿真接口,同时要注意EMU0和EMUl信号必须通过上拉电阻连接至电源,其中上拉电阻为10kΩ。

2.2 小车驱动板设计

在本装置中,我们采用BTS7960作为直流电机驱动芯片。BTS7960是集成的大电流半桥驱动,其内部包含了一片NMOS、一片PMOS和一片半桥门集驱动,在IOUT = 9 A,VS= 13.5V,Tj = 25 °C 时,其内阻抗为17mΩ。装置采用了两个直流大电机。

在电机驱动这里,需要注意一个细节,就是电机在转动过程中有可能会产生反向的电动势,使电流一瞬间过大,导致单片机复位甚至有可能烧坏芯片。因此在设计过程中,可以考虑在单片机PWM输入到电机驱动接口的地方添加光耦器件隔离或者二极管。驱动板选择了tlp521-4这种光耦器件设计隔离电路,减小电压的干扰,减化电路的设计,同时也把四路PWM的I/O电平从3.3上拉到5V。

3.软件设计及具体实现

在软件程序设计上,主要应用九自由度惯性导航传感器(ITG3200+ADXL345+HMC5883L ),结合DSP和卡尔曼滤波算法,能实现较高精度的轮式小车导航和定位。

3.1传感器器件程序设计

九自由度惯性导航传感器在许多领域都得到了实际的应用,如无人机,救灾机器人等。它包括ITG3200三轴陀螺仪,HMC5883L三轴磁感应传感器和ADXL345三轴加速度传感器,所以可以得到加速度,角速度以及角度实时的数值。

ITG3200是MEMS三轴陀螺仪,可以测量小车的旋转角速度,同时也可以通过积分把角速度转换为小车的倾角。程序中,ITG3200的初始化如下:

unsigned char Init_ITG3200(void)

{

unsigned char Return1,Return2,Return3,Return4;

unsigned char Data;

Data = 0x00;

Return1 = IIC_WriteData(0xD0, 0x3E, &Data, 1);

Data = 0x07;



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
FPGA芯片在编程器烧录器里的应用