引言
在實際工作中,對于多路電阻進行測量,一般采用直接測量法人工操作進行,雖然這種方法很成熟,但所用的配套設(shè)備較多,測量數(shù)據(jù)手工紀(jì)錄、人工計算,操作繁瑣、效率較低,事后的數(shù)據(jù)處理及出具測量報告既費時又費力,易出現(xiàn)人為因素造成的錯判、漏判等,難以保證測量質(zhì)量,影響了科研、實驗生產(chǎn)任務(wù)的順利進行。針對這些問題本文設(shè)計了一種基于MSP430單片機的電阻多路測量系統(tǒng),系統(tǒng)采用2個MSP430F169單片機,利用該型號單片機自身集成的I2C通信模塊實現(xiàn)雙單片機系統(tǒng)。使用雙機結(jié)構(gòu)的增強了系統(tǒng)的抗*力和可靠性,提高了測量的精度的和穩(wěn)定性。該
多路電阻測量系統(tǒng)具有結(jié)構(gòu)簡單、成本低廉、功耗低等特點,其測量范圍為10μΩ~3kΩ、測量精度為0.2%??捎糜诳茖W(xué)研究和工程運用等領(lǐng)域,具有較強的實用價值。系統(tǒng)的設(shè)計思想和方法也是對雙單片機系統(tǒng)研究的有益的嘗試,為后續(xù)的研究打下基礎(chǔ)。
1、多路電阻測量系統(tǒng)簡介
1.1MSP430單片機
MSP430系列單片機是美國德州儀器(TI)推出的一種16位超低功耗單片機。該系列單片機具有運算能力強,片內(nèi)外設(shè)豐富,低電壓,超低功耗,速度快,效率高等特點。其電源電壓采用1.8~3.6V低電壓,RAM數(shù)據(jù)保持方式下耗電僅為0.1μA,活動模式耗電250μA/MIPS,I/O輸入端口的zui大漏電流僅為50nA,單片機系統(tǒng)有一種活動模式和5種低功耗模式,并且各種模式間可以自由切換。采用矢量中斷,支持十多個中斷源,并可任意嵌套,用中斷請求將CPU喚醒只需6μs。具備精簡指令集合和較高的處理速度,大量的片內(nèi)寄存器可以參加運算。有豐富的I/O接口,支持JATG在線編程和調(diào)試。其中,MSP430F169單片機集了64KB的FLASHROM和2KB的RAM,在多數(shù)應(yīng)用場合無需為處理器另外擴展ROM,也無需擴展RAM,片內(nèi)具有雙通道的串行數(shù)據(jù)接口(USART模塊),可以實現(xiàn)UART,SPI和I2C三種通信模式。雙單片機之間采用USART0串行通信模塊實現(xiàn)I2C主從式通信,可以使系統(tǒng)通信簡單。
1.2系統(tǒng)框圖
本系統(tǒng)為基于雙MSP430F169單片機多路電阻測量系統(tǒng)。使用2個MSP430F169單片機協(xié)調(diào)工作,從機MSP430F169利用自帶的8路A/D通道實現(xiàn)多路數(shù)據(jù)的測量、采集并對所采集的數(shù)據(jù)進行計算與分析,主機MSP430F169負責(zé)儲存、控制、顯示以及和上位機的通信。利用MSP430F169單片機的固有的USART模塊,采用I2C總線進行串行通信,實現(xiàn)處理器之間的命令控制和數(shù)據(jù)交換。電阻測量電路采用恒流源測量電阻,將待測電阻接入恒流源電路,對電阻兩端施加恒定電流,在電阻兩端形成穩(wěn)定的壓降。由于電阻兩端輸出的電壓值比較小,需要通過放大電路對電壓進行放大。通過單片機自帶的A/D接口對待測電壓進行采集,由歐姆定律算出相應(yīng)的阻值,再除以放大倍數(shù),即可得到待測小電阻的阻值。系統(tǒng)框圖如圖1所示。
2、硬件電路的設(shè)計
系統(tǒng)硬件電路主要由從單片機恒流源電路和主單片機電路組成,主單片機電路部分主要實現(xiàn)控制、顯示、存儲、與上位機通信等功能,硬件電路比較簡單限于篇幅不再累述。從單片機恒流源電路主要由電流源電路、放大器電路和跟隨器電路組成。以下著重對系統(tǒng)的從單片機恒流源電路的設(shè)計進行介紹。
2.1電流源電路設(shè)計
電阻測量的精度取決于恒流源的精度和穩(wěn)定性和放大器的穩(wěn)定性。本文系統(tǒng)中電流源電路采用BURRBROWN公司的REF200高精度電流源實現(xiàn)。該芯片內(nèi)集成了2個100μA的恒流源和一個鏡像電流源。其zui大特點是提供的電流精度高(100±0.5)μA。使用方便,只需在芯片的管腳7或者管腳8加上2.5~40V之間的任何一個電壓。即可在管腳1或者管腳2上分別輸出100μA的電流。使用靈活,通過不同的連接方式還可以實現(xiàn)50μA,200μA,300μA,400μA的電流輸出。本文系統(tǒng)要實現(xiàn)8路電阻測量,因而需要提供8路穩(wěn)定電流。系統(tǒng)使用4片REF200芯片,每個芯片提供2路100μA的電流源實現(xiàn)8路電流輸出。每個芯片的硬件電路如圖2(a)所示。
2.2放大電路設(shè)計
為了保證測量的穩(wěn)定性,同時考慮到通過單片機控制的放大器的增益實現(xiàn)量程的轉(zhuǎn)變,因而本系統(tǒng)采用TI公司的增益可編程儀表放大器PGA204,該放大器zui大的特點是通過編程可以實現(xiàn)1,10,100,1000的可選擇增益,具有很高的共模抑制比(115dB,G=1000時),其輸入偏置電壓zui大為50μV,zui大偏置電流為2nA,芯片功耗低,放大器工作電壓為僅±4.5V,不工作時的電流僅為5mA。增益控制很靈活,芯片的管腳A0和管腳A1控制放大器增益,與從機的I/O相連。通過在管腳A0和管腳A1輸入對應(yīng)的高電平或者低電平即可獲得相應(yīng)的增益??删幊谭糯笃髟鲆?,實現(xiàn)了測量量程的轉(zhuǎn)換。每一路放大電路的硬件連接如圖2(b)所示。
2.3跟隨器電路設(shè)計
為了保證恒流源的穩(wěn)定,在放大電路之后連接跟隨器電路,跟隨器電路選擇TI公司的高速精密運算放大器OPA602來實現(xiàn),該放大器的精度較高,偏置電流僅為1pA。具體硬件電路如圖2(c)所示。
恒流源電路由電流源電路、放大器電路和跟隨器電路組成。該恒流源所提供的電流與放大電路的增益G相關(guān),系統(tǒng)選用模擬AVcc為參考電源,大小為3V,放大電路G增益為1時,系統(tǒng)測量的zui大電阻為3kΩ。該恒流源電路具有結(jié)構(gòu)簡單,精度高,穩(wěn)定性強,功耗低的特點。
3、雙單片機協(xié)同工作
3.1I2C總線
I2C總線是由Philips公司開發(fā)的用于內(nèi)部控制的簡單雙向兩線串行總線,該總線具有協(xié)議完善、支持芯片多、占有I/O口線少等優(yōu)點。I2C總線是由串行數(shù)據(jù)總線(SDA)和串行時鐘總線(SCL)組成,一個用來傳輸數(shù)據(jù),另一個用來控制數(shù)據(jù)傳輸時鐘。該總線標(biāo)準(zhǔn)模式速度為100Kb/s,快速模式速度可以達到400Kb/s,高速模式可達3.4Mb/s,I2C能在zui大總線負載下實現(xiàn)100Kb/s的速率運行,且器件連接的個數(shù)只受zui大400pF的電容限制。數(shù)據(jù)在I2C總線上的通行過程如圖3所示。
SDA和SCL是通過一個上拉電阻與正電源連接的雙向信號線。當(dāng)總線空閑時,這兩條信號線都保持高電平。當(dāng)SCL線處于高電平、SDA線從高電平向低電平跳變時為起始信號;當(dāng)SCL線處于高電平、SDA線從低電平向高電平跳變時為停止信號。起始條件和停止條件之間為通信傳輸?shù)倪^程。
3.2單片機的拓撲結(jié)構(gòu)
由于MSP430F169單片機的串行通信模塊USART0可以設(shè)置成I2C模式進行工作。在多路電阻測量系統(tǒng)中,主機和從機通過各自的串行通信模塊USART0進行I2C主/從雙向通信,主機和從機都能夠接收和發(fā)送數(shù)據(jù),但總線的時鐘信號SCL、起始信號、終止信號都由主機產(chǎn)生。I2C總線在實現(xiàn)時,只需將主機和從機的管腳P3.1(SDA)和管腳P3.3(SCL)相連,并將管腳設(shè)置成I2C模式,同時I2C總線必須通過兩個電阻分別將總線的SDL和S拉高。單片機的拓撲圖如圖4所示。
4、軟件設(shè)計
4.1雙機通信的實現(xiàn)
MSP430單片機的I2C模塊有主發(fā)送、主接收、從發(fā)送、從接收4種工作模式。雙機通信程序設(shè)計主要包括初始化程序、主機模式程序、從機模式程序和中斷服務(wù)程序四部分。
初始化程序包括設(shè)置單片機P3.1(SDA)和管腳P3.3(SCL)為為傳輸端口,端口方向。設(shè)置系統(tǒng)時鐘,系統(tǒng)時鐘由主機產(chǎn)生,選擇SMCLK為系統(tǒng)時鐘。I2C模塊初始化,將控制寄存器U0CTL的控制使能位(I2CEN)置1。U0CTL一個8位的寄存器。通過對該寄存器的設(shè)置來確定通信模式、通信協(xié)議和校驗位的選擇。
主機模式程序功能是在主機模式下完成數(shù)據(jù)的收發(fā)。首先要對主機接收、發(fā)送初始化,定義主機的地址,對R/W位置位設(shè)置接收模式,對中斷寄存器I2CIE設(shè)置定義中斷使能。主機接收、發(fā)送初始化程序在每次數(shù)據(jù)收發(fā)時調(diào)用。通過對I2CRM,I2CSTP,I2CSTT三個寄存器位設(shè)置控制數(shù)據(jù)發(fā)送和接收,主機產(chǎn)生時鐘信號、起始和停止信號。
從機模式程序中數(shù)據(jù)收發(fā)初始化部分與主機模式程序相同,值得注意的是,數(shù)據(jù)的收發(fā)過程是由I2C模塊自動控制,從機接收數(shù)據(jù)時隨主機產(chǎn)生的時鐘信號在總線上接收串行數(shù)據(jù),并對接收的數(shù)據(jù)應(yīng)答。從機發(fā)送數(shù)據(jù)時,從機接收到主機發(fā)送的匹配的設(shè)備地址和主機的數(shù)據(jù)接收請求后,主機產(chǎn)生時鐘脈沖,從機向總線發(fā)送數(shù)據(jù)。
中斷服務(wù)程序的功能是實現(xiàn)主機和從機的數(shù)據(jù)收發(fā),MSP430中I2C模塊的是多源中斷,8個中斷源的中斷共用一個中斷向量,中斷向量寄存器I2CIV的內(nèi)容決定當(dāng)前是哪個中斷標(biāo)志引起中斷事件。當(dāng)優(yōu)先級zui高的中斷在寄存器I2CIV中產(chǎn)生對應(yīng)值時,由此判斷中斷源并進入對應(yīng)的主機模式程序和從機模式程序中,通過這2個程序中斷寄存器I2CIE使能操作,完成對應(yīng)的中斷事件。從而實現(xiàn)主機和從機問數(shù)據(jù)的收發(fā)。
4.2數(shù)據(jù)采集與處理
數(shù)據(jù)采集部分主要是從單片機通過A/D通道采集接入恒流源電路的待測電阻上產(chǎn)生的電壓,并進行處理。MSP430F169的A/D轉(zhuǎn)換具有單通道單次轉(zhuǎn)換、單通道多次轉(zhuǎn)換、序列通道單次轉(zhuǎn)換、序列通道多次轉(zhuǎn)換模式4種模式??紤]到有8路采集,每個通道每次測量要采集256次數(shù)據(jù),因此選用序列通道多次轉(zhuǎn)換模式。A/D轉(zhuǎn)換電路通過模擬通道進行多通道重復(fù)轉(zhuǎn)換,使其采集流經(jīng)待測電阻的電壓數(shù)據(jù)不斷自動更新,轉(zhuǎn)換結(jié)果順序的存放在轉(zhuǎn)換存儲寄存器中。ADC12MCTLx寄存器的EOS位定義zui后一個通道轉(zhuǎn)換完成后表示一次序列通道轉(zhuǎn)換完成,觸發(fā)信號會觸發(fā)下次序列通道轉(zhuǎn)換。數(shù)據(jù)的采樣時間間隔由定時器A控制,每次定時器A中斷到來時讀取A/D采集的數(shù)據(jù),在讀取前停止A/D轉(zhuǎn)換,讀取完畢后重啟A/D采集,當(dāng)數(shù)據(jù)采集完畢后設(shè)置標(biāo)志位通知其他程序已獲得新數(shù)據(jù),通過全局變量來實現(xiàn)與其他處理程序數(shù)據(jù)交互。采樣流程圖5所示。數(shù)據(jù)處理方面,為了提高電阻測量的精度,每個測量通道在每次測量時采集256組數(shù)據(jù),從機對采集的這256組數(shù)據(jù)進行算術(shù)平均后再通過運算得出每個通道所測量的電阻值。
4.3系統(tǒng)軟件實現(xiàn)
系統(tǒng)軟件采用模塊化設(shè)計,軟件子功能程序分割與硬件模塊電路相對應(yīng)。系統(tǒng)軟件包括主程序、雙機通信子程序、數(shù)據(jù)采集子程序、數(shù)據(jù)處理子程序、串行通信子程序、定時器中斷服務(wù)子程序、顯示子程序、存儲及按鍵控制子程序。限于篇幅只給出主程序流程圖,如圖6所示。
5、結(jié)語
本文多路電阻測量系統(tǒng)利用I2C總線實現(xiàn)了MSP430系列單片機之間的全雙工通信,解決了基于雙機通信系統(tǒng)的關(guān)鍵技術(shù),雙單片機的設(shè)計結(jié)構(gòu)靈活緊湊,不但減輕了主處理器的負擔(dān),而且提高了測量的精度、可靠性和實時性,同時也是對雙處理器系統(tǒng)研究的具體實踐。