[发明专利]一种基于硬件语言的航向角指示仪有效
申请号: | 201410546130.5 | 申请日: | 2014-10-16 |
公开(公告)号: | CN104406584B | 公开(公告)日: | 2017-10-31 |
发明(设计)人: | 孙华;吴宗凯;张岩;薛晶晶;李昊俊 | 申请(专利权)人: | 哈尔滨工程大学 |
主分类号: | G01C21/08 | 分类号: | G01C21/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150001 黑龙江省哈尔滨市南岗区*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 硬件 语言 航向 指示 | ||
1.一种基于硬件语言的航向角指示仪,包括:地磁传感器、FPGA控制器、数码管,其特征是:使用FPGA作为控制器,地磁传感器接收到载体的地磁数据,通过I2C总线把接收数据传给FPGA,经过FPGA进行数据处理,经数据处理后实现对地磁传感器所采集信号的计算、校正,最后将载体的航向角输出显示;
所述的地磁传感器为MAG3110型三轴地磁传感器模块;
所述的FPGA与地磁传感器的通信方式采用的是I2C方式,根据I2C总线的时序对地磁信息进行采集;
所述的数码管为三位共阳数码管,作为航向角指示仪的显示器采用静态显示的方式;
(1)地磁传感器与FPGA的数据传输
根据I2C总线协议时序图以及地磁传感器的操作时序图,在FPGA中使用硬件描述语言建立一个I2C通行模块,完成地磁传感器与FPGA磁场测量信息的传输,地磁信号采集程序具体步骤如下:
第一步:设置一个计数器,输出周期为10us的方波作为SCL信号;并设置每个周期的10us为下降沿,2.5us为低电平,5us为上升沿,7.5us为高电平;
第二步:当SCL第一个高电平时,SDA给低电平;
第三步:在之后的八个低电平时,给SDA赋MAG3110写地址0x1C;
第四步:在接着的下降沿时,让SDA高阻态输出,结束一次赋值;
第五步:在之后的八个低电平时,给SDA赋目标寄存器地址;
第六步:在接着的下降沿时,让SDA高阻态输出,结束一次赋值;
第七步:判断是写操作还是读操作,写操作:在之后的八个低电平时,给SDA赋数据,结束;读操作:重复起始位,并进入下一步;
第八步:当SCL第一个高电平时,SDA给低电平;
第九步:在之后的八个低电平时,给SDA赋MAG3110读地址(0x1D);然后,在接着的下降沿时,让SDA高阻态输出,结束一次赋值;
第十步:在之后的八个高电平时,从SDA读取数据,结束;
第十一步:输出结束信号;
FPGA与地磁传感器的通信方式采用的是I2C方式,根据I2C总线的时序对地磁信息进行采集;初始化部分,先将MAG3110设为STANDBY模式配置OSR,ODR将MAG3110设为ACTIVE模式,传感器开始转化数据具体程序步骤如下:
第一步:写操作允许,对寄存器CTRL_REG1进行赋值0x00;
第二步:上一步结束后,再对寄存器CTRL_REG1进行赋值0x30;
第三步:上一步结束后,再对寄存器CTRL_REG1进行赋值0x31;
数据读取部分,读DR_STATUS状态寄存器,如果DR_STATUS&0x08=1,一次转换已经完成,此时读取数据;读OUT_X_MSB(0x01)、OUT_X_LSB(0x02)、OUT_Y_MSB(0x03)、OUT_Y_LSB(0x04)、OUT_Z_MSB(0x05)、OUT_Z_LSB(0x06)寄存器,分别得到X、Y、Z三轴十六位的数据;此时转动MAG3110,三轴数据会发生变化;具体程序步骤如下:
第一步:读操作允许,读取寄存器DR_STATUS的值;
第二步:上一步结束后,判断读取的数据的第四位数据是否为1,是:则进入下一步;不是:则返回上一步;
第三步:设置寄存器OUT_X_MSB(0x01);把数据存入xData数组的高八位;
第四步:设置寄存器OUT_X_LSB(0x02);把数据存入xData数组的低八位;
第五步:设置寄存器OUT_Y_MSB(0x03);把数据存入yData数组的高八位;
第六步:设置寄存器OUT_Y_LSB(0x04);把数据存入yData数组的低八位;
第七步:设置寄存器OUT_Z_MSB(0x05);把数据存入zData数组的高八位;
第八步:设置寄存器OUT_Z_LSB(0x06);把数据存入zData数组的低八位;
第九步:设置x坐标值为xData,y坐标值为yData,z坐标值为zData,输出结束信号;
(2)地磁场修正
在程序中对于受到干扰时地磁场形状进行修正,使之经过拉伸、平移变换成原点位于圆心的规则圆;具体程序步骤如下:
第一步:把x坐标值赋给XMAX和XMIN数组;
第二步:判断新的x坐标值与XMAX和XMIN的大小关系,如果大于XMAX,则赋给XMAX;如果小于XMIN,则赋给XMIN;并输出X0为XMAX和XMIN的平均值;
则XO、YO为X、Y平面的原点,原受干扰的椭圆被修正成了一个圆;通过测量出载体在X、Y轴的磁场强度,再应用反三角函数,使用泰勒级数展开即可求出载体的航向角;
根据泰勒级数在0处展开的公式:
选择保留到5次方项;先求出然后分三步求出接下去的三项;最后一步输出acrtan(x)的值,即角度值,然后再输出一个结束信号;
(3)载体的航向与真北的夹角
数据处理程序流程包括:
等待角度计算完成后;
第一步:判断X坐标值是否等于均值X0;如果是,那么再判断Y坐标值是否大于均值Y0,是则角度等于90度并且需加上地区的地磁北与真北夹角度;如果Y坐标值不大于均值Y0;则角度等于270度再加上地区的地磁北与真北夹角度;
第二步:判断Y坐标值是否等于均值Y0;如果是,那么再判断X坐标值是否大于均值X0,是则角度等于0度并且需加上地区的地磁北与真北夹角度;如果X坐标值不大于均值X0;则角度等于180度再加上地区的地磁北与真北夹角度;
第三步:判断X坐标值和Y坐标值是否都大于均值?是则角度等于计算得出的角度值再加上地区的地磁北与真北夹角度;不是,进入下一步;
第四步:判断是否是X小于均值而Y大于均值?是则角度等于180度减计算得到的角度再加上地区的地磁北与真北夹角度;不是则进入下一步;
第五步:判断是否是X小于均值而Y小于均值?是则角度等于180度加计算得到的角度再加上地区的地磁北与真北夹角度;不是则进入下一步;
第六步:判断是否X大于均值而Y小于均值且计算得到的角度是否大于地区的地磁北与真北夹角度?是则角度等于360度减计算得到的角度再加上地区的地磁北与真北夹角度;不是则进入下一步;
第七步:判断是否X大于均值而Y小于均值且计算得到的角度是否小于地区的地磁北与真北夹角度?是则角度等于地区的地磁北与真北夹角度减计算得到的角度;
第八步:最后输出处理后的角度值;
(4)数码管显示模块
航向角指示仪的显示器使用的是三位共阳数码管,采用静态显示的方式,具体显示程序步骤如下:
第一步:初始化显示数组display[],因为使用的是共阳的数码管,所以给display[]赋的是共阳数码管的0~9显示码;
第二步:得到处理后的角度值后,计算每位数码管显示的数字,通过取整取余计算得到角度值的各位数字;并按顺序始终显示出来。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410546130.5/1.html,转载请声明来源钻瓜专利网。