王斌儒,司海瑞,張樂年
(南京航空航天大學(xué) 機電學(xué)院,江蘇 南京 210016)
傳統(tǒng)水流速度監(jiān)測系統(tǒng)因傳輸線路的限制,在實際監(jiān)測應(yīng)用中有著諸多約束。例如,監(jiān)測系統(tǒng)成本高、系統(tǒng)電路復(fù)雜、數(shù)據(jù)傳輸距離短、傳輸速度慢,以及系統(tǒng)的實時性和穩(wěn)定性差等。本課題通過對STC12LE5608AD低功耗單片機和TI(Texas Instruments,美國德州儀器公司)的CC1101 高性能射頻收發(fā)器的研究,實現(xiàn)無線流速監(jiān)測系統(tǒng)。相對于傳統(tǒng)系統(tǒng),該系統(tǒng)的性價比有重大提升。
該系統(tǒng)主要分為兩部分:主控部分和測試部分(圖1(a)所示)。主控部分由上位機(PC 機)、STC12LE5608AD增強型低功耗單片機和CC1101 無線數(shù)據(jù)收發(fā)模塊組成(圖1(b)所示);測試部分由STC12LE5608AD、CC1101 無線模塊和水流速度傳感器組成(圖1(c)所示)。其中上位機監(jiān)控軟件是基于VC6.0 MFC 與SQL 數(shù)據(jù)庫開發(fā)而得。STC12LE5608AD 是宏晶科技推出的增強型8051 內(nèi)核的單周期MCU,其低功耗工作模式和內(nèi)部集成的8 路高速10 位ADC 在由電池供電時更具優(yōu)越性。CC1101 是TI 推出的一款低于1GHz 高性能射頻收發(fā)器,其極低功耗和高穩(wěn)定性使其成為本監(jiān)測系統(tǒng)無線數(shù)據(jù)收發(fā)芯片的首選。流速傳感器為南京水利科學(xué)研究院研發(fā)的光電式旋槳流速傳感器,其旋槳葉輪直徑分為12 mm 和15 mm 兩種,旋槳反光面采用先進電鍍工藝,耐磨損,信號強,線性度好,測速范圍廣。
圖1 系統(tǒng)組織結(jié)構(gòu)框圖
光電式旋槳流速傳感器的工作原理是,將旋槳傳感器放入水流測試點,在水流的作用下旋槳轉(zhuǎn)動,其轉(zhuǎn)速正比于水流速度。旋槳的旋轉(zhuǎn)運動轉(zhuǎn)換為電脈沖后,經(jīng)放大整形,由STC12LE5608AD 的計數(shù)器計數(shù)。通過計數(shù)器記錄單位時間轉(zhuǎn)動次數(shù),換算成流速值,流速計算公式為:
式中:V——流速,cm/s;
K——傳感器率定系數(shù);
T——設(shè)定的采樣時間,s;
N——采樣時間內(nèi)的傳感器旋槳轉(zhuǎn)數(shù)(對單反光面旋槳而言。若對雙反光面旋槳,N 應(yīng)除以2 才為采樣時間內(nèi)的傳感器旋槳轉(zhuǎn)數(shù))。
在主控單片機和測試單片機中均要求STC 實現(xiàn)多任務(wù)并行定時。多任務(wù)并行定時是指MCU 內(nèi)部定時器個數(shù)極為有限時,多個任務(wù)(任務(wù)數(shù)﹥定時器個數(shù))均需要定時功能,而定時時間可能不同,且可能為異步定時。例如,任務(wù)A 需要50 ms 定時,任務(wù)B 需要1 s 定時,任務(wù)C 需要1 min 定時。算法流程圖如圖2 所示。
圖2 多任務(wù)并行定時程序流程圖
1)主控部分與上位機之間的RS-232 串行總線
本系統(tǒng)中,STC 與上位機通過串行總線RS-232 相連。RS-232 電平轉(zhuǎn)換采用MAX232 芯片把TTL 電平轉(zhuǎn)換成RS-232 電平格式,可以用于單片機與PC 機通信,以及單片機與單片機之間的通信,在該系統(tǒng)中的電路原理圖如圖3 所示。
圖3 串行總線RS-232 驅(qū)動電路
2)CC1101 無線模塊與STC 之間的SPI 總線
CC1101 采用兼容性SPI 接口與STC 單片機相連接,工作時CC1101 為從機,STC 單片機為主機。單片機與CC1101 的CSN 引腳、MOSI 引腳、SCK 引腳、MISO 引腳相連的I/O 口設(shè)置為輸出,用來完成片選、主機數(shù)據(jù)輸入、SPI 時鐘信號與收發(fā)控制,如圖4 所示。SPI 接口上所有數(shù)據(jù)傳送都是始于MSB[2],數(shù)據(jù)傳送均以一個頭字節(jié)(Header byte)開始,包含一個讀寫位(R/W bit),一個突發(fā)(Burst access)訪問位和6 位地址位(A5~A0),整個接口為環(huán)形總線結(jié)構(gòu),工作方式如圖5 所示。
總之在“廟堂”建筑這一原型導(dǎo)向下,美術(shù)館的展品和建筑是國家文化的表征和“對象化”,是對鄧肯的“文明化儀式”的體現(xiàn)——“將國家的權(quán)威性與文明的觀念等同起來”[9]。
圖4 STC 與CC1101 的SPI 總線連接電路
圖5 總線工作方式
CC1101 無線收發(fā)模塊在保證高通信性能的前提下,以低功耗和體積小為原則進行設(shè)計。當選定模塊工作頻率為433 MHz 時設(shè)計電路原理圖如圖6 所示[3]。
圖6 CC1101 無線收發(fā)模塊電路原理圖
在通過SPI 總線對CC1101 進行讀寫操作時,除了需要嚴格按照上述SPI 的傳輸協(xié)議來設(shè)置I/O 口的時序外,還需要注意SPI 時序圖中特定的時間要求。CC1101 的接口時序如圖7 所示,其中SCK 高電平時間Tch、SCK 低電平時間Tcl、SCK 上升時間Tr、SCK 下降時間Tf為硬件的要求,經(jīng)實際測試單片機的I/O 口可以達到此標準。而CSN下降沿到建立有效數(shù)據(jù)的最長間隔Tcsd和SCK 下降沿到建立有效數(shù)據(jù)的最長間隔Tcd則為時序響應(yīng)要求,編程時注意不能在這些點插入延時程序。需要注意的是有效數(shù)據(jù)至SCK 上升沿最短間隔Tdc、SCK 上升沿后數(shù)據(jù)需保持最短時間Tdh和CSN 下降沿后SCK 時鐘建立的最短時間Tcc,這三個時序點都需要保持最少2ns 的延時。
圖7 CC1101 的SPI 接口時序圖
本系統(tǒng)中的點對點通信(主控系統(tǒng)與測試系統(tǒng)分時通信),RF 函數(shù)的正確配置尤為關(guān)鍵[4],以得到最優(yōu)寄存器設(shè)定和評測性能及功能。RF 配置函數(shù)配置CC1101 的高頻部分,該配置影響的是無線收發(fā)器的收發(fā)頻率、發(fā)送功率、數(shù)據(jù)傳輸速率、無線收發(fā)模式、調(diào)制方式以及數(shù)據(jù)長度等。由于寄存器較多,在此不予以詳細介紹,可以參見文獻[3]。
STC12LE5608AD 單片機內(nèi)部集成的8K EEPROM 與程序存儲空間是分開的,利用IAP/ISP 技術(shù)可將內(nèi)部Data Flash 當作EEPROM,擦寫次數(shù)在10 萬次以上[5],用于保存一些需要在應(yīng)用過程中修改并且斷電不丟失的參數(shù)數(shù)據(jù)。EEPROM 可分為8 個扇區(qū),每個扇區(qū)包含512 Byte,區(qū)間具體劃分的地址表如表1 所示。可對EEPROM 進行字節(jié)讀/字節(jié)寫/扇區(qū)擦除。
表1 STC12LE5608AD 單片機內(nèi)部EEPROM 地址表
考慮到空間冗余,本系統(tǒng)所用的EEPROM 區(qū)間為0010h~0FF5h(#define START_ADDR 0x0010,#define STOP_ADDR 0x0FF5),并將此區(qū)間定義為EEPROM Zone。
STC 中的EEPROM 有兩個突出優(yōu)點,1)斷電后所存儲的內(nèi)容不會丟失,2)可用電信號方便地對其進行擦除和讀寫。但是由于結(jié)構(gòu)上的原因,EEPROM 擦寫次數(shù)有限,使用壽命通常較短。以本系統(tǒng)為例,因為測試部分的子機在工作時每1min 需要進行一次電壓檢測,并將ADC轉(zhuǎn)換后的8 位電壓值寫入EEPROM 中的某個地址單元?,F(xiàn)假設(shè)系統(tǒng)每天工作8 h,EEPROM 可擦寫10 萬次,則EEPROM 的使用壽命為:
顯然,EEPROM 的壽命不能滿足測試系統(tǒng)需要長時間工作的需要,成為整個系統(tǒng)的嚴重缺陷。為此,筆者采用下面介紹的循環(huán)寫入法,顯著延長EEPROM 的使用壽命。
循環(huán)寫入法是指:在EEPROM 中開辟一段空間EEPROM Zone,每次向EEPROM Zone 寫入兩個字節(jié)的數(shù)據(jù),其中低地址字節(jié)數(shù)據(jù)為當前ADC 轉(zhuǎn)換的電壓值,高地址字節(jié)數(shù)據(jù)為本次寫入數(shù)據(jù)的結(jié)束標志Stop_Flag(#define Stop_Flag 0x11),下一次向EEPROM 寫數(shù)據(jù)時,首先查找EEPROM 中Stop_Flag 所在的單元地址Stop_Flag_Addr,然后從Stop_Flag_Addr +1 和Stop_Flag_Addr +2 開始寫數(shù)據(jù),并擦除Stop_Flag_Addr 單元和Stop_Flag_Addr-1 單元的內(nèi)容。若Stop_Flag_Addr==STOP_ADDR,則從START_ADDR 重新開始寫。讀EEPROM 中的數(shù)據(jù)的過程與此類似。具體程序流程圖如8 所示。
圖8 寫/讀EEPROM 程序流程圖
關(guān)于循環(huán)寫入法的幾點說明:
EEPROM Zone 寫數(shù)據(jù)時的示意圖如下:
第1 次寫入數(shù)據(jù):
第i 次寫入數(shù)據(jù):
最后一次寫數(shù)據(jù):
1)0x##、0x&&、0x@ @ 為ADC 轉(zhuǎn)換的電壓值,0x11為Stop_Flag;
2)測試部分的子機在使用前已用標準3.7 V 穩(wěn)壓直流電源標定出參考電壓,且測試部分電源電壓范圍要求為3.5 V~5.0 V,故有:
所以取Stop_Flag 為0x11 不會與系統(tǒng)中ADC 轉(zhuǎn)換的電壓值沖突;
3)由上述寫數(shù)據(jù)示意圖可以看出,ADC 電壓值始終寫入偶數(shù)地址單元中,Stop_Flag 始終寫入奇數(shù)地址單元中。這樣安排有兩點作用:1)每次寫入的兩個字節(jié)數(shù)據(jù)不會跨扇區(qū),因為STC12LE5608AD 中EEPROM 的擦除操作是按扇區(qū)進行的,由表1 可知這樣安排可以優(yōu)化扇區(qū)擦除操作,即一次擦除操作即可完全擦除上一次寫入的數(shù)據(jù),2)最后一次寫入數(shù)據(jù)時不會出現(xiàn)將ADC 電壓值寫入0FF5 h 中,而Stop_Flag(0x11)寫入0010h 中,極大地方便了數(shù)據(jù)的處理。
按照循環(huán)寫入法擦寫EEPROM 使得EEPROM 中的所有存儲單元都得到了均勻的使用。長期使用時不會產(chǎn)生低地址區(qū)擦寫頻率遠高于高地址區(qū)擦寫頻率的現(xiàn)象,不會使EEPROM 中高、低地址區(qū)的寫入次數(shù)出現(xiàn)極大的不平衡。同樣的條件下,采用循環(huán)寫入法對EEPROM 進行擦寫,EEPROM 的使用壽命為:
可見,EEPROM 循環(huán)寫入法大幅度延長了EEPROM的使用壽命以及提高EEPROM 的利用率。使EEPROM 的開發(fā)使用更加充分、合理。
本系統(tǒng)中主控部分與測試部分的無線通信、主控單片機與上位機的串行通信建立之前,首要任務(wù)即是定義各組通信的通信協(xié)議。其中,主控部分與測試部分的無線通信協(xié)議見表2,主控單片機與上位機的串行通信協(xié)議見表3。
表2 主控部分(主機)與測試部分(子機)的無線通信協(xié)議
表3 主控單片機(主機)與上位機(PC 機)的串行通信協(xié)議
續(xù)表3
在無線流速監(jiān)測系統(tǒng)中,為防止因某個測試部分出現(xiàn)通信異常而使主控部分陷入永久等待狀態(tài),主控部分軟件設(shè)計為可編程的等待超時限制,即若在規(guī)定的時間內(nèi)無法得到當前測試部分數(shù)據(jù),則主控部分默認該測試部分通信異常,不再繼續(xù)等待該測試部分發(fā)送數(shù)據(jù),并將通信異常的測試部分的數(shù)量和編號發(fā)至上位機系統(tǒng)。經(jīng)南京水利科學(xué)研究院測試,當測試部分數(shù)量為100 臺,所有測試部分與主控部分通信正常時,主控部分分時提取各個測試部分數(shù)據(jù),并將數(shù)據(jù)上傳至PC 機的總用時時間≤1 s,即主控部分完成對一臺測試部分數(shù)據(jù)的提取和上傳用時時間≤10 ms。綜上所述,本課題中的基于STC 與CC1101 的無線流速監(jiān)測系統(tǒng)能夠滿足實際應(yīng)用中高速、實時的要求。
[1]蔡守允,劉兆衡,張曉紅,等.水利工程模型試驗量測技術(shù)[M].北京:海洋出版社,2008:17-18.
[2]李晶.基于CC1101 的短距離無線通信網(wǎng)絡(luò)的設(shè)計[D].北京:電子科技大學(xué),2011:30-31.
[3]Texas Instrument.CC1101 Datasheet,2005.
[4]RUAN Yaocan,HE Minghao,SONG Shuran,et al.Multipoint wireless pressure detecting system[C].Artificial Intelligence,Management Science and Electronic Commerce (AIMSEC),2011 2nd International Conference on,2011:4092 .
[5]宏晶科技.STC12 系列單片機產(chǎn)品說明書[Z].
[6]李現(xiàn)勇.Visual C++/Turbo C++串口通信編程實踐[M].北京:電子工業(yè)出版社,2004.