GPS模塊在打鈴控制器中的應(yīng)用
摘要:設(shè)計(jì)了基于GPS集成模塊和單片機(jī)最小系統(tǒng)的自動(dòng)校時(shí)打鈴控制器。單片機(jī)通過對(duì)GPS集成模塊E531的串行口進(jìn)行數(shù)據(jù)采集,得到實(shí)時(shí)格林威治時(shí)間,然后經(jīng)過時(shí)區(qū)調(diào)整轉(zhuǎn)換為標(biāo)準(zhǔn)北京時(shí)間。將其作為打鈴控制器的時(shí)間基準(zhǔn)對(duì)系統(tǒng)本地時(shí)鐘DS1302進(jìn)行校準(zhǔn)。在GPS有效捕獲衛(wèi)星信號(hào)時(shí)可以及時(shí)得到標(biāo)準(zhǔn)時(shí)間,當(dāng)GPS模塊捕獲衛(wèi)星信號(hào)失效時(shí)可以通過本地時(shí)鐘繼續(xù)工作,這樣既保持了時(shí)間的準(zhǔn)確性又保證了控制器工作的連續(xù)性。
關(guān)鍵詞:GPS;打鈴控制器;格林威治時(shí)間;單片機(jī);本地時(shí)鐘
定時(shí)打鈴器廣泛應(yīng)用于工廠、車站、學(xué)校、機(jī)關(guān)、部隊(duì)等企事業(yè)單位實(shí)現(xiàn)作息打鈴。目前打鈴控制系統(tǒng)主要有兩種形式,一種為使用計(jì)算機(jī)聲卡輸出打鈴信號(hào),利用串口控制打鈴設(shè)備的電源。另一種以單片機(jī)為核心輔助時(shí)鐘芯片構(gòu)成的定時(shí)打鈴器。由于計(jì)算機(jī)控制的打鈴器使用的靈活性差及價(jià)格較高因此市場(chǎng)占有率較低,而單片機(jī)最小系統(tǒng)構(gòu)成的打鈴器使用靈活且操作方便因此在市場(chǎng)中具有很大的優(yōu)勢(shì)。目前單片機(jī)為核心的打鈴器主要利用時(shí)鐘芯片作為定時(shí)基準(zhǔn),因此時(shí)鐘芯片晶振選擇的好壞直接影響到時(shí)間精度,但即使選擇再好的晶振系統(tǒng)總是存在誤差。隨著時(shí)間的推移累積誤差將越來越大,因此要求隔一段時(shí)間對(duì)時(shí)鐘必須進(jìn)行手動(dòng)校準(zhǔn)。這樣無形中增加了打鈴器的應(yīng)用復(fù)雜性,也給人們對(duì)打鈴器的信任度大打折扣。為了解決該問題本文提出了一種利用GPS信號(hào)作為時(shí)鐘基準(zhǔn)源的方案,它省去了人為校時(shí),并始終和北京基準(zhǔn)時(shí)間處于基本同步狀態(tài)。
1 控制器結(jié)構(gòu)總體設(shè)計(jì)
系統(tǒng)以C8051F330D為主控芯片,供電范圍為2.7~3.6 V,集成有24.54 MHz可±2%的精度調(diào)節(jié)的振蕩器,同時(shí)內(nèi)置8k Flash存儲(chǔ)器和768字節(jié)的數(shù)據(jù)存儲(chǔ)器不需外擴(kuò)存儲(chǔ)芯片,可方便地構(gòu)成單片機(jī)最小系統(tǒng)。系統(tǒng)結(jié)構(gòu)如圖1所示。
單片機(jī)讀取E531數(shù)據(jù)從而獲得標(biāo)準(zhǔn)的格林威治時(shí)間,將格林威治時(shí)間加上八小時(shí)即得到標(biāo)準(zhǔn)的北京時(shí)間。用該時(shí)間對(duì)DS1302實(shí)時(shí)時(shí)鐘芯片校時(shí),這樣DS1302的時(shí)鐘始終不會(huì)偏離標(biāo)準(zhǔn)北京時(shí)間。當(dāng)系統(tǒng)電源停止時(shí)DS1302利用備用電源在低功耗下計(jì)時(shí),一旦系統(tǒng)上電DS1302會(huì)得到新的校時(shí)信息,從而保證了時(shí)間的連續(xù)性和準(zhǔn)確性。打鈴驅(qū)動(dòng)部分采用繼電器輸出,這樣可以適應(yīng)不同的電鈴電源接口。
2 硬件結(jié)構(gòu)設(shè)計(jì)
2.1 系統(tǒng)電源設(shè)計(jì)
考慮到打鈴器的使用方便,系統(tǒng)電源由交流220 V供電,內(nèi)部通過開關(guān)電源得到DC5V電源。系統(tǒng)中打鈴控制繼電器由DC5V供電,C8051F 330D單片機(jī)、DS1302和E531模塊均為3.3 V電源。電路中采用低壓差線性穩(wěn)壓芯片AS1117—33CX作為電源轉(zhuǎn)換模塊,其電路如圖2所示。輸入DC5V電壓輸出直流3.3 V最大電流負(fù)載為800 mA,其內(nèi)部主要由啟動(dòng)、偏置和過熱過流保護(hù)電路以及功率管及其驅(qū)動(dòng)電路組成。當(dāng)系統(tǒng)電流大于1.4 A或芯片溫度大于140℃時(shí)電源將自動(dòng)進(jìn)行過流和過熱保護(hù)可以保證后級(jí)芯片和電路的安全。
2.2 控制器時(shí)間基準(zhǔn)電路設(shè)計(jì)
控制器時(shí)間基準(zhǔn)主要由GPS接收模塊和時(shí)鐘芯片DS1302兩部分電路組成。GPS即全球定位系統(tǒng),主要由空間部分、控制部分和用戶部分組成。用戶部分是各種定位工具的主要構(gòu)成核心也就是常說的GPS接收模塊。按照接收模塊的不同用途主要分為測(cè)地型型接收模塊、導(dǎo)航型接收模塊和定時(shí)型接接收模塊。在本控制器中采用GPS接收模塊E531用作定時(shí)型方式。E531為12通道的GPS接收模塊,可以同時(shí)跟蹤多達(dá)12顆GPS衛(wèi)星;它具有兩個(gè)CMOS電氣特性的串行接口,波特率可由軟件設(shè)置為4 800、9 600、19 200等;串口0輸入輸出為NMEA0183協(xié)議的ASCII語句,串口1為二進(jìn)制協(xié)議。E531的接口定義如圖3所示,單片機(jī)僅需與其中的串口0的TX0、RX0、復(fù)位和硬件喚醒4根連線即可。
DS1302是一款涓流充電時(shí)鐘芯片,包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。經(jīng)過簡(jiǎn)單的同步串行數(shù)據(jù)接口和單片機(jī)通信,提供秒、分、時(shí)、日、周、月和年信息,對(duì)于閏年的天數(shù)和月天數(shù)可自動(dòng)進(jìn)行調(diào)整。掉電時(shí)可采用備用電池在功率小于1 mW的情況下工作。DS1302的VCC1和VCC2作為芯片的電源供電引腳,VCC2接系統(tǒng)的3.3 V電源,VCC1接備用充電電池,在正常工作時(shí)通過設(shè)置DS1302的控制字在正常工作時(shí)可以對(duì)備用電池進(jìn)行充電。時(shí)間基準(zhǔn)電路如圖4所示。
設(shè)置單片機(jī)的交叉開關(guān)XBR1的值為0x40將XBARE位置1使能交叉開關(guān),并設(shè)置交叉開關(guān)XBR0的值為0x01將單片機(jī)串口引腳TX0和RX0配置為P0.4與P0.5管腳。P0.4和P0.5分別連接到E531模塊串口0的RX0和TX0進(jìn)行通信。單片機(jī)P1.1,P1.2作為E531復(fù)位和硬件喚醒控制。DS13 02采用32.768kHz晶振作為獨(dú)立定時(shí)基準(zhǔn)。它的SCLK、I/O和/RST引腳分別連接到單片機(jī)P0.6、P0.7和P1.0管腳與之實(shí)現(xiàn)同步串行通信。
2.3 系統(tǒng)鍵盤顯示部分結(jié)構(gòu)設(shè)計(jì)
在滿足需求的同時(shí)為盡量保證打鈴控制器的結(jié)構(gòu)簡(jiǎn)潔,打鈴控制器設(shè)計(jì)了4個(gè)按鍵和一個(gè)液晶顯示屏以實(shí)現(xiàn)人機(jī)接口。其中KEY1為數(shù)字按鍵,每按下一次當(dāng)前光標(biāo)的數(shù)字值加一,在數(shù)字‘0’和‘9’之間循環(huán)設(shè)置。KEY2鍵為光標(biāo)移動(dòng)鍵,選擇控制器顯示界面中的不同菜單進(jìn)行設(shè)置或?yàn)g覽。KEY3鍵為確認(rèn)鍵當(dāng)光標(biāo)移動(dòng)到一個(gè)菜單時(shí)或數(shù)字修改完成后按下確認(rèn)鍵可保存該次設(shè)置和選擇。KEY4鍵為‘返回/取消’功能鍵。液晶顯示屏采用LCM128645采用串行方式的數(shù)據(jù)接口與單片機(jī)僅需3根線連接即可。
2.4 系統(tǒng)原理圖設(shè)計(jì)
按照系統(tǒng)原理框圖形成如圖5所示的原理圖。
當(dāng)系統(tǒng)時(shí)間和設(shè)置的打鈴時(shí)間相等時(shí)單片機(jī)P1.3輸出高電平,通過9013的放大驅(qū)動(dòng)使繼電器K1線圈動(dòng)作,其常開接點(diǎn)NO和COM斷吸合(同時(shí)其常閉接點(diǎn)NC和COM端斷開)控制外部電鈴電源從而響鈴。
3 軟件設(shè)計(jì)
系統(tǒng)軟件主要包括有時(shí)鐘同步、打鈴控制和顯示鍵盤程序等幾部分。時(shí)鐘同步程序是單片機(jī)通過串口讀取E531模塊的實(shí)時(shí)信息,在信息有效地狀態(tài)下提取當(dāng)前的格林威治時(shí)間轉(zhuǎn)換為北京時(shí)間后對(duì)DS1302時(shí)間進(jìn)行校正。單片機(jī)和E531的通信采用NMEA0183協(xié)議中的RMC協(xié)議進(jìn)行通信,波特率設(shè)置為9 600。因此單片機(jī)上電后對(duì)E531進(jìn)行通信格式配置,協(xié)議格式為:“$PUNV,CONFIG,00,CM,00,1000,BPS,MASK*3 4”。該指令中$PUNV和CONFIG為指令碼,固定不變。CM=0000表示采用NMEA0183協(xié)議,CM=0101則表示采用UBP協(xié)議。BPS為串口的波特率取值為9 600。GPS輸出的信息數(shù)據(jù)和對(duì)應(yīng)的代碼如下所示:
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,本設(shè)計(jì)中主要為了讀取標(biāo)準(zhǔn)時(shí)間和日期需要配置GPS輸出RMC信息所以MASK取值為10。因此配置指令為:“$PUNV,CONFIG,00,0000,00,1000,9600,10*34”。
當(dāng)E531捕捉到有效衛(wèi)星信號(hào)后則主動(dòng)通過串口0發(fā)出RMC信息,格式為:“$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>”其每部分的內(nèi)容如表1所示。
在配置好信息輸出后,E531將每秒輸出一次數(shù)據(jù),數(shù)據(jù)信息以‘,’為區(qū)分符。當(dāng)單片機(jī)收到一幀完整的RMC數(shù)據(jù)后,根據(jù)數(shù)據(jù)中<2>的內(nèi)容判斷定位是否有效,當(dāng)定位有效單片機(jī)讀取<1>和<10>得到時(shí)間和日期信息。根據(jù)系統(tǒng)各部分功能得到如圖6所示程序流程圖。
當(dāng)獲得有效格林威治時(shí)間后,對(duì)其進(jìn)行加八小時(shí)調(diào)整,就得到北京時(shí)間然后對(duì)本地DS1302時(shí)鐘芯片校時(shí)。在獲得標(biāo)準(zhǔn)時(shí)間后讀取單片機(jī)內(nèi)設(shè)置的打鈴時(shí)間判斷是否和打鈴時(shí)間相等若相等則進(jìn)行打鈴控制。
4 結(jié)束語
采用GPS模塊E531以單片機(jī)最小系統(tǒng)為核心實(shí)現(xiàn)了一款應(yīng)用靈活、操作方便、時(shí)間準(zhǔn)確的打鈴控制器。該控制器提供了打鈴系統(tǒng)常用的接點(diǎn)接口因此在打鈴電路不變的情況下可以直接替代原有的控制器。通過實(shí)際測(cè)試打鈴控制器和北京時(shí)間的絕對(duì)誤差小于100ms,該誤差主要是由于GPS信息的讀取以及單片機(jī)對(duì)時(shí)間轉(zhuǎn)換和處理的時(shí)延所造成,對(duì)于一般的應(yīng)用場(chǎng)合已經(jīng)完全滿足要求。