Direction方向传感器系统.ppt_第1页
Direction方向传感器系统.ppt_第2页
Direction方向传感器系统.ppt_第3页
Direction方向传感器系统.ppt_第4页
Direction方向传感器系统.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、方向传感器系统,苏州大学飞思卡尔嵌入式系统示范实验室,介绍内容,系统概述 系统原理 硬件平台的搭建 软件设计 总结 系统演示,系统概述,1.系统背景 校企项目合作。,系统概述,2.开发过程 本科生毕业设计:雏形 研究生的优化:半成品 公司的包装:成品,磁电阻传感器的测量原理,物体在磁场中电阻发生变化的现象称为磁电阻效应。 基于霍尔效应的普通磁电阻效应 各向异性磁电阻效应,由于坡莫(NiFe) 合金在弱磁场下的电阻变化率较大, 因此适用于适合于弱磁场条件下使用。 各向异性磁电阻传感器就是以薄膜加工技术在硅片上制备坡莫合金薄膜再经微细加工技术制成磁电阻元件。由4 个磁电阻元件连成惠斯通电桥的形式,

2、 从而构成了一维磁电阻传感器。,磁阻传感器HMC1022,磁阻传感器按4元件惠斯顿电桥配置它将磁场转换成差分输出电压,并能传感强度低至30高斯的磁场。,方向角,地磁场磁感应强度约为0. 50. 6,与地球表面平行的水平分量总是指向地磁北极,这是地磁导航的依据。在水平面内,知道了磁场在前向分量Hx 及右向分量Hy 就可由下式计算方向角 = arctan (Hy /Hx ),硬件平台的搭建,1.方位测定系统原理 方位测定系统的结构框图如下。,硬件平台的搭建,2.硬件选择 (1)磁电阻传感器:Honeywell公司HMC1022芯片 (2)放大器:AMP04芯片 (3)主控芯片:Freescale公

3、司MC908MR8芯片(4)HMC1022的复位/置位电路为IRF7105芯片 (5)SCI电平电路:MAX3232芯片,硬件平台,硬件平台的搭建,3.硬件连接,软件设计,软件设计与实现,1.初始化程序 MC908MR8系统初始化,设置CONFIG寄存器及内部总线工作频率。 SCI进行初始化,主要进行比特率设置、通信格式设置、发送接收数据方式设置等。 A/D转换初始化时对A/D转换输入时钟寄存器ADCLK写入控制字节,决定时钟输入源是内部总线还是外部晶振,决定分频系数。,软件设计与实现,2.A/D采样程序 A/D转换程序采用包含了中值滤波与平均值滤波的复合滤波方式。程序中的中值滤波,就是对三次

4、采样值比较大小,取中间的一个。所谓平均值滤波,就是N个采样值求平均。而中值滤波与平均值滤波的复合滤波方式,就是先进行中值滤波,在进行平均值滤波。,软件设计与实现,3.数值回归处理程序 确定载体纵轴X相对于磁北的航向角。由磁阻传感器可以直接得出地磁场的水平分量Hx,Hy。 Hx Hcos Hy Hsin 因此载体相对于磁北的航向角为 arctan(Hy/Hx),总结-硬件的考虑,MCU选择问题,A/D采样电路的设计,总结- 软件的优化实例(1),对于测定的方位角(PosAngle)需要分解出百位、十位及个位数,C语言的编程如下: hundredNum= PosAngle / 100; tenNu

5、m =( PosAngle %100)/10; unitNum = PosAngle %10;,算法分析,这种方法是可行的,但是效率低。 在执行除法和求模的运算时,调用了内部子程序“_divmodu_16X16_16”进行16进制的除法和求模运算。 通过阅读该子程序的汇编代码,发现除法运算是通过减法来实现的, “PosAngle /100”是每次将PosAngle减去100,直到PosAngle小于100为止,循环减的次数是商。 假如PosAngle=299 则“PosAngle/100”需要进行2次循环减法, “(PosAngle %100)/10”需要进行2+9=11次循环减法, “Pos

6、Angle%10” 需要进行9循环减法 每一次减法需要大约80个指令周期,则上述程序需要(2+11+9)*80=1760个指令周期,改进,假如熟悉Freescale HC08的指令系统,其中有一条除法指令:DIV,7个指令周期。它是将寄存器H和A组成的16位数除以寄存器X(8位数),除法运算后,商存储在A中,余数存储在H中,即DIV是16位数除以8位数,商必须是8位。而编译器在编译时不知道相除的结果是否是8位,所以不能使用DIV指令。但在本问题中,由于PosAngle的范围是0360,上述除法运算完全可以使用DIV指令。采用C语言中嵌入下面的汇编子程序,可以大大提高程序的执行效率。,嵌入的汇编

7、子程序,*- DivMod16X8_8-* *功能:使用DIV指令,分解16位整数的百位数、十位数和个位数 * *入口:全局变量PosAngle(0360) * *出口:全局变量hundredNum、tenNum、unitNum * *说明:使用寄存器A、H、X,但不影响其他程序对这些寄存器的使用 * *-* _DivMod16X8_8: ;(1)进栈 PSHH PSHX PSHA ;(4)出栈 PULA PULX PULH RTS,;(2)百位数 LDHX _PosAngle TXA LDX #100 DIV STA _hundredNum PSHH ;(3)十位数和个位数 PULA ;H-

8、A CLRH LDX #10 DIV STA _tenNum PSHH PULA STA _unitNum,总结- 软件的优化实例(2),通过A/D采集了两个16位整数值xVaule和yValue,方位角的计算公式如下: PosAngle= atan(Y/X)*180/PI 如果采用上述公式求解方向角,C语言程序非常简单,就是上述公式。的确,通过调用内部函数atan可以实现上述功能,但这种方法在低端嵌入式软件中是一种很糟糕的方法。,算法分析,用HC08编译器编译后,需要占用2764字节的程序存储空间。一条语句就要占MR8(8KB Flash)三分之一的存储空间,2764/(8*1024)0.3

9、3。再仔细查看list文件,库函数atan在实现时使用浮点运算,通过泰勒展开式来实现的,而通常的8位、16位微处理器没有协处理器,对于浮点运算的处理效率极低。因此,从嵌入式软件的角度来审视这条语句,它是一个不好的选择。,算法改进,此时需要使用查表取代数学函数的编程算法,将atan() *180/PI预先计算出来,建一张表,根据值的不同,查表就可以很快地计算出角度。建立以(250*Y/X)的值为表项,把Y扩大250倍,再除以X,再四舍五入,建立整数值的一维线性表: const unsigned char ATanTable=0,4,9,13,17,22,26,31,35,40,44,49,53,

10、58,62,67,72,76,81,86,91,96,101,106,111,117,122,127,133,139,144,150,156,162,169,175,182,188,195,202,210, 217,225,233,241,250; 一维线性表的下标就是atan(Y/X)*180/PI所对应的角度,假如250*Y/X=12,则角度值为3。这张表只有045,其原因在于数学函数tan(Y/X)= 90-tan(X/Y),在查表前先比较Y和X的大小。,总结- 软件的优化实例(3),基于上述问题的查表算法也值得思考。在排好序的表中查找,二分查找算法是优于顺序查找算法。,但对于表ATan

11、Table,其数值的递增最小值为4,最大值为9,如果顺序查找点的初始位置不是从0开始,从SearchValue/6的位置开始,顺序查找的次数和二分查找次数相当,同时顺序查找算法实现简单。,改进算法,/*SearchAtan:查表求Atan函数-* *功 能:查表求Atan值 * *参 数: SearchValue * *返 回:045 * *-*/ unsigned char SearchAtan(unsigned char SearchValue) unsigned char CurPoint; if(SearchValue=250) return 45; CurPoint=SearchValue

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论