基于ARM9平台的电子指南针的设计
摘要:针对指南针精度与显示界面的问题,在ARM9的开发平台上,设计了一款界面美观且能够实时显示方位、温度和时间的电子指南针。该系统采用了灵敏度和精度高的磁力传感器MAG3110检测方位,采用了智能型温度传感器DS18B20检测温度,并选择了Linux Qt作为电子指南针图形界面的开发平台。实验结果表明,指南针方位精度达±2°,温度精度达±0.5℃,能够使用在普通导航领域上。
0 引言
指南针在我国已有悠久的历史,作为一个重要的导航工具,广泛的运用在生活各领域。随着半导体技术的飞速发展,如今的指南针不仅体积小,灵敏度和精确度都已得到很大的提高,而舒适清晰,简单快捷的人机交互界面更是日益追求的目标。本文采用一款小体积、低功耗的数字磁力计MAG3110采集地磁场,它采用标准IIC串行接口,输出数据速率达80 Hz,并且可自我消除误差,并使用数字温度传感器S18B20,它具有线路简单,体积小,测温范围为-55~+125℃,精度为±0.5℃。选择这两款数字芯片,可满足灵敏度和精度的要求,选择Linux Qt作为电子指南针GUI界面的设计可达到舒适清晰,美观精巧的界面效果。
1 指南针图形界面的选择
现行比较流行的GUI有MiniGui,MicroWindows,OpenGUI,Qt/Embedded。MiniGuI是国内开发的图形界面系统,图形设备层次过于抽象,图形功能不够完善。MicroWindows源码开放,但其许多图形引擎算法低下,控件或构件的实现还不是很完备,系统整体不够完善。Open GUI比较适合X86平台,内核采用汇编实现,移植性不好,不支持多进程,目前发展较缓慢。Qt/Embedded也是开源的,其库采用C++封装,完全面向对象。Qt/Embedded开发简洁,界面美观、色彩配比好,具有丰富的API,使用与Qt/Windows和Qt/X11完全一致的API接口,许多基于Qt的程序可以非常方便地移植到嵌入式设备上。本文选择Qt作为指南针GUI界面的开发平台。
2 指南针测量原理
本文设计的是二维电子指南针,其数学模型如图1所示。x轴与指南针向前移动方向重合,y轴与指南针横向方向重合,在不考虑磁倾角的情况下,地球磁场水平面分布,即只有图中h磁北方向,因此z轴感测到的磁场为0。Hx,Hy分别为水平面两个轴感测到的磁场强度分量。
定义指南针向前移动的方向(x轴方向)与磁北方向的夹角为地磁航向角β,其与地理北极的夹角为地理航向角ψ,由图1可知ψ=β±γ,γ为磁偏角,已知磁偏角,求出地磁航向角β即可求得指南针的地理航向角。利用磁传感器检测到的Hx,Hy按公式:
β=arctan(Hx/Hy)
可求得地磁航向角。
![](../img/eep/emb/emb-51931wjurdega51v.jpg)
3 系统硬件设计
3.1 硬件框架设计
本设计系统的硬件设计框架如图2所示,采用ARM9作为处理器,使用MINI2440作为实验板,外加温度传感器DS18B20和磁力传感器MAG31 10模块电路,可借助ARM9开发平台丰富的外围接口资源进行开发与调试。如其LCD接口作为显示模块,JTAG接口作为调试模块,USB接口作上传或下载程序模块等。
![](../img/eep/emb/emb-519323emkq52lqaj.jpg)
3.2 接口电路
3.2.1 磁力传感器MAG3110接口电路
MAG3110是款数字芯片,采用标准I2C串行接口,其电路如图3所示,SCL和SDA为I2C串行接口的时钟和数据线。MAG3110内部集成了信号处理电路,A/D转换电路,相比其他模拟芯片,其精度更高,误差更小。
![](../img/eep/emb/emb-51933wwy2ozi0udv.jpg)
3.2.2 温度传感器DS18B20接口电路
DS18B20是单线器件,接口电路很简单,数据输入输出就一根线,其电路如图4所示,DQ为数据输入输出线。
![](../img/eep/emb/emb-51934em2odjoe5vp.jpg)
4 系统软件设计
4.1 软件框架
如图5所示为系统的软件框架,在底层驱动添加了温度传感器DS18B20和磁传感器MAG3110的驱动,在应用层,分别打开两个驱动的设备节点采集它们的数据,在Qt环境下将DS18B20和MAG3110的数据处理并显示。
![](../img/eep/emb/emb-51935lgeupp5ptic.jpg)
4.2 软件模块的实现
4.2.1 温度传感器模块实现
温度传感器底层采用字符驱动框架实现,其读写操作在系统调用函数read,write中实现。应用程序打开其设备节点,就可以读取底层温度传感器的数据,其实现流程如图6所示。
![](../img/eep/emb/emb-51936wvn3ffuceuu.jpg)
4.2.2 磁传感器模块实现
磁传感器底层驱动采用I2C驱动框架。其读写操作在系统调用函数read,write中实现,应用层打开其设备节点就可读取数据,其实现流程见图6。
4.3 界面设计
4.3.1 QWT5.0.2库移植
如图7所示为指南针的界面。
![](../img/eep/emb/emb-51937otr1ddsx2qe.jpg)
Qt开发环境下没有这样的控件,需要移植包含此控件的库(QWT5.0.2)。本设计需要移植到X86和ARM9平台。如图8所示,Qwtwidgets为移植到X86平台上的库,其中包括许多常用的仪表控件,其中QwtCompass控件就是图7所示的控件。
![](../img/eep/emb/emb-51938cg4sclczm1p.jpg)
4.3.2 界面实现
信号和槽机制是Qt的核心机制,是一种高级接口,应用于对象之间的通信,是Qt区
方位精度 显示界面 电子指南针 ARM9 磁传感器 温度传感器 相关文章:
- 革新2410D开发板试用手记(04-21)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- 嵌入式Web服务器移植与测试(03-03)
- 基于ARM9与Linux的门禁监控系统软件设计(03-08)
- 嵌入式Linux下基于ARM9的媒体播放的设计(03-27)
- SamsungS3C2440平台上的VxworksBSP移植(10-28)