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