电子指南针设计Word文档格式.docx
- 文档编号:16235781
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:16
- 大小:294.91KB
电子指南针设计Word文档格式.docx
《电子指南针设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子指南针设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
但其基本构造是没有改变的,都是属于机械的指针式,其指示的机械结构基本上没有改变,都是利用某种支撑使得磁针能够受到地磁场的影响而自由的旋转。
由于机械的先天因素导致了指针式指南针在便携性、灵敏度、精度以及使用寿命上都有一定的限制。
由于国内外电子技术的飞速发展,特别是在磁传感器和专用芯片(ASIC)上的发展使能指南针的基本实现机理有了质的改变,不再是机械结构而采用了磁场传感器和专用处理器对磁场进行测量和处理后指示方向,这就是当前应用较为广泛的电子式指南针。
电子指南针全部采用固态元件,可以用简单的方法与其它电子系统进行连接,完成新产品的开发。
电子指南针具有体积小、精度高、稳定性好等特点,因为它的这些优异性,在工业、军事、生活等领域都有着广泛的应用,并且它可以替代旧式的针式指南针或罗盘式指南针。
本课题针对电子指南针的各个功能部件对电子指南针的关键部分做了详细的研究。
采用单片机做为系统的核心控制芯片,而单片机的接口是数字信号的,想要它能够处理地球的磁场状况,必须要把磁场信号转化成电信号(电压或电流),然后经过模数转换,把模拟的电信号转化成单片机可以处理的数字信号。
把所得的数字信息通过主控制器进行处理,然后用人机界面表现出来,供我们来读取和应用。
子指南针系统是一个单片机系统,了解其工作原理及其信号处理流程有利于研究复杂的嵌入式系统,特别是系统中采用进口的磁传感器及其相关信号的采集芯片更是有利于研究磁场传感器的实现机理,以便将其更加广泛的应用。
指南针是一个重要的导航工具,甚至在GPS中也会用到。
随着电子技术的飞速发展,特别是在磁传感器和专用芯片上的发展使指南针的基本实现机理有了质的改变,不再是机械结构而采用了磁场传感器和专用处理器对磁场进行测量和处理后指示方向,这就是当前应用较为广泛的电子式指南针。
电子指南针替代旧的指针式指南针或罗盘指南针,因为电子指南针全采用固态的原件,还可以简单地和其他电子系统接口。
电子指南针系统中磁场传感器的磁阻(MR)技术是最佳的解决方法,和现在很多电子指南针还在使用的磁通量传感器相比较,MR技术不需要绕线圈而且可以用集成电路(IC)生产过程生产,是一个更值得使用的解决方案。
3系统总体框图
本系统电子指南针的系统主要由前端磁阻传感器、磁场测量专用转换芯片、单片控制器、辅助扩展电路、键盘、显示模块以及系统电源几个部分组成[1],系统结构如图所示。
4硬件部分
4.1系统控制模块
本次设计中采用了高速51内核MCU,具体型号为STC89C52和高速51内核MCU,具体型号为DS89C450两种单片机做对比,实验证明,型号为DS89C450比较理想。
理由如下:
高速51内核MCU,具体型号为STC89C52,高速8051架构,每个机器周期一个时钟,最高频率33MHz,单周期指令30ns,双数据指针,支持四种页面存储器访问模式。
其控制器内部结构支持片内8KB闪存,在应用编程,可通过串口实现在系统编程。
四路8位并行I/O端口,三个定时器,512字节暂存RAM。
支持电源管理模式,可编程的时钟分频器,自动的硬件和软件退出低功耗。
外设特性:
两路全双工串口、可编程看门狗定时器、五级中断优先级、电源失效复位。
高速51内核MCU,具体型号为DS89C450,高速8051架构,每个机器周期一个时钟,最高频率33MHz,单周期指令30ns,双数据指针,支持四种页面存储器访问模式。
片内64KB闪存,在应用编程,可通过串口实现在系统编程,MOVX可访问的1KBSRAM。
与8051系列端口兼容,四路双向,8位I/O端口,三个16位定时器,256字节暂存RAM。
两路全双工串口、可编程看门狗定时器、13个中断源、五级中断优先级、电源失效复位、电源失效早期预警中断和可降低EMI[3]。
与51单片机相比,DS89C450还具有一些增强的功能。
DS89C450的P2口的某些位可以配置成特殊功能来使用,像P20,P21,P22可以配置成SPI总线接口,SPI接口可以配置成主模式,配置方法可参照表
端口
增强功能
SS(从模式选择输入)接高电平
P20
MOSI(主模式数据输出\从模式数据输入)
P21
MISO(主模式数据输入\从模式数据输出)
P22
SCK(主时钟输出\从时钟输入)
由表可知,主/从模式的选取是直接通过接高电平来决定,低电平为从模式,高电平为主模式。
在本设计中选择主模式,P2口的0到2口作为SPI接口使用,与前端的磁场强度采集模块相连。
液晶模块的接口主要接在P0口各P2口上,P0口用来传输数据和地址,P2口用来控制液晶模块的工作情况。
按键键盘和实时时钟模块的接口主要接在P1上,实时时钟模块采用了IIC总线接口,接到P1口的1和2脚。
1脚用来传输时钟信号,2脚用来传输数据信号。
P1口剩下的3到8脚供按键键盘输入使用。
整个系统的控制部分主要完成对指南针模块数据的读取和处理并将数据的处理结果通过控制人机界面显示出来,同时监控键盘的输入以便完成系统功能设定等操作。
DS89C450微控制器内部自带2个通用串行口直接引出即可用,由于系统需要和上位机(本系统中为PC机)进行数据通信,接口电平需要转换使其满足RS-232标准[4]
控制部分电路如图所示,其中包含了微控制器、LCD接口电路、端口上拉电阻、系统时钟电路和指南针模块接口电路。
整个微控制系统中采用了无源晶振的形式发生MCU所需要的时钟信号。
具体电路如图所示。
时钟电路中的两个电容用作补偿,使得晶振更容易起振,频率更加稳定。
系统的复位采用了上电复的形式,上电过程中微控制器复位引脚保证10ms以上的高电平就能可靠的将微控制器复位[5]
4.2液晶显示电路
本次设计采用了单色液晶显示屏(LCD)作为系统的显示界面,具体的型号为LCD1602和采用了160×
128点阵的单色液晶显示屏(LCD)作为系统的显示界面,具体的型号为PG160128,其各有各的特点。
经实验研究,LCD1602更为方便。
型号为LCD1602,该LCD采用了KS0066控制芯片作为显示控制核心。
微控制器只需要对KS0066芯片进行操作便可以完成对LCD屏的相关操作,使用非常方便。
模块内部原理如图所示。
图LCD1602内部原理
整个LCD中KS0066负责对LCD行列驱动器16COM和40SEG进行控制。
微控制器只需要按照KS0066给定的指令格式进行相应的操作即可。
其数据和指令的读写时序如图所示。
图LCD1602读写时序图
4.3按键输入电路
系统采用6键输入和5键输入做对比,。
由于系统中的其他模块对微控制器的端口占用较少还有很多没有使用的端口,所以系统采用了5键输入以实现系统功能的设定,如系统时间的调整和菜单的选择键盘连接上直接采用了每个按键占用一个端口的形式,如图所示,电路的中的几个电阻属于上拉电阻,保证在没有输入的情况下端口电平稳定为高,同时也可以达到省电的目的。
键盘的读取采用扫描的形式,当检测到有按键按下时,消抖动后进行键值判断[9]。
键盘电路
4.4指南针模块串口
表串口通信参数
波特率
校验位
数据位
停止位
9600bps
N
8
1
表4.2指南针模块输出格式
输出位
输出格式
注释
Byte0
0x0D
ASCII码回车
Byte1
0x0A
ASCII码换行
Byte2
0x30~0x33
角度百位ASCII码0~3
Byte3
0x30~0x39
角度十位ASCII码0~9
Byte4
角度个位ASCII码0~9
Byte5
0x2E
ASCII码小数点
Byte6
角度小数位ASCII码0~9
Byte7
0x00~0xFF
校验和仅低8bit
4.5实时时钟模块
系统采用了DS1302实时时钟芯片为系统提供实时时钟。
是一款高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿功能。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
整个时钟部分的电路如图3-5所示。
3-5时钟电路图
DS1302是一款穿行时钟芯片,主要由移位寄存器、控制逻辑、振荡器、实时时钟以及RAM组成。
为初始化数据传送,把RST置为高电平且把提供地址和命令信息的8位装入到移位寄存器。
数据在SCLK的上升沿串行输入。
无论是读周期还是写周期,也无论是单字节还是多字节传送,开始8位指定40个字节中的被访问字节。
在开始8个时钟周期把命令字装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作输入数据。
其读写时序图如图4所示
时钟读写时序图
5软件部分
5.1主监控程序
整个监控系统中各个模块间存在一定的先后顺序且程序模块数量较少,为了减少系统的程序量,设计过程中系统的监控程序采用了传统的前后台方式。
整个监控程序主要由指南针模块驱动、液晶显示驱动、实时时钟驱动和串口驱动组成。
整个系统监控程序流程如
系统监控程序流程
5.2指南针驱动模块
本次设计采用的是N-GY-26指南针模块。
模块采用SPI接口与MCU进行数据交换。
整个模块驱动包括了读取GY-26数据、处理数据、封装数据和通过SPI时序发送数据几个部分。
程序的流程如图4-2所示
指南针模块工作流程
在整个指南针模块程序的设计过程中最主要的也就是其数据的处理,直接关系到系统的精度。
均匀转动指南针模块得到的地磁场强度分布,未经处理的地磁场强度在不同方向上的分布是不同的,经过归一化后,可以很好的将其归一化为圆,使得在各个方向上的磁场强度均匀,这样既可以方便进行角度计算又可以提高测量精度、
指南针模块在第一次使用前都必须校正,系统上电后在模块的第9(CAL)引脚,接一按键至电源负极(GND),当第一次按下按键时,进入校准状态,LED常亮起。
保持模块水平,缓慢旋转1周(旋转1周时间大约1分钟)。
再次按下按键LED灭,校准结束。
校正时主要调整的系数就是本地的磁偏角。
将磁场强度归一化后,直接对X,Y轴的强度进行计算就可以得到当前方向与正北方向的夹角
指南针方向计算示意图
5.3键盘驱动
系统中将按键电路中按键1K、2K、3K、4K、5K分别与单片机的P13、P14、P15、P16、P17引脚进行连接,此按键是低电平有效,当有键按下时,与按键相连接的单片机引脚检测到这个信号,然后进行相应的处理后再输出。
6总结
经过一个多月的努力,我终于设计出了一个简易的电子指南针。
所设计的系统中包含了磁场传感器、微控制器、显示部件、输入部件和实时时钟等部分,微控制器通过对磁场传感器配套的ASIC进行读取获得当前方向地磁场的强度,通过一定的运算后由液晶显示器显示出来,并可以通过微控制器的串口和上位机建立连接进行数据的传输。
在课题的制作过程中,我也遇到了很多问题。
在硬件上,有些芯片的性能不是很了解,到网上又找不到相应的芯片资料,只能自己慢慢地摸索。
也正是这样的一个过程,使我对芯片更加地了解,原理更加的明白,进一步的巩固了我的专业知识。
在软件方面,最主要的问题就是当前方向与正东方夹角的获取。
经过向老师同学的请教,明白了在软件编程时要非常注重硬件电路。
因为软件是建立在硬件的基础上的。
同时一个正确的软件程序也能帮助检测硬件电路是否有问题。
在整个研究开发的过程中,我始终保持着认真,仔细的态度,不断提高自己的硬件系统设计各软件设计的能力,看到自己的劳动有了成果,我感到非常的高兴。
但因为个人在知识面和能力方面还有限,再加上条件的限制,我所完成的只是整个系统的一部分,电子指南针的采样精度和抗干扰能力等各项技术指标的提高、诸多功能的完善还需要进一步的研究和开发,此外在完成基本功能的基础上,还需要努力提高软件的效率、硬件系统的稳定性、进一步降低系统功耗。
附录
电子指南针系统部分源代码:
1.DS1302时钟模块子程序:
//********DS1302写命令(一次写1位)********
voidwrite_ds1302_byte(uchardat)
{
uchari;
for(i=0;
i<
8;
i++)
{
sck=0;
io=dat&
0x01;
dat=dat>
>
1;
sck=1;
}
}
//********向DS1302某个地址中写入数据********
voidwrite_ds1302(ucharadd,uchardat)
rst=0;
_nop_();
sck=0;
rst=1;
write_ds1302_byte(add);
//写入写时间命令
write_ds1302_byte(dat);
//写入时间
io=1;
sck=1;
//********读DS1302某地址中的数据********
ucharread_ds1302(ucharadd)
{
uchari,value;
rst=0;
//写入读时间命令
value=value>
if(io)
value=value|0x80;
return(value);
//********读取当前时间********
voidread_rtc(void)
7;
time_date[i]=read_ds1302(read_add[i]);
2.指南针模块子程序:
/******//*********************************************
//串口初始化
//9600bps@11.059MHz
voidinit_uart()
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
//串口方式为10位异步收发,允许串行接受
PS=1;
//串口中断设为高优先级别
TR0=1;
//启动定时器
TR1=1;
ET0=1;
//打开定时器0中断
ES=1;
//开串口中断
EA=1;
//开总中断
}***串口数据发送******************
voidSeriPushSend(ucharsend_data)
SBUF=send_data;
while(!
TI);
TI=0;
//*********数据校验****************
voidChare()
delay(5);
//传送延时
if(BUF[0]==0X0D&
&
BUF[1]==0X0A)//帧头判断
SUM=BUF[6]+BUF[5]+BUF[4]+BUF[3]+BUF[2]+BUF[1]+BUF[0];
//校验和
}
3.LCD1602液晶模块子程序
//**********写命令至LCD***********************
voidwrite_com(ucharcom)
lcdrs=0;
//选择写命令模式
/*lcden=0;
//液晶使能端赋初值*/
P0=com;
//将要写的命令送到数据总线上
lcden=1;
//给使能端一高电平,将命令送入液晶
lcden=0;
//将使能端置0以完成高脉冲
//**********写数据至LCD************************
voidwrite_date(uchardate)
lcdrs=1;
//选择写数据模式
//液晶使能端赋初值*/
P0=date;
//将要写的数据送到数据总线上
//给使能端一高电平,将数据送入液晶
//将使能端置0以完成高脉冲
4.主程序:
//************主程序************
voidmain()
delay(50);
//延时
lcdrw=0;
init();
//初始化LCD
init_uart();
//初始化口
//set_rtc();
//设定初始时间
while
(1)//循环
{
cnt=0;
//接收数据的累计值
SeriPushSend(0X31);
//发送1帧读取命令
//延时
read_rtc();
time_pros();
ReadKey();
time_tj();
//按键检测
display();
//显示读取到的数值
delay(600);
//一定时间的延时
}//endwhile
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 指南针 设计