PIC單片機(jī)設(shè)計(jì)的便攜式測(cè)試記錄儀
?以追求高可靠、低功耗、小體積設(shè)計(jì)思想的本記錄儀具有如下功能:對(duì)現(xiàn)場(chǎng)物理量進(jìn)行實(shí)時(shí)采集、保存、處理與顯示;自動(dòng)識(shí)別現(xiàn)場(chǎng)安裝的傳感器數(shù)量、傳感器號(hào)和量程;自動(dòng)和手動(dòng)兩種采集方式,自動(dòng)采集適用于長(zhǎng)期無(wú)人值班的固定場(chǎng)合,手動(dòng)采集便于對(duì)分布在不同區(qū)域的物理量進(jìn)行測(cè)試;與PC機(jī)通訊,可根據(jù)需要將采集數(shù)據(jù)下載至PC數(shù)據(jù)庫(kù);實(shí)時(shí)打印;自檢功能,避免了系統(tǒng)運(yùn)行過(guò)程中可能遇到本身無(wú)法容錯(cuò)處理的異常事件而導(dǎo)致的死機(jī)現(xiàn)象。
基于PIC單片機(jī)的便攜式測(cè)試記錄儀(以下簡(jiǎn)稱(chēng)記錄儀)既有一般數(shù)據(jù)采集裝置的實(shí)時(shí)采集與保存功能,同時(shí)又能夠?qū)Σ杉瘮?shù)據(jù)進(jìn)行實(shí)時(shí)處理、顯示和打印。
?適用于對(duì)采集速度要求不高、交流供電比較困難以及無(wú)須長(zhǎng)期留人值班的場(chǎng)合。
??????? 1 硬件設(shè)計(jì)
??????? 1.1 總體設(shè)計(jì)原則
根據(jù)高可靠、低功耗、小體積的設(shè)計(jì)思想及應(yīng)用對(duì)象幾乎對(duì)采集速度無(wú)要求(此處指系統(tǒng)本身的采集速度已遠(yuǎn)遠(yuǎn)超過(guò)實(shí)際應(yīng)用要求)的特性,總體設(shè)計(jì)原則是: 元器件采用低功耗、寬范圍工作電源的CMOS集成電路;總線采用口線少的串行總線;允許情況下,盡量用軟件實(shí)現(xiàn)硬件功能,用中斷代替查詢(xún)工作方式;一旦系統(tǒng)空閑則立即使其進(jìn)入低功耗休眠狀態(tài),當(dāng)需要時(shí)再用外部中斷予以喚醒。
1.2 硬件組成
根據(jù)總體設(shè)計(jì)原則,硬件組成如圖1所示。其中:單片機(jī)為美國(guó)MicroChip公司的中檔產(chǎn)品PIC16C74,+5V供電、4MHz主頻時(shí)功耗低于2mA;E2PROM存儲(chǔ)陣列由超低工作電壓(+2.5V~+5.5V)、具有可編程選擇多種特性的8KB智能化電可擦除存貯器24LC65芯片組成。其中,0#為傳感器識(shí)別片(以下簡(jiǎn)稱(chēng)識(shí)別片),保存現(xiàn)場(chǎng)實(shí)際安裝的傳感器數(shù)量、傳感器號(hào)及量程。該芯片被設(shè)計(jì)在放大器板上,永久安裝于現(xiàn)場(chǎng)。傳感器號(hào)由4位數(shù)字組成,前2位表示組號(hào),后2位表示傳感器組內(nèi)號(hào)。1# 為字典片,分為三個(gè)存儲(chǔ)區(qū):第一存儲(chǔ)區(qū)被設(shè)置成高壽命寫(xiě)入?yún)^(qū),保存表頭參數(shù),如疵點(diǎn)單元計(jì)數(shù)器、記錄計(jì)數(shù)器、記錄指針、自動(dòng)采集時(shí)間等;第二存貯區(qū)為字典區(qū),保存?zhèn)鞲衅餍拚禂?shù)、實(shí)時(shí)打印所涉及的漢字國(guó)標(biāo)碼等,查找時(shí)以傳感器號(hào)為關(guān)鍵字進(jìn)行指針定位;第三存儲(chǔ)區(qū)被定義為疵點(diǎn)單元地址隊(duì)列,保存在寫(xiě)過(guò)程中遇到的疵點(diǎn)單元地址。2#~7# 為數(shù)據(jù)片,保存實(shí)時(shí)采集的數(shù)據(jù)。RS232口為最簡(jiǎn)單的零調(diào)制3線經(jīng)濟(jì)型,具有雙重功能,接上TPμP_T微型打印機(jī),則進(jìn)行實(shí)時(shí)打印;接上PC機(jī),則與PC進(jìn)行全雙工通訊。A/D轉(zhuǎn)換器MAX189為串行、12位逐次逼近型,功耗75mW,最大轉(zhuǎn)換時(shí)間8.5μs。實(shí)時(shí)時(shí)鐘DS1302具有可編程涓流充電功能,能夠提供秒、分、時(shí)、日、月、星期、年至2100年,并且對(duì)閏年和小于31天的月份進(jìn)行自動(dòng)調(diào)節(jié)。鍵盤(pán)由手動(dòng)、自動(dòng)、通訊、打印、清零等五個(gè)觸摸按鍵組成,通過(guò)按鍵產(chǎn)生外部中斷喚醒單片機(jī)完成相應(yīng)功能。液晶顯示器(LCD)采用4位半靜態(tài)方式驅(qū)動(dòng),用來(lái)顯示處理后的結(jié)果以及系統(tǒng)運(yùn)行過(guò)程中檢錯(cuò)的代碼。32.768kHz晶振用于自動(dòng)采集時(shí)產(chǎn)生定時(shí)中斷。
? 1.3 工作原理
本記錄儀基本工作原理是:一旦系統(tǒng)完成某項(xiàng)工作后,立即進(jìn)入低功耗休眠狀態(tài),當(dāng)需要時(shí)再由外部中斷予以喚醒。
1.3.1 加電初始化
加電后,首先初始化有關(guān)寄存器和接口,然后自檢各功能部件。測(cè)試結(jié)果無(wú)論正?;蝈e(cuò)誤均以代碼形式顯示在LCD上,進(jìn)入休眠狀態(tài)。
1.3.2 采 集
本記錄儀有自動(dòng)和手動(dòng)兩種采集方式。
休眠狀態(tài)下,當(dāng)按手動(dòng)鍵時(shí)則進(jìn)入手動(dòng)采集過(guò)程。首先讀識(shí)別片和字典片,以確立現(xiàn)場(chǎng)中實(shí)際安裝的傳感器數(shù)量、量程及數(shù)據(jù)片可寫(xiě)空間。若數(shù)據(jù)片未寫(xiě)滿(mǎn),則從組內(nèi)0通道傳感器開(kāi)始,循環(huán)對(duì)現(xiàn)場(chǎng)中實(shí)際安裝的所有傳感器進(jìn)行采集、處理、顯示,直至當(dāng)再按一次手動(dòng)鍵時(shí),方將傳感器號(hào)、量程、最近一次采集值(注意:不是實(shí)時(shí)處理后結(jié)果,而是原始A/D轉(zhuǎn)換碼值)以及采集時(shí)刻的日歷信息─年、月、日、時(shí)、分、秒等組成的記錄寫(xiě)入記錄指針指向的數(shù)據(jù)片中,接著對(duì)表頭參數(shù)進(jìn)行修改,進(jìn)入休眠狀態(tài)。
休眠狀態(tài)下,當(dāng)按自動(dòng)鍵時(shí)則進(jìn)入自動(dòng)采集過(guò)程。首先開(kāi)放定時(shí)中斷,然后進(jìn)入采集─保存─休眠─喚醒─再采集─再保存─再休眠─再喚醒的循環(huán)狀態(tài),直到數(shù)據(jù)片被寫(xiě)滿(mǎn)或人工干預(yù)結(jié)束自動(dòng)采集過(guò)程為止。上述喚醒由外部中斷完成,其單片機(jī)從休眠狀態(tài)到喚醒工作之間的時(shí)間間隔有等距和變距兩種形式可供選擇。所謂等距即每次采集的時(shí)間間隔相同。與其相反,變距則每次采集的時(shí)間間隔隨采集次數(shù)的增多而變長(zhǎng)或縮短,視實(shí)際應(yīng)用需要而確定。本記錄儀出廠設(shè)置為等距1小時(shí),即每間隔1小時(shí)采集1次。
1.3.3 通訊和打印
休眠狀態(tài)下,當(dāng)按通訊鍵時(shí),進(jìn)入和PC通訊過(guò)程。首先由PC端Win98下的專(zhuān)門(mén)處理軟件完成串口1(若記錄儀與PC Com1口相連)或串口2(若記錄儀與PC Com2口相連)的自動(dòng)配置,然后可根據(jù)工具條上的圖文進(jìn)行等距、變距、選擇、數(shù)據(jù)下載、事后處理等操作。
休眠狀態(tài)下,當(dāng)按打印鍵后,則在TPμP_T微型打印機(jī)上打印出所有保存的記錄。
1.3.4 清 零
休眠狀態(tài)下,當(dāng)按清零鍵時(shí),則清除數(shù)據(jù)片中保存的所有記錄,即使記錄指針指向數(shù)據(jù)片首址。
2 軟件設(shè)計(jì)
本記錄儀軟件由實(shí)時(shí)處理程序和組成記錄儀諸功能部件的驅(qū)動(dòng)程序組成。
2.1 實(shí)時(shí)處理程序
實(shí)時(shí)處理程序調(diào)用相關(guān)驅(qū)動(dòng)程序完成模擬量采集、數(shù)字濾波、插值運(yùn)算、實(shí)時(shí)顯示、記錄合成及記錄保存。本記錄儀采用的記錄格式從高至低依序?yàn)?傳感器號(hào),量程,采集值,年,月,日,時(shí),分,秒。
2.2 驅(qū)動(dòng)程序設(shè)計(jì)
驅(qū)動(dòng)程序設(shè)計(jì)的基本思想是:首先完成相關(guān)接口、寄存器的初始化,然后根據(jù)具體物理部件產(chǎn)生微操作時(shí)序,并對(duì)操作過(guò)程中遇到的異常事件進(jìn)行容錯(cuò)處理。
2.2.1 讀/寫(xiě)E2PROM 驅(qū)動(dòng)程序
I2C總線由時(shí)鐘線(SCL)和數(shù)據(jù)線(SDA)組成。根據(jù)I2C總線協(xié)議,將圖1所采用的24LC65芯片的讀/寫(xiě)操作按操作順序分解為:使總線處于空閑狀態(tài)(SCL、SDA均為高電平);發(fā)送讀/寫(xiě)啟動(dòng)信號(hào)(SCL保持高電平,SDA從高變低產(chǎn)生下降沿);在數(shù)據(jù)線SDA上讀或?qū)憯?shù)據(jù)位(SCL高電平時(shí),SDA狀態(tài)為有效的讀或?qū)憯?shù)據(jù)位,SDA狀態(tài),即0或1的變化必須在 SCL低電平期間完成);發(fā)送讀/寫(xiě)結(jié)束信號(hào)(SCL保持高電平,SDA從低變高產(chǎn)生上升沿)。如果為寫(xiě)操作,每寫(xiě)完1字節(jié)數(shù)據(jù)后,24LC65在數(shù)據(jù)線SDA上回送握手應(yīng)答信號(hào),表示該字節(jié)數(shù)據(jù)已被可靠寫(xiě)入。以上微操作通過(guò)匯編語(yǔ)言編程實(shí)現(xiàn)。
本記錄儀以記錄方式讀/寫(xiě)數(shù)據(jù)片。因此,對(duì)寫(xiě)來(lái)說(shuō),首先讀字典片,以便用其中的表頭參數(shù)判斷當(dāng)前數(shù)據(jù)片是否已寫(xiě)滿(mǎn)。若已寫(xiě)滿(mǎn),則在LCD上顯示無(wú)寫(xiě)空間標(biāo)記代碼,然后返回休眠狀態(tài);否則,將記錄寫(xiě)入記錄指針?biāo)赶虻臄?shù)據(jù)片中,同時(shí)對(duì)表頭參數(shù)進(jìn)行修改。在寫(xiě)過(guò)程中,重要的是處理疵點(diǎn)單元。盡管24LC65在寫(xiě)過(guò)程中出現(xiàn)的疵點(diǎn)概率極少,但若不正確處理,則會(huì)導(dǎo)致目標(biāo)數(shù)據(jù)丟失甚至出現(xiàn)系統(tǒng)死機(jī)現(xiàn)象。作者曾采用數(shù)據(jù)輪詢(xún)技術(shù)進(jìn)行容錯(cuò)處理,收到了良好的效果。其基本思想是:每當(dāng)在數(shù)據(jù)線上寫(xiě)完1字節(jié)數(shù)據(jù)后,便反復(fù)查詢(xún)24LC65回送的應(yīng)答信號(hào),但最多不超過(guò)50次(此數(shù)足夠24LC65寫(xiě)入時(shí)間);若超過(guò)查詢(xún)次數(shù)仍無(wú)應(yīng)答信號(hào),便認(rèn)為該單元為疵點(diǎn)單元,將其地址記入疵點(diǎn)單元地址隊(duì)列,并使疵點(diǎn)單元計(jì)數(shù)器加1,然后在下一比鄰單元繼續(xù)寫(xiě)入原數(shù)據(jù)。如果連續(xù)兩單元為疵點(diǎn)單元,則認(rèn)為整個(gè)芯片有問(wèn)題,此時(shí),在LCD上顯示該單元所在的芯片號(hào)(芯片號(hào)參見(jiàn)圖1),然后,返回休眠狀態(tài)。
對(duì)讀來(lái)說(shuō),首先判斷數(shù)據(jù)片是否為空。若為空,則在LCD上顯示無(wú)記錄標(biāo)記代碼,然后返回休眠狀態(tài)。否則,繼續(xù)判斷數(shù)據(jù)片是否有疵點(diǎn),如果無(wú)疵點(diǎn),則從數(shù)據(jù)片首址開(kāi)始按序讀出所有記錄;否則,在按序讀記錄過(guò)程中,根據(jù)疵點(diǎn)單元地址隊(duì)列內(nèi)容,跳過(guò)所有疵點(diǎn)單元,以保證讀出的記錄連續(xù)、真實(shí)、可靠。
2.2.2 采集驅(qū)動(dòng)程序設(shè)計(jì)
A/D轉(zhuǎn)換器MAX189所帶串口與單片機(jī)PIC16C74的SPI口完全兼容。因此,在A/D轉(zhuǎn)換完成后,只要啟動(dòng)單片機(jī)SPI口產(chǎn)生13個(gè)同步時(shí)鐘脈沖便可連續(xù)兩次從SPI數(shù)據(jù)緩沖器上獲得12位轉(zhuǎn)換結(jié)果。由于本記錄儀采集的參數(shù)個(gè)數(shù)依現(xiàn)場(chǎng)安裝的傳感器數(shù)不同而不同,因此,驅(qū)動(dòng)程序必須能予以自動(dòng)識(shí)別。圖2為采集驅(qū)動(dòng)程序流程,其基本設(shè)計(jì)思想是:首先讀識(shí)別片,以確定實(shí)際安裝的傳感器數(shù)量,然后從0通道傳感器開(kāi)始進(jìn)行采集,直到實(shí)際安裝的最后一個(gè)傳感器采集完畢為止。圖2中:CHAN:通道寄存器;COUNT:傳感器數(shù)量寄存器。
3 測(cè)試設(shè)計(jì)
測(cè)試設(shè)計(jì)是通過(guò)測(cè)試程序完成對(duì)記錄儀本身各功能硬件的性能測(cè)試。測(cè)試程序獨(dú)立于實(shí)際應(yīng)用程序,在單獨(dú)的單片機(jī)中,使用時(shí)只要拔掉記錄儀模板上的單片機(jī)而用其代之即可。測(cè)試程序設(shè)計(jì)的基本思想是:首先根據(jù)不同測(cè)試對(duì)象(即部件)產(chǎn)生不同的測(cè)試數(shù)據(jù)和測(cè)試期望數(shù)據(jù),然后以測(cè)試數(shù)據(jù)為入口參數(shù),調(diào)度相關(guān)驅(qū)動(dòng)程序產(chǎn)生目標(biāo)數(shù)據(jù),最后用測(cè)試期望數(shù)據(jù)與目標(biāo)數(shù)據(jù)進(jìn)行比較,以此判斷所測(cè)硬件性能之良劣。
3.1 E2PROM測(cè)試設(shè)計(jì)
E2PROM測(cè)試需要與PC機(jī)通訊。其基本原理是:首先產(chǎn)生8種測(cè)試數(shù)據(jù):0x00、0xff、0x55、0xaa、0x0f、0xf0、0x5a、0xa5(0x表示16進(jìn)制數(shù)),然后分別以此8種測(cè)試數(shù)據(jù)為入口參數(shù),交替調(diào)度寫(xiě)、讀E2PROM驅(qū)動(dòng)程序3次(即先寫(xiě)后讀3次)。每讀一次,與測(cè)試期望數(shù)據(jù)(此處測(cè)試數(shù)據(jù)與測(cè)試期望數(shù)據(jù)相同)進(jìn)行比較,若不相等,則對(duì)相應(yīng)片錯(cuò)誤計(jì)數(shù)器加1。測(cè)試結(jié)果實(shí)時(shí)地顯示在記錄儀LCD和PC機(jī)上。LCD只顯示總錯(cuò)誤個(gè)數(shù),PC機(jī)則依次顯示、保存總錯(cuò)誤個(gè)數(shù)及錯(cuò)誤單元地址。
3.2 A/D測(cè)試設(shè)計(jì)
A/D測(cè)試也需要與PC機(jī)通訊。由于本記錄儀最多可采集8路傳感器參數(shù),因此,測(cè)試程序?qū)︽I盤(pán)重新定義如下:當(dāng)手動(dòng)、自動(dòng)、通訊、打印、清零鍵有鍵按下時(shí),對(duì)應(yīng)測(cè)試0~4通道傳感器;當(dāng)手動(dòng)、自動(dòng)、通訊鍵其中之一與清零鍵同時(shí)按下時(shí),則對(duì)應(yīng)測(cè)試5~7通道傳感器。測(cè)試只對(duì)放大器滿(mǎn)量程的10%、50%、90%等3點(diǎn)進(jìn)行采集。其原理是:首先,測(cè)試程序掃描鍵盤(pán),當(dāng)掃描到有鍵按下時(shí),則調(diào)度采集驅(qū)動(dòng)程序?qū)υ撴I盤(pán)定義的通道傳感器進(jìn)行連續(xù)采集,采集結(jié)果不作任何處理,實(shí)時(shí)地顯示在記錄儀LCD和PC機(jī)上。LCD只顯示當(dāng)前的A/D轉(zhuǎn)換碼值,PC機(jī)則顯示并保存當(dāng)前A/D轉(zhuǎn)換碼值、各點(diǎn)最大、最小轉(zhuǎn)換碼值及兩者絕對(duì)差值。技術(shù)人員可以此判斷前向通道(傳感器、放大器、A/D)工作性能的好壞。筆者曾連續(xù)測(cè)試0通道傳感器6個(gè)半小時(shí),發(fā)現(xiàn)最大碼差為9,表明前向通道工作相當(dāng)穩(wěn)定。
3.3 實(shí)時(shí)時(shí)鐘測(cè)試設(shè)計(jì)
實(shí)時(shí)時(shí)鐘DS1302測(cè)試需要借助PC機(jī)完成。其測(cè)試原理是:首先PC機(jī)上的測(cè)試程序讀PC系統(tǒng)日歷信息─年、月、日、時(shí)、分、秒、星期,并進(jìn)行發(fā)送。記錄儀在接收后,立即調(diào)度寫(xiě)DS1302驅(qū)動(dòng)程序?qū)⒔邮盏腜C系統(tǒng)日歷信息寫(xiě)入DS1302相關(guān)功能寄存器中,并使DS1302以此為時(shí)基進(jìn)行計(jì)時(shí)。此后,進(jìn)入記錄儀發(fā)送、PC接收的無(wú)限循環(huán)狀態(tài),即:每隔10ms,記錄儀調(diào)度一次讀DS1302驅(qū)動(dòng)程序,并將獲得的最近日歷信息予以迅速發(fā)送;而處于接收狀態(tài)的PC接收后,立即與PC系統(tǒng)當(dāng)前日歷信息進(jìn)行比較,如此循環(huán),直到人工干預(yù)結(jié)束測(cè)試為止。在上述測(cè)試過(guò)程中,記錄儀LCD只實(shí)時(shí)地顯示日歷信息的分、秒兩位,PC機(jī)則實(shí)時(shí)地顯示記錄儀和PC機(jī)兩端完整的日期、時(shí)間及兩者比較差。另外,通過(guò)觀察記錄儀LCD上顯示的分、秒位變化,也可初步判定DS1302的性能。筆者曾連續(xù)運(yùn)行該測(cè)試程序24小時(shí),偏差極小,足以滿(mǎn)足本系統(tǒng)的需要。
4 實(shí)際應(yīng)用
本記錄儀已投入實(shí)際應(yīng)用一年多,其可靠性、穩(wěn)定性、操作性和精度均受用戶(hù)歡迎。不足之處是:目前功耗還比較大,作者在+12V供電時(shí)測(cè)得電流為45.5mA,尚需進(jìn)一步改進(jìn)。
? 參考文獻(xiàn)
1 竇振忠. PIC系列單片機(jī)原理和程序設(shè)計(jì).北京:北京航空航天大學(xué)出版社,1998
2 王福瑞. 單片機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全. 北京:北京航空航天大學(xué)出版社,1999
3 王幸之. 單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù). 北京:北京航空航天大學(xué)出版社,2000
評(píng)論
查看更多