GPS模块在打铃控制器中的应用
扫描二维码
随时随地手机看文章
摘要:设计了基于GPS集成模块和单片机最小系统的自动校时打铃控制器。单片机通过对GPS集成模块E531的串行口进行数据采集,得到实时格林威治时间,然后经过时区调整转换为标准北京时间。将其作为打铃控制器的时间基准对系统本地时钟DS1302进行校准。在GPS有效捕获卫星信号时可以及时得到标准时间,当GPS模块捕获卫星信号失效时可以通过本地时钟继续工作,这样既保持了时间的准确性又保证了控制器工作的连续性。
关键词:GPS;打铃控制器;格林威治时间;单片机;本地时钟
定时打铃器广泛应用于工厂、车站、学校、机关、部队等企事业单位实现作息打铃。目前打铃控制系统主要有两种形式,一种为使用计算机声卡输出打铃信号,利用串口控制打铃设备的电源。另一种以单片机为核心辅助时钟芯片构成的定时打铃器。由于计算机控制的打铃器使用的灵活性差及价格较高因此市场占有率较低,而单片机最小系统构成的打铃器使用灵活且操作方便因此在市场中具有很大的优势。目前单片机为核心的打铃器主要利用时钟芯片作为定时基准,因此时钟芯片晶振选择的好坏直接影响到时间精度,但即使选择再好的晶振系统总是存在误差。随着时间的推移累积误差将越来越大,因此要求隔一段时间对时钟必须进行手动校准。这样无形中增加了打铃器的应用复杂性,也给人们对打铃器的信任度大打折扣。为了解决该问题本文提出了一种利用GPS信号作为时钟基准源的方案,它省去了人为校时,并始终和北京基准时间处于基本同步状态。
1 控制器结构总体设计
系统以C8051F330D为主控芯片,供电范围为2.7~3.6 V,集成有24.54 MHz可±2%的精度调节的振荡器,同时内置8k Flash存储器和768字节的数据存储器不需外扩存储芯片,可方便地构成单片机最小系统。系统结构如图1所示。
单片机读取E531数据从而获得标准的格林威治时间,将格林威治时间加上八小时即得到标准的北京时间。用该时间对DS1302实时时钟芯片校时,这样DS1302的时钟始终不会偏离标准北京时间。当系统电源停止时DS1302利用备用电源在低功耗下计时,一旦系统上电DS1302会得到新的校时信息,从而保证了时间的连续性和准确性。打铃驱动部分采用继电器输出,这样可以适应不同的电铃电源接口。
2 硬件结构设计
2.1 系统电源设计
考虑到打铃器的使用方便,系统电源由交流220 V供电,内部通过开关电源得到DC5V电源。系统中打铃控制继电器由DC5V供电,C8051F 330D单片机、DS1302和E531模块均为3.3 V电源。电路中采用低压差线性稳压芯片AS1117—33CX作为电源转换模块,其电路如图2所示。输入DC5V电压输出直流3.3 V最大电流负载为800 mA,其内部主要由启动、偏置和过热过流保护电路以及功率管及其驱动电路组成。当系统电流大于1.4 A或芯片温度大于140℃时电源将自动进行过流和过热保护可以保证后级芯片和电路的安全。
2.2 控制器时间基准电路设计
控制器时间基准主要由GPS接收模块和时钟芯片DS1302两部分电路组成。GPS即全球定位系统,主要由空间部分、控制部分和用户部分组成。用户部分是各种定位工具的主要构成核心也就是常说的GPS接收模块。按照接收模块的不同用途主要分为测地型型接收模块、导航型接收模块和定时型接接收模块。在本控制器中采用GPS接收模块E531用作定时型方式。E531为12通道的GPS接收模块,可以同时跟踪多达12颗GPS卫星;它具有两个CMOS电气特性的串行接口,波特率可由软件设置为4 800、9 600、19 200等;串口0输入输出为NMEA0183协议的ASCII语句,串口1为二进制协议。E531的接口定义如图3所示,单片机仅需与其中的串口0的TX0、RX0、复位和硬件唤醒4根连线即可。
DS1302是一款涓流充电时钟芯片,包括实时时钟/日历和31字节的静态RAM。经过简单的同步串行数据接口和单片机通信,提供秒、分、时、日、周、月和年信息,对于闰年的天数和月天数可自动进行调整。掉电时可采用备用电池在功率小于1 mW的情况下工作。DS1302的VCC1和VCC2作为芯片的电源供电引脚,VCC2接系统的3.3 V电源,VCC1接备用充电电池,在正常工作时通过设置DS1302的控制字在正常工作时可以对备用电池进行充电。时间基准电路如图4所示。
设置单片机的交叉开关XBR1的值为0x40将XBARE位置1使能交叉开关,并设置交叉开关XBR0的值为0x01将单片机串口引脚TX0和RX0配置为P0.4与P0.5管脚。P0.4和P0.5分别连接到E531模块串口0的RX0和TX0进行通信。单片机P1.1,P1.2作为E531复位和硬件唤醒控制。DS13 02采用32.768kHz晶振作为独立定时基准。它的SCLK、I/O和/RST引脚分别连接到单片机P0.6、P0.7和P1.0管脚与之实现同步串行通信。
2.3 系统键盘显示部分结构设计
在满足需求的同时为尽量保证打铃控制器的结构简洁,打铃控制器设计了4个按键和一个液晶显示屏以实现人机接口。其中KEY1为数字按键,每按下一次当前光标的数字值加一,在数字‘0’和‘9’之间循环设置。KEY2键为光标移动键,选择控制器显示界面中的不同菜单进行设置或浏览。KEY3键为确认键当光标移动到一个菜单时或数字修改完成后按下确认键可保存该次设置和选择。KEY4键为‘返回/取消’功能键。液晶显示屏采用LCM128645采用串行方式的数据接口与单片机仅需3根线连接即可。
2.4 系统原理图设计
按照系统原理框图形成如图5所示的原理图。
当系统时间和设置的打铃时间相等时单片机P1.3输出高电平,通过9013的放大驱动使继电器K1线圈动作,其常开接点NO和COM断吸合(同时其常闭接点NC和COM端断开)控制外部电铃电源从而响铃。
3 软件设计
系统软件主要包括有时钟同步、打铃控制和显示键盘程序等几部分。时钟同步程序是单片机通过串口读取E531模块的实时信息,在信息有效地状态下提取当前的格林威治时间转换为北京时间后对DS1302时间进行校正。单片机和E531的通信采用NMEA0183协议中的RMC协议进行通信,波特率设置为9 600。因此单片机上电后对E531进行通信格式配置,协议格式为:“$PUNV,CONFIG,00,CM,00,1000,BPS,MASK*3 4”。该指令中$PUNV和CONFIG为指令码,固定不变。CM=0000表示采用NMEA0183协议,CM=0101则表示采用UBP协议。BPS为串口的波特率取值为9 600。GPS输出的信息数据和对应的代码如下所示:
GGA—01,GL—02,GSA—04,GSV—08,RMC—10,VTG—20,ZDA—40,DTM—80。MASK是要求GPS模块输出信息的代码和,比如要求GPS模块输出GGA和RMC信息则MASK值为01+10=11,本设计中主要为了读取标准时间和日期需要配置GPS输出RMC信息所以MASK取值为10。因此配置指令为:“$PUNV,CONFIG,00,0000,00,1000,9600,10*34”。
当E531捕捉到有效卫星信号后则主动通过串口0发出RMC信息,格式为:“$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>”其每部分的内容如表1所示。
在配置好信息输出后,E531将每秒输出一次数据,数据信息以‘,’为区分符。当单片机收到一帧完整的RMC数据后,根据数据中<2>的内容判断定位是否有效,当定位有效单片机读取<1>和<10>得到时间和日期信息。根据系统各部分功能得到如图6所示程序流程图。
当获得有效格林威治时间后,对其进行加八小时调整,就得到北京时间然后对本地DS1302时钟芯片校时。在获得标准时间后读取单片机内设置的打铃时间判断是否和打铃时间相等若相等则进行打铃控制。
4 结束语
采用GPS模块E531以单片机最小系统为核心实现了一款应用灵活、操作方便、时间准确的打铃控制器。该控制器提供了打铃系统常用的接点接口因此在打铃电路不变的情况下可以直接替代原有的控制器。通过实际测试打铃控制器和北京时间的绝对误差小于100ms,该误差主要是由于GPS信息的读取以及单片机对时间转换和处理的时延所造成,对于一般的应用场合已经完全满足要求。