單片機(jī)系統(tǒng)中日歷時(shí)鐘自動(dòng)校準(zhǔn)及調(diào)整
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1、概述
在各類(lèi)檢測(cè)控制系統(tǒng)中,需要通過(guò)日歷時(shí)鐘進(jìn)行時(shí)間上的控制或?qū)κ录l(fā)生的時(shí)間進(jìn)行記錄。如電網(wǎng)檢測(cè)系統(tǒng),路燈控制系統(tǒng)等。但日歷時(shí)鐘時(shí)常跑快跑慢的缺陷不可避免。經(jīng)過(guò)日積月累,就會(huì)產(chǎn)生較大的誤差,這會(huì)影響控制與檢測(cè)的準(zhǔn)確性。為了解決日歷時(shí)鐘的準(zhǔn)確度問(wèn)題,我們?cè)O(shè)計(jì)了能夠自動(dòng)校準(zhǔn)和調(diào)整運(yùn)行速度的日歷時(shí)鐘。它在每天的12:00和00:00都會(huì)自動(dòng)校準(zhǔn)一次,并根據(jù)12個(gè)小時(shí)運(yùn)行的誤差大小自動(dòng)調(diào)整時(shí)鐘的運(yùn)行速度。可使時(shí)鐘運(yùn)行的準(zhǔn)確度相當(dāng)高。
我們?cè)O(shè)計(jì)的思路是:利用小型收音機(jī)中接收部分電路接收中央人民廣播電臺(tái)播出的中心頻率為106.1MHz的調(diào)頻信號(hào),并解調(diào)出音頻信號(hào),將音頻信號(hào)輸入兩個(gè)鎖相環(huán)路。這兩個(gè)鎖相環(huán)路分別跟蹤800Hz和1600Hz的報(bào)時(shí)信號(hào)。當(dāng)接收到報(bào)時(shí)信號(hào)時(shí),為單片機(jī)提供外部中斷,通過(guò)執(zhí)行中斷程序即可完成對(duì)日歷時(shí)鐘的自動(dòng)校準(zhǔn)。并根據(jù)運(yùn)行誤差,自動(dòng)調(diào)整日歷時(shí)鐘芯片X1205內(nèi)部的數(shù)字微調(diào)寄存器和模擬微調(diào)寄存器,在+146ppm至-67ppm范圍內(nèi)調(diào)整時(shí)鐘運(yùn)行速度。
2、電路設(shè)計(jì)
電路由單片機(jī)AT89C52、日歷時(shí)鐘芯片、自動(dòng)校準(zhǔn)電路、4×4鍵盤(pán)及顯示電路組成。
2.1日歷時(shí)鐘芯片X1205與AT89C52的接口
X1205是一個(gè)帶有時(shí)鐘、日歷、兩路報(bào)警、振蕩器補(bǔ)償和電池切換的實(shí)時(shí)時(shí)鐘集成電路[1]。 I2C總線結(jié)構(gòu),外接32.768KHz的晶體。時(shí)鐘/控制寄存器的地址范圍為0000H~003FH。
X1205各引腳功能及與單片機(jī)AT89C52的連接如圖1所示:
X1,X2:外接石英晶體振蕩器端。
:在應(yīng)用報(bào)警功能時(shí),該引腳輸出中斷信號(hào),低電平有效。本電路采用循環(huán)中斷方式,每秒中斷一次。
SCL:由單片機(jī)給X1205提供的串行時(shí)鐘的輸入端。
SDA:數(shù)據(jù)輸入/輸出引腳。
VSS:接地端。
VCC、VBACK:前者為電源輸入端,后者為備用電源。在實(shí)際應(yīng)用中,通??梢越映扇鐖D1中所示的電路。在VCC與VBACK之間接二極管,在 VBACK與地之間接電容。在正常供電情況下,VCC給電容充電。掉電后,電容充當(dāng)備用電源。在VCC掉電后,備用電源電流小于2μA ,電容C用10μF的鉭電解質(zhì)電容亦可。
X1205片內(nèi)的數(shù)字微調(diào)寄存器DTR(地址0013H)的第2、1、0三位DTR2、DTR1、DTR0調(diào)整每秒鐘的計(jì)數(shù)值和平均ppm誤差。DTR2 是一個(gè)符號(hào)位,1為正ppm補(bǔ)償,0為負(fù)補(bǔ)償。DTR1和DTR0是刻度位,DTR1給出的是10ppm調(diào)整,DTR0給出的是20ppm調(diào)整。通過(guò)這三位可以在-30ppm 至 +30ppm范圍內(nèi)進(jìn)行調(diào)整補(bǔ)償。模擬微調(diào)寄存器ATR(地址0012H)的第5至第0位ATR5、ATR4……和ATR0用來(lái)調(diào)整片內(nèi)負(fù)載電容。ATR 值以補(bǔ)碼形式表示,ATR(000000)=11.0pF ,每步調(diào)節(jié)0.25pF ,整個(gè)調(diào)整范圍從3.25pF至18.75Pf??梢詫?duì)額定頻率提供從+116ppm至-37ppm的補(bǔ)償。通過(guò)對(duì)DTR及ATR的調(diào)整,可以在+146ppm至-67ppm范圍內(nèi)調(diào)整補(bǔ)償。
2.2 自動(dòng)校準(zhǔn)電路
自動(dòng)校準(zhǔn)電路由接收中央人民廣播電臺(tái)信號(hào)電路和音頻鎖相環(huán)路組成。
接收電路是由一片調(diào)頻收音機(jī)集成電路TDA7010T和少量分離元件組成。TDA7010T集成電路內(nèi)部含有變頻、中頻濾波、鑒頻和前置放大等電路[2]。用于接收中央人民廣播電臺(tái)106.1MHz的信號(hào),并將其解調(diào)出音頻信號(hào)。
鎖相環(huán)路是由兩片NE567及外圍電路組成。該電路所完成的任務(wù)是鎖定來(lái)自接收電路的音頻信號(hào)中800Hz和1600Hz兩個(gè)頻率的報(bào)時(shí)信號(hào)。即將報(bào)時(shí)音頻信號(hào)轉(zhuǎn)換成負(fù)脈沖信號(hào),給單片機(jī)提供外部中斷,經(jīng)中斷程序分析后對(duì)時(shí)鐘進(jìn)行自動(dòng)校準(zhǔn),如圖2所示。圖中只畫(huà)出兩片NE567中鎖定800Hz音頻信號(hào)的部分。NE567由鑒頻器(PDI)、直流放大器(A1)、電流控制振蕩器(CCO)、正交鑒頻器(PDII)及與外部電容C17、C18構(gòu)成的兩個(gè)濾波器組成[3]。NE567的5、6腳外接的電容CT和電阻RT =R2+R3決定著CCO的振蕩頻率f0(800Hz或1600Hz),f0≈1.1/(RTCT) 。選擇CT=0.1μf ,對(duì)于圖中f0=800Hz的電路,RT≈13.7KΩ;圖中未畫(huà)出的負(fù)責(zé)鎖定1600Hz音頻信號(hào)的電路, RT≈6.8KΩ 。
當(dāng)NE567的3腳接收到的音頻信號(hào)中不含有頻率為f0(800Hz和1600Hz)或帶寬內(nèi)的信號(hào)時(shí),則鎖相環(huán)路始終不能進(jìn)入鎖定狀態(tài)。若音頻信號(hào)中含有頻率為f0或帶寬內(nèi)的信號(hào)時(shí),則在鎖相環(huán)路中鑒頻器PDI輸出的電壓經(jīng)內(nèi)部電阻r2及外部電容C18所組成的環(huán)路濾波器濾波后,加到直流放大器A1上。 A1輸出電流來(lái)控制CCO振蕩頻率的變化。從而使CCO振蕩頻率在一定范圍內(nèi)向輸入音頻信號(hào)的某些頻率靠攏。達(dá)到鎖定后,環(huán)路被穩(wěn)定下來(lái)。NE567內(nèi)部正交鑒頻器PDII在鎖相環(huán)路的捕獲過(guò)程中,不斷地接收CCO輸出的信號(hào)和外部輸入信號(hào),隨著兩信號(hào)頻率的逐步接近,其輸出電壓逐漸變小。當(dāng)鎖相環(huán)路進(jìn)入鎖定狀態(tài)時(shí),這個(gè)電壓降低到小于Ur,A2輸出低電平,引起單片機(jī)中斷。
3、程序設(shè)計(jì)
單片機(jī)AT89C52的主程序不斷檢測(cè)X1205的時(shí)、分寄存器單元的數(shù)據(jù)是否為11:50或23:50。若為其中一個(gè),將P2.7引腳置0,打開(kāi)接收信號(hào)電路的電源,開(kāi)中斷。報(bào)時(shí)信號(hào)共6聲,每聲長(zhǎng)度為0.5秒,每?jī)陕曢g隔時(shí)間為1.5秒,前5聲信號(hào)頻率為800Hz,第6聲信號(hào)頻率為1600Hz。兩個(gè)頻率的報(bào)時(shí)信號(hào)經(jīng)NE567鎖相后產(chǎn)生的負(fù)脈沖經(jīng)與門(mén)輸入到AT89C52的中斷輸入端,引起中斷后89C52通過(guò)定時(shí)器T0測(cè)量脈沖寬度。在報(bào)時(shí)前后,電臺(tái)往往要播出音樂(lè)廣告,其音樂(lè)聲中具有800Hz和1600Hz左右的音頻信號(hào)甚多,但音樂(lè)聲的頻率是連續(xù)變化的,在某一頻寬范圍內(nèi)持續(xù)的時(shí)間較短,將脈寬小于400ms的信號(hào)視為干擾信號(hào)不予考慮。若接收到脈寬大于400ms 的1600Hz的音頻信號(hào)所產(chǎn)生的中斷時(shí),并在此之前有效的800Hz的報(bào)時(shí)信號(hào)已達(dá)5次,則對(duì)顯示數(shù)據(jù)和X1205內(nèi)部時(shí)鐘寄存器的數(shù)據(jù)予以修正。并根據(jù)12個(gè)小時(shí)以來(lái)時(shí)鐘運(yùn)行的誤差(毫秒級(jí)的誤差借助89C52的定時(shí)器T1測(cè)得)大小修正X1205的數(shù)字微調(diào)寄存器和模擬微調(diào)寄存器的數(shù)據(jù)。將P2.7 引腳置1,關(guān)斷接收信號(hào)電路的電源,并關(guān) 中斷。
主程序檢測(cè)到X1205的時(shí)、分寄存器單元的數(shù)據(jù)是12:10或00:10時(shí),若P2.7引腳仍輸出低電平,說(shuō)明在20分鐘內(nèi)未接收到報(bào)時(shí)信號(hào),取消接收?qǐng)?bào)時(shí)信號(hào)狀態(tài)及所有標(biāo)記,關(guān)斷接收信號(hào)電路的電源,并關(guān) 中斷。程序流程圖如圖3。
4、結(jié)束語(yǔ)
經(jīng)作者長(zhǎng)時(shí)間實(shí)驗(yàn)觀察,干擾信號(hào)持續(xù)時(shí)間大都小于100ms,達(dá)到200ms者屬偶然現(xiàn)象。以400ms的脈寬限制干擾信號(hào)是比較安全的。如果出現(xiàn)持續(xù)時(shí)間大于400ms的干擾信號(hào),也只能在接收到5次800Hz的報(bào)時(shí)信號(hào)后1.5S內(nèi)接收到1600Hz的干擾信號(hào)才能出現(xiàn)誤差小于1.5S的誤校準(zhǔn)。這種可能性是罕見(jiàn)的。即便出現(xiàn)也會(huì)在12個(gè)小時(shí)后予以重新校準(zhǔn)。
參考文獻(xiàn)
[1] X1205 Real Time Clock/Calendar. www.icbase.com
[2] 集成電路手冊(cè)編委會(huì).中外集成電路數(shù)據(jù)手冊(cè)•音響電路.北京:電子工業(yè)出版社,1997:1372-1373.
[3] 張厥盛,鄭繼禹,萬(wàn)心平.鎖相技術(shù). 西安:西安電子科技大學(xué)出版社,1994:118