毕业设计(论文)-基于单片机的电子罗盘设计.doc_第1页
毕业设计(论文)-基于单片机的电子罗盘设计.doc_第2页
毕业设计(论文)-基于单片机的电子罗盘设计.doc_第3页
毕业设计(论文)-基于单片机的电子罗盘设计.doc_第4页
毕业设计(论文)-基于单片机的电子罗盘设计.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

苏州大学本科生毕业设计(论文)应用技术学院本 科 毕 业 论 文题 目:基于单片机的电子罗盘设计 年 级:12电子专 业:电子信息科学与技术学 号:学生姓名:指导教师:职 称:论文提交日期:2015年12月22日31第 31 页基于单片机的电子罗盘设计目 录摘 要3Abstract3第一章 绪论4第1.1节 前言4第1.2节 研究背景4第1.3节 研究目的5第二章 系统总体方案设计6第2.1节 硬件系统设计方案6第2.2节 软件系统设计方案8第三章 系统硬件设计11第3.1节 单片机系统设计11第3.2节 地磁传感器电路设计12第3.3节 OLED显示模块电路设计13第3.4节 总体硬件原理图15第四章 系统软件设计16第4.1节 开发平台介绍16第4.2节 HM5883L传感器驱动程序17第4.3节 OLED模块驱动程序21第五章 系统测试与分析25第5.1节 系统硬件测试25第5.2节 测试数据分析26第六章 总结28参考文献29致谢30附录31摘 要 本文主要介绍磁阻式电子罗盘的工作原理,并详细介绍了磁阻传感器HMC5883L、Arduino开发平台以及ATMEGA8单片机的磁阻式电子罗盘的硬件设计;磁阻传感器HMC5883L可由单片机通过IIC数据获取寄存器数据,利用ATMEGA8单片机处理信息功能经过分析后,经OLED显示屏显示。分析了系统产生的误差,在研制磁阻电子罗盘原理样机过程中,我对系统做出一定的误差补偿,使其系统的精度提高,并且对系统做经一步的改进。关键词:电子指南针;磁阻传感器;单片机;OLED全套设计加扣3012250582 Abstract This paper mainly introduces the work principle of magnetic reluctance electronic compass, and introduces the hardware design of the HMC5883L, Arduino development platform and ATMEGA8 microcontroller. The reluctance sensor HMC5883L can be used to obtain the data from single chip through the IIC data acquisition, the use of ATMEGA8 microcontroller processing information function after analysis, the OLED display. The error of the system is analyzed. In the process of developing the principle prototype of the magnetic resistance electronic compass, I make certain error compensation to the system, improve the accuracy of the system, and make a further improvement to the system. Keywords: electroniccompass;GMR;MCU;OLED第一章 绪论第1.1节 前 言电子罗盘是一个很关键的导航工具,甚至是在全球定位系统中也需要电子罗盘的功能。可以用来替代原先的机械式罗盘,其具有更高的灵敏度,磁场传感器可以做的非常非常小,更加便携,可以与其他电子系统配合使用,非常适合用于小型移动设备。对于电子罗盘系统,磁阻传感器技术是个很好的解决方案。以往电子罗盘中常使用磁通门传感器,直到磁阻技术的发展,有了一个更具成本效益的方案,他不需要缠绕的线圈,可以很方便的在集成电路中制造,且具有较高的灵敏度,在应用领域内性能优于霍尔元件。本课题研究了电子罗盘的相关技术,设计了一个基于磁阻传感器的电子罗盘,其由单片机控制,通过磁阻传感器获取环境磁场数据并进行滤波和转换处理,可以实现电子罗盘的功能,且处理后的数据可由显示模块实时显示出来。本篇文章给了一个通用的设计样例,既磁阻传感器在电子罗盘中的使用。第1.2节 研究背景地磁导航相对于其他传统的导航方式起起步比较晚,美国的E2System公司在20世纪60年代中期曾经提出了基于地磁异常等值线匹配的系统,后来在获得测量数据后进行了离线实验。此后瑞典的罗德学院在船只导航上也采用了地磁导航的方案并进行了实验的验证,在建立磁场地图后,只需传感器测量的磁场数据与已有地图磁场强度数据库对比即可确定船只的位置,同时,引入时间差的概念后也可计算出船只的行驶速度大小。目前,为用以提高鱼雷和导弹的命中率,美国已经开发出了经度在30米以内的地上和空中地磁导航系统,以及经度在500米以内的水下地磁导航系统。在此前美国就应开始使用无人机进行地磁数据测量实验以完成地磁图,NASA空间中心和一些大学也参与了地磁导航的地面实验。相比国外的大量实验,国内目前的地磁导航研究还在起步阶段,仍处于仿真预研阶段。由于地球本身就具有磁场,其强度为0.3到0.6高斯大小,地球表面磁场的大小不一,跟所在地点和方向有关,所以地球磁场强度分布不是均匀的。而早期的罗盘或指南针是机械式的,或称机械罗盘,主要有磁针、刻度盘和磁误差校正装置组成。在使用的时候,由于磁针会受到地磁场的影响而发生转动,由此根据磁盘刻度可以确定方向。而目前发展较快的电子罗盘是采用磁通门原理的传感器,电子罗盘也相继问世,发展较为迅速。第1.3节 研究目的 本文主要介绍磁阻式电子罗盘的工作原理,并详细介绍了磁阻传感器HMC5883L、Arduino开发平台以及ATMEGA8单片机的磁阻式电子罗盘的硬件设计;磁阻传感器HMC5883L可由单片机通过IIC数据获取寄存器数据,利用ATMEGA8单片机处理信息功能经过分析后,再由显示模块进行显示。分析测试了硬件系统,在研制磁阻电子罗盘原理样机过程中,我对系统做出一定的误差补偿,使其系统的精度提高,并且对系统做经一步的改进。对研制的数字电子罗盘系统样机,进行测试。其结果显示,该数字电子罗盘能对行驶方向进行的动态测量,在0到360范围行驶方向测量精度可达2.0。电子罗盘相对传统机械罗盘具有体积小、性能优异、价格低等特点,但稳定性仍旧不如机械罗盘。第二章 系统总体方案设计第2.1节 硬件系统设计方案2.1.1 硬件电路组成及工作原理 电子罗盘主要由磁阻传感器、单片机控制系统、人机交互系统组成和相应扩展电路组成。在电子罗盘系统中,磁阻传感器负责测量周围磁场数据,并将这些模拟量转化为数字量,然后由单片机进行滤波处理,再把数字量的测量值转换成对应的通用单位数值并对误差的做了补偿。 此外,电子指南针系统容易受到外界磁场的影响,所以在整个系统设计时应注意设置磁屏蔽壳体,此设置可以极大的减少外界磁场、各种硬铁和软铁对整个系统的干扰。同时在系统的放置和校正中,应该注意要尽量远离强磁源和各种铁性材质的物质。图2.1 系统框图2.1.2 硬件选型1、 主控芯片选择:方案一:采用ATmega8单片机,ATmega8是一个经典51内核的单片机,由Atmel公司发布。是一个低功耗、高性能的8为AVR单片机微处理器,采用先进的RISC架构,具有32个8位通用寄存器,而且是全静态工作,在16Mhz的时钟频率上计算能力可达16MIPS。在此芯片基础上由Arduino软件开发平台,开发方便,可参考资料较多。方案二:采用MSP430单片机,MSP单片机是德州仪器公司发布的一款16位低功耗处理器,采用RISC架构,具有精简指令集。MSP430将多个模拟电路、数字电路和微处理器集成在了一块芯片内,功能强大,但价格较为昂贵。 方案三:采用STC89C52RC单片机。STC89C52是国内宏晶公司发布的一款低功耗、51内核的单片机,采用复杂指令集。相对于传统51内核,宏晶公司对此款芯片做了功能扩展,性能增强,但开发并不如AVR系列单片机方便。2、 磁阻传感器选择: 方案一:采用KMZ52磁阻传感器。KMZ52是由飞利浦公司发布的一款磁阻传感器,他的原理是利用磁阻效应原理来测量磁场是一个高灵敏度的磁阻传感器。芯片内集成了一个补偿线圈和两个反转线圈,可用于测量地球磁场水平分量的大小。 方案二:采用HMC5883L磁阻传感器,HMC5883L是由霍尼韦尔公司发布的高性能、低功耗磁阻传感器,带有I2C接口,可方便与单片机通信,采用无铅封装技术,具有较小的尺寸,而且霍尼韦尔公司掌握各向异性磁阻技术,使用此种技术的磁阻传感器性能优于世面上大多数的磁阻传感器,而且价格低。3、 显示屏选择:方案一:采用LED数码管显示。LED数码管价格相对低廉,用于显示简单的字母和数字较为合适。但是采用动态扫描法所需单片机的IO口较多,然而因为单片机IO口输出的电流太小,所以还要设计一个驱动电路,利用驱动电路对电流放大后才能控制数码管,如果采用数码管显示的内容多了,电路的焊接的难度会增大比较容易发生错误。方案二:采用OLED显示模块,该模块是一个12864像素的单色线、字符、图形显示模块,使用SSDl303驱动OLED的矩阵,内部整合128 X64 = 8192单位的RAM,对应于OLEDl2864像素,被划分为八个,每个页面被分成8行。通过SPI总线通信,每个RAM单元直接作为驱动信号的图形显示的数据。 综上所述,综合考虑开发周期和成本,在主控芯片上选择ATmega8的微控制器,磁阻传感器选择HMC5883L传感器,显示屏采用OLED显示模块。第2.2节 软件系统设计方案 在电子罗盘系统中,磁阻传感器负责测量周围磁场数据,并将这些模拟量转化为数字量,然后由单片机进行滤波处理,再把数字量的测量值转换成对应的通用单位数值并对误差的做了补偿。系统软件除了完成初始化、信号采集、信号调理,再到单片机中进行信号处理分析,最后输出到显示屏上。其框图如下所示:图2.2 主程序框图 第三章 系统硬件设计第3.1节 单片机系统设计本次设计采用了ATMEL公司在2002年第一季度推出的一款新型AVR高性能单片机ATmega8。其采用精简指令集,既RISC结构,具有非易失性存储器,可满足存储用户数据的需求,拥有较高的16MIPS计算能力,同时也是一款低功耗的芯片,才本次设计中是一个不错的选择电源是单片机最小系统的首要问题,本次设计电源基于AMS1117稳压芯片采用USB供电的方式,可以满足单片机供电的需求。单片机最小系统还需要晶振电路来给单片机产生相应的时钟频率,对于AVR系列芯片一般有外部时钟模式和内部时钟模式两种,本设计采用的是内部时钟模式,在单片机的XTAL1、XTAL2 的引脚上连接相应晶振和电容,电容起到了起振的作用,这样单片机的内部时钟电路就可以工作了。在本次设计中选用的8M 的石英晶振。并且采用22pF的电容。复位电路也是单片机最小系统的重要组成部分,单片机最小系统由上电复位和按键复位两种。当电源供电,单片机复位电路中的电容两端电压无法突变,与其串联的电阻为高电压,因此单片机引脚RST端有高电平信号,实现单片机复位。当电源继续给电容供电直至电阻两端的电压减少至几乎为0时,芯片没有复位信号开始正常工作。当复位按键按下的时候,由于其与电容两端并联,RST端有高电平信号,只要高电平持续2us以上便可以给单片机复位。 主控芯片为ATmege8a,时钟电路采用8M晶振和两个22pf的起振电容,具有上电复位电路,芯片通过CH340T芯片和USB接口与上位机进行串口通信。主控芯片的其余引脚也分别通过扩展接口引出以便备用。其原理图如下图3.1所示:图3.1 单片机最小系统第3.2节 地磁传感器电路设计3.2.1 硬件模块介绍 霍尼韦尔HMC5883L是一种表面贴装,多芯片模块设计低场磁传感带的应用,如低成本的数字接口定向和磁强。该HMC5883L包括我们先进的theart、高分辨率HMC118X系列磁阻传感器加上一个ASIC含放大,自动消磁带司机,偏移消除,和一个12位的ADC ,以及12罗盘航向精度。在我2C串行总线可以方便的界面。该HMC5883L是3.0x3.0x0.9mm表面安装16引脚无引线芯片载体( LCC ) 。申请的HMC5883L包括手机,上网本,消费电子,汽车导航系统和个人导航设备。 该HMC5883L采用霍尼韦尔各向异性磁阻( AMR)技术,比其它更具优势磁传感器技术。这些各向异性,方向传感器,配备精密的轴灵敏度和线性度。这些传感器的固态结构具有非常低的交叉轴灵敏度是用来测量的方向和地球磁场的幅度,从毫高斯至8高斯。霍尼韦尔公司的磁传感器是最灵敏可靠的低磁场传感器的产业。特点: 3轴磁阻传感器和ASIC在3.0x3.0x0.9mm LCC表面贴装 12位ADC,再加上低噪声AMR传感器达到2毫高斯在 8高斯场场分辨率 内建自测试 低电压操作( 2.16至3.6V )和低功耗( 100 A ) I2C数字接口 内置带驱动电路无引线封装结构磁场范围广(+/-8Oe)有相对应的软件和算法支持最大输出频率可达160Hz3.2.2 硬件电路设计磁力计传感器HM5883L通过I2C与主控芯片通信,SDA和SCL分别有两个上拉电阻,与主控芯片的PC5和PC6引脚连接,其原理图如图3.2所示:图3.2 地磁传感器电路设计第3.3节 OLED显示模块电路设计3.3.1 硬件模块介绍 OLED属于一个电流 - 型有机发光装置中,由载流子注入和复合发光引起的现象,该电流正比于发光强度和注入。散发出单个像素的机理是:在阳极加210V DC正电压和阴极到0V。电场的作用下的OLED,电子 - 空穴在阳极产生和阴极可发生所得移动,分别向空穴传输层和电子注入输送层,迁移到发光层。当两个发光层中相遇,以产生激子能量,从而激发发光分子最终产生可见光。不像LED OLED的用途为主的单个像素,而是实现平板显示技术。需要大量的像素组合,以形成OLED的阵列。要点亮的像素则需要相应的驱动电路,一般有两种方式。一个是一个动态扫描模式,也称为无源驱动模式或被动驱动模式(PM-OLED)。这样的方法是使用一个公共阴极配置,即阴极连接到每个像素和与交叉点构成的列,行象素矩阵接触的阳极电极的行电极。OLED显示模块有多种型号可供选择,但目前仍然占主导地位的单色显示屏。为了说明的OLED显示器模块和微控制器接口应用到VGGl2864G - S002模型为例加以介绍。该模块是一个12864像素的单色线、字符、图形显示模块,使用SSDl303驱动OLED的矩阵,内部整合128 X64 = 8192单位的RAM,对应于OLEDl28 64像素,被划分为八个,每个页面被分成8行。通过SPI总线通信,每个RAM单元直接作为驱动信号的图形显示的数据,该显示用数据是“1” ,OLED的点“亮”,该数据为“0”,OLED的“关闭”。3.3.2 硬件电路设计OLED显示模块经过封装以后只引出了6个引脚,其引脚功能如下所示1 GND:电源地;2 VCC:电源正,DC2435V,典型值为3V;3 D0,时钟线4 DC数据指令选择控制端,DC;=0时数据线输入指令;DC=1时输人数据;5 RES复位端,低电平有效;6 CS:片选信号OLED模块较少的占用了单片机的IO引脚端口资源,可以用来实现更多的功能,同时OLED显示技术也是显示屏行业目前发展的一大亮点。OLED在使用的时候是使用SPI通信的,所以OLED的SPI系列引脚需要与单片机SPI系列引脚连接,由单片机通过SPI通信方式来给OLED模块传送指令。OLED模块可以使用3.3V或者5V的供电方式。其原理图如图3.3所示:图3.3 OLED硬件电路设计第3.4节 总体硬件原理图 系统硬件设计如下图所示,其主控芯片为ATmege8a,时钟电路采用8M晶振和两个22pf的起振电容,具有上电复位电路,芯片通过CH340T芯片和USB接口与上位机进行串口通信,构成了单片机的最小系统。磁力计传感器HM5883L通过I2C与主控芯片通信,SDA和SCL分别有两个上拉电阻,与主控芯片的PC5和PC6引脚连接,主控芯片的其余引脚也分别通过扩展接口引出以便备用。其原理图如图3.4所示:图3.4 总体硬件原理图第四章 系统软件设计第4.1节 开发平台介绍4.1.1 Arduino: Arduino是一个开发各类设备,让你比台式电脑更能充分感知和控制物理世界的生态系统。Arduino是一个基于一系列单片机电路板的开源物理计算平台,一个编写用于Arduino和Genuino开发板的软件开发环境和一个拥有活跃开发者和用户社区。Arduino可用于开发交互式物体,接受来自各类开关或传感器的输入,并能控制各种灯光、马达和其他物理输出装置。Arduino项目可以单独运行,也可以与您计算机上运行的软件(Processing、MaxMSP)配合使用。您可以手动组装简单的开发板,或购买预装的整套开发板, 还可以免费下载开源Arduino软件(IDE)。Arduino编程所用编程语言是以Processing多媒体编程环境为基础的物理计算平台Wiring。通过多年的努力,Arduino软件(IDE)已经演变成能支持由英特尔和三星等公司制造的众多核心板和开发板。4.1.2 发展历程:Arduino始于2005年意大利交互设计学院的一个项目,作为交互设计学校的老师Massimo Banzi经常会听到学生抱怨找不到便宜合适,开发简易的微控制器,在跟好友讨论此问题后,他们决定自己设计了一款开发板,并重新引入了一个编程设计语言,随后便将Arduino的设计原理进行了开源,让更多的人可以方便免费的使用这么一款开发平台,人们不需要支付任何费用就可以按照原理图仿制这款开发板,但必须遵守CC授权方式。Arduino发展至今,已经有了多种型号及众多衍生控制器推出。4.1.3 平台特点: 目前市场上还有许多其他可用于物理运算的单片机和和单片机平台。Parallax Basic Stamp、Netmedia的BX-24、Phidgets、麻省理工学院的Handyboard都能提供类似的功能。所有这些工具都有极其繁琐的单片机编程细节,却将这些细节打着易于使用广告的包装盒里。Arduino不但简化了使用单片机工作的流程,同时还为教师、学生以及兴趣爱好者提供了一些其他系统不具备的优势:1、便宜 相比其他单片机平台而言,Arduino和Genuino开发板价格相对便宜。这一系列各类开发板的价格各不相等,从15美元的Micro到低于80美元的32位功能更强大开发板。2、跨平台运行 Arduino软件(IDE)能在Windows、Macintosh OSX和Linux操作系统中运行,而大多数其他单片机系统仅限于在Windows操作系统中运行。3、简单明了的编程环境 Arduino的编程环境易于初学者使用,同时对高级用户来讲也足够灵活。对于教师来说,Arduino以Processing编程环境为基础,因此学过Processing的学生对Arduino软件(IDE)的外观和感觉非常熟悉。4、开源和可扩展软件 Arduino软件(IDE)作为开源工具发布,允许有经验的程序员在其基础上进行扩展开发。所使用的编程语言可以通过C+库进行扩展,想了解技术细节的用户可以从Arduino跨越到Arduino以此为基础的AVR C语言。同样,您可以根据需要直接将AVR-C代码添加到您的Arduino程序中。5、开源和可扩展硬件 Arduino以Atmel公司的ATMEGA 8位系列单片机及其SAM3X8E和SAMD21 32位单片机为硬件基础。开发板和模块计划在遵循“知识共享许可协议”的前提下发布,所以经验丰富的电路设计人员可以做出属于自己的模块,并进行相应的扩展和改进。即使是经验相对缺乏的用户也可以做出试验版的基本Uno开发板,便于了解其运行的原理并节约成本。第4.2节 HM5883L传感器驱动程序4.2.1 HM5883L传感器驱动程序介绍HMC5883L是由霍尼韦尔公司发布的高性能、低功耗磁阻传感器,带有I2C接口,可方便与单片机通信,采用无铅封装技术,具有较小的尺寸,而且霍尼韦尔公司掌握各向异性磁阻技术,使用此种技术的磁阻传感器性能优于世面上大多数的磁阻传感器,而且价格低。HMC5883L采用I2C通信,其程序运行流程图如下图4.2.1所示:图4.2.1 HMC5883L流程图4.2.2 数据读取程序源码MagnetometerRaw HMC5883L:ReadRawAxis() uint8_t* buffer = Read(DataRegisterBegin, 6); MagnetometerRaw raw = MagnetometerRaw(); raw.XAxis = (buffer0 8) | buffer1; raw.ZAxis = (buffer2 8) | buffer3; raw.YAxis = (buffer4 8) | buffer5; return raw;MagnetometerScaled HMC5883L:ReadScaledAxis() MagnetometerRaw raw = ReadRawAxis(); MagnetometerScaled scaled = MagnetometerScaled(); scaled.XAxis = raw.XAxis * m_Scale; scaled.ZAxis = raw.ZAxis * m_Scale; scaled.YAxis = raw.YAxis * m_Scale; return scaled;int HMC5883L:SetMeasurementMode(uint8_t mode)Write(ModeRegister, mode);void HMC5883L:Write(int address, int data) Wire.beginTransmission(HMC5883L_Address); Wire.write(address); Wire.write(data); Wire.endTransmission();uint8_t* HMC5883L:Read(int address, int length) Wire.beginTransmission(HMC5883L_Address); Wire.write(address); Wire.endTransmission(); Wire.beginTransmission(HMC5883L_Address); Wire.requestFrom(HMC5883L_Address, length); uint8_t bufferlength; if(Wire.available() = length) for(uint8_t i = 0; i length; i+) bufferi = Wire.read(); Wire.endTransmission(); return buffer;第4.3节 OLED模块驱动程序4.3.1 OLED驱动程序介绍 OLED显示模块首先会进行初始化,先复位OLED模块,在设置需要显示字体的大小,再设置光标的位置,用来确定显示文字的位置,最后将需要显示的文字显示出来,其程序运行流程图如下所示:图4.2 OLED显示模块程序流程图4.3.2 OLED驱动程序源码#define SSD1306_SETCONTRAST 0x81#define SSD1306_DISPLAYALLON_RESUME 0xA4#define SSD1306_DISPLAYALLON 0xA5#define SSD1306_NORMALDISPLAY 0xA6#define SSD1306_INVERTDISPLAY 0xA7#define SSD1306_DISPLAYOFF 0xAE#define SSD1306_DISPLAYON 0xAF#define SSD1306_SETDISPLAYOFFSET 0xD3#define SSD1306_SETCOMPINS 0xDA#define SSD1306_SETVCOMDETECT 0xDB#define SSD1306_SETDISPLAYCLOCKDIV 0xD5#define SSD1306_SETPRECHARGE 0xD9#define SSD1306_SETMULTIPLEX 0xA8#define SSD1306_SETLOWCOLUMN 0x00#define SSD1306_SETHIGHCOLUMN 0x10#define SSD1306_SETSTARTLINE 0x40#define SSD1306_MEMORYMODE 0x20#define SSD1306_COMSCANINC 0xC0#define SSD1306_COMSCANDEC 0xC8#define SSD1306_SEGREMAP 0xA0#define SSD1306_CHARGEPUMP 0x8D#define SSD1306_EXTERNALVCC 0x1#define SSD1306_SWITCHCAPVCC 0x2/ Scrolling #defines#define SSD1306_ACTIVATE_SCROLL 0x2F#define SSD1306_DEACTIVATE_SCROLL 0x2E#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2Aclass Adafruit_SSD1306 : public Adafruit_GFX public: Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS); Adafruit_SSD1306(int8_t RST); void begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t i2caddr = SSD1306_I2C_ADDRESS); void ssd1306_command(uint8_t c); void ssd1306_data(uint8_t c); void clearDisplay(void); void invertDisplay(uint8_t i); void display(); void startscrollright(uint8_t start, uint8_t stop); void startscrollleft(uint8_t start, uint8_t stop); void startscrolldiagright(uint8_t start, uint8_t stop); void startscrolldiagleft(uint8_t start, uint8_t stop); void stopscroll(void); void drawPixel(int16_t x, int16_t y, uint16_t color); private: int8_t _i2caddr, sid, sclk, dc, rst, cs; void fastSPIwrite(uint8_t c); void slowSPIwrite(uint8_t c); volatile uint8_t *mosiport, *clkport, *csport, *dcport; uint8_t mosipinmask, clkpinmask, cspinmask, dcpinmask;第五章 系统测试与分析第5.1节 系统硬件测试硬件经过上电测试,主控芯片成功读取HM5883L磁力计数据并进行处理,OLED显示模块能准确显示角度值,硬件测试实物图如下所示:北: 东:南: 西:第5.2节 测试数据分析序号测量数据对比数据误差1北358.523600.41%2东106.25904.5%3南180.121800.033%4西251.622705.1%5 从测试数据中可以看出HM5883L磁力计传感器由些许误差。电子罗盘的误差可能来源于周围环境中潜在的磁场,比如一些电磁设备的周围,或者周围存在带有磁性的物体对其进行了干扰。所以在使用磁阻传感器或者电子罗盘的时候要尽量在空旷无干扰地带方可准确无误。同时在数据处理转换的时候可能也会存在一些漂移误差,由于传感器的性能会随温度的变化而受到影响,所以会存在温度漂移误差,补偿算法是一个不错的选择,但具体如何使用还得多测传感器的测试才行。第六章 总结 本次毕业设计的电子罗盘主要由磁阻传感器、单片机控制系统、人机交互系统组成和相应扩展电路组成。在电子罗盘系统中,磁阻传感器负责测量周围磁场数据,并将这些模拟量转化为数字量,然后由单片机进行滤波处理,再把数字量的测量值转换成对应的通用单位数值并对误差的做了补偿。 在整个设计系统中充分掌握各模块电路的工作原理,对硬件电路进行设计,并使用C语言编写全部的驱动程序。该罗盘系统用于方位指示实测精度可以达到1、功耗小、显示直观、携带方便,可作为出行、旅游、导航的必备之物,具有较高的经济适用价值。因为个人在知识面和能力方面还有限,电子罗盘的经度和抗干扰能力并不尽如人意。但这次的设计对于我来说是一次机会,让我可以参与到具体的设计工作中去,同时也是一次挑战,设计中所碰到的很多问题都需要有针对的去分析和调试,在此期间我也学会了查找资料,参考相关文献去解决我所遇到的问题。针对实际的应用场景,结合设计目的需求来完成系统的设计。参考文献1.邵婷婷,马建仓,胡士峰,王超.电子罗盘的倾斜及罗差补偿算法研究J.传感技术学报,2007,(06).2.邱丹,黄圣国.电子罗盘在航向系统的应用J.江苏航空,2006,(02).3.周航慈,吴光文.基于嵌入式实时操作系统的程序设计技术M.北京:北京航空航天大学出版社,2006.4.任哲.嵌入式实时操作系统uC/OS-II原理及应用M.北京:北京航空航天大学出版社,2006.5.黄志伟编著.全国大学生电子设计竞赛系统设计M.北京:北京航空航天大学出版社,2006.6.JeanJLabrosse,邵贝贝等译.嵌入式实时操作系统uC/OS-II(第二版)M.北京.北京航空航天大学出版社,2003.7.常玉燕,吕光译.日本电子电路精选M.北京:电子工业出版社,1990.8.佐藤一朗.集成运算运算放大器电路设计实用手册M.北京:北京航空航天大学出版社,1989.9.BonnieBaker.嵌入式系统中的模拟设计M,北京:北京航空航天大学出版社.200610姜立中.电子罗盘J.电子世界,1999,(06).11.赵毅强,管大年,陈豪敏.电子罗盘在精确定位平台中的应用J.传感技术学报,2005,(01).12.汪雪莲.电子罗盘的方位测量误差及其补偿校正J.声学与电子工程,2005,(04).13.蒋贤志.数字电子罗盘误差分析及校正技术研究J.现代雷达,2005,(06).致谢 本论文是在吴文明导师的悉心指导完成的,历时一个学期之久。导师平易近人,和蔼可亲有着深厚的学术造诣。在做论文的这一个学期,遇到的问题,吴文明老师都会指导我怎么去解决问题,授人以鱼,不如授人以渔。吴老师教给我们的是方法,是精髓!在做论文的时候。我学会了基本的研究方法

温馨提示

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

评论

0/150

提交评论