摘 要:給出了智能化傳感器嵌入式控制器的開發(fā)環(huán)境、典型嵌入式微控制器硬件結(jié)構(gòu)和軟件結(jié)構(gòu)及設(shè)計方法,同時對智能化傳感器的信號處理方法作了簡單介紹,最后提供了一些目前廣泛應(yīng)用的嵌入式微控制器芯片。
關(guān)鍵詞:嵌入式微單片機 智能傳感器 信號處理
在智能化儀表應(yīng)用中,片上型微處理控制器已經(jīng)得到非常廣泛的應(yīng)用,這種微型控制器主要是向著單片化、微型化、高性價比的方向發(fā)展,特別是具有片上程序存儲器、數(shù)據(jù)存儲器和不同的I/O接口的單片微處理器的出現(xiàn),改變了傳統(tǒng)的智能化儀表的設(shè)計方法。傳感器本身的智能化給現(xiàn)代儀表設(shè)計提供了更大的空間,一些微控制器本身帶有A/D和D/A轉(zhuǎn)換器、通訊接口(SPI,CAN等)和保存校正參數(shù)的非易失存儲器的功能,這種微控制器應(yīng)用于傳感器不僅給傳感器功能提供了很多的附加功能,給用戶提供了方便,而且減小了系統(tǒng)的有效空間,與一般系統(tǒng)設(shè)計中采用放大器、電阻及A/D轉(zhuǎn)換器相比,這種微型控制器在性能/價格比上更具有競爭優(yōu)勢(其具備的A/D功能和D/A功能,通訊接口和程序存儲器等可以節(jié)約更多的硬件成本)。
例如接近覺傳感器在機器人機械手中有十分重要的應(yīng)用,其線形化是制約其應(yīng)用的主要的因素,一般紅外接近覺傳感器輸入輸出呈明顯的非線形,且與溫度相關(guān),利用一般的模擬電路設(shè)計方法將其轉(zhuǎn)換為標(biāo)準(zhǔn)輸入信號提供給A/D轉(zhuǎn)換器盡管在功能上能夠?qū)崿F(xiàn),但是很難在性能上保持一致性;更為重要的是,在一些場合這種處理方法會增加硬件的成本,由于其體積較大而無法滿足實際的使用要求,例如航天機器人使用的機械手上所使用的接近覺傳感器對體積、信號的穩(wěn)定性等都有嚴(yán)格的要求。如果使用嵌入式微型控制器可以通過校準(zhǔn)獲得的數(shù)據(jù)表存儲到數(shù)據(jù)存儲器中,還可以通過數(shù)學(xué)模型對溫度的影響進行修正,并將測量的結(jié)果(距離)直接通過接口傳送給上位機,比較兩種方式,后者從功能上看毫無疑問節(jié)省空間、性能優(yōu)越,而成本則相差無幾,同時有效減少了上位機的處理時間。
下面根據(jù)實際使用中涉及到的一些問題做一些論述。
1 嵌入式微處理單片機硬件結(jié)構(gòu)
圖1是一典型的微型控制器的結(jié)構(gòu)框圖,與一般微處理器不同的是其將程序存儲器、數(shù)據(jù)存儲器以及各種輸入輸出接口集成在單個芯片上,而一般的微型處理器需要外接各種存儲器和擴展I/O接口。其基本的構(gòu)成如下:
CPU——微型控制器中央處理單元比較簡單,一般采用精簡指令集,不具備浮點運算等高級操作功能,其中通用算術(shù)單元ALU可以完成工作寄存器和文件寄存器間的算術(shù)和邏輯操作功能,以8位整形數(shù)據(jù)工作。在一般傳感器的應(yīng)用中無須復(fù)雜的數(shù)據(jù)處理,這種結(jié)構(gòu)簡單價格低廉的微單片處理器提供了一較好的解決方案。
數(shù)據(jù)存儲器——由通用寄存器和特殊功能寄存器共同組成,與一般單片機以K為單位的存儲空間相比,微型控制器的存儲單元較小,只有256個字節(jié)甚至更少,由于其空間小,地址簡單,故常常用來作為微控制器的文件寄存器。有一些微單片機將這些寄存器作為EEPROM或閃存,用來存儲校準(zhǔn)數(shù)據(jù)和一般常數(shù)。
程序存儲器——用來存儲運行程序。一般微型控制器采用特殊的結(jié)構(gòu)保證程序存儲器和數(shù)據(jù)存儲器分開,與傳統(tǒng)的馮.諾曼結(jié)構(gòu)程序存儲器和數(shù)據(jù)存儲器在同一空間相比速度更快,使得處理器在獲取命令的同時可以獲取數(shù)據(jù)。同時這種結(jié)構(gòu)可以使數(shù)據(jù)存儲器寬度和程序存儲器寬度不一樣,后者可以采用較寬的結(jié)構(gòu)以獲取更高的編碼效率,其空間一般以K為單位記。
I/O口——用來提供數(shù)值輸入輸出通道與外界交換數(shù)據(jù),這些口除用于采樣狀態(tài)標(biāo)志外,還可以通過編程設(shè)置為與A/D或D/A交換數(shù)據(jù)接口,或與其他單片機的通訊接口。
定時器/計數(shù)器——其功能主要根據(jù)相應(yīng)的寄存器設(shè)置而定,作為計數(shù)器,可以對外界的狀態(tài)變化或頻率計數(shù);用作定時器時,可以用來實現(xiàn)對外界事件計時或控制微處理器周期運行,如在某一段時間內(nèi)沒有事件發(fā)生時,作為看門狗的定時器可以周期的復(fù)位,對于智能型的傳感器這種功能顯然很有用。
A/D轉(zhuǎn)換器——一般微單片機中都具備內(nèi)部的4~8路A/D轉(zhuǎn)換器,因此單片的微型機可以同時接入多個傳感器并實現(xiàn)信號處理。早期微處理器中的這種A/D轉(zhuǎn)換器是以8位為主,而現(xiàn)在10位或12位精度的微型單片機較為普遍,給用戶提供了較大的選擇余地。
通訊方式接口——對于不同的應(yīng)用場合,目前的微單片控制器可以提供不同的通訊協(xié)議方式,例如SPI,I[sup]2[/sup]C,或支持網(wǎng)絡(luò)接口的CAN,USB方式。
2 軟件設(shè)計
現(xiàn)代微單片控制器中可以集成大量的硬件,給用戶帶來了很大的方便,在智能化傳感器的應(yīng)用設(shè)計時可以將其僅僅作為一個元件使用,輸入模擬信號輸出數(shù)值信號。而在傳感器的智能化中,實際上硬件所占比重微乎其微,軟件才是增加傳感器功能提高其附加值的主要因素。
在傳感器中使用嵌入式微處理單片機來實時處理數(shù)據(jù)時,其軟件的結(jié)構(gòu)不同于一般PC機中所采用的方式,前者簡單得多。在傳感器中應(yīng)用單片機的主要功能是讀入輸入信號,經(jīng)過簡單的數(shù)據(jù)處理再輸出結(jié)果,這些功能的實現(xiàn)主要采用下面三種結(jié)構(gòu)方式。
· 順序方式
· 中斷方式
· 多重選擇方式
順序方式——其工作原理如圖2所示,其工作方式比較簡單,主要適合一些重復(fù)性的場合。單片機首先讀入傳感器的輸出,經(jīng)過數(shù)據(jù)處理后輸出結(jié)果,并更新內(nèi)部變量,執(zhí)行完后返回重新開始上面的過程見圖2(a)。很顯然這種方式本身是在一定的循環(huán)周期下反復(fù)運行,浪費機器的時間,在輸入沒有發(fā)生變化時,這種處理方式降低了傳感器本身的反應(yīng)速度,可以改成見圖2(b)結(jié)構(gòu)方式,如輸入沒有發(fā)生變化,返回而輸出不變;當(dāng)輸入發(fā)生變化時,才進行相應(yīng)的處理。這樣有效提高了輸出對應(yīng)于輸入之間反應(yīng)效率。
中斷方式——這是各種CPU處理事件普遍采用的方式,在應(yīng)用嵌入式微處理器到傳感器中同樣可以利用中斷模式來實現(xiàn)過程控制和處理。這種處理方式在多傳感器系統(tǒng)中使用較多,在這里單片機采用上面的方式循環(huán)對部分傳感器采樣的數(shù)據(jù)處理,執(zhí)行主程序,當(dāng)某一傳感器的狀態(tài)改變(例如超過某一閾值)時即執(zhí)行相應(yīng)的任務(wù)。例如,在使用溫度實時補償?shù)闹悄芏鄠鞲衅飨到y(tǒng)中,當(dāng)溫度發(fā)生變化時,輸入與輸出的函數(shù)關(guān)系發(fā)生改變需要通過查表方式獲取對應(yīng)補償系數(shù)即可通過中斷方式實現(xiàn)。在有上下位機的多處理器系統(tǒng)中,相互之間的通訊同樣可以通過中斷方式實現(xiàn)數(shù)據(jù)的及時交換。當(dāng)中斷發(fā)生時,處理器保護好寄存器中數(shù)據(jù)到堆棧中,優(yōu)先執(zhí)行中斷功能,當(dāng)中斷程序執(zhí)行完畢時返回斷點恢復(fù)現(xiàn)場繼續(xù)原來的程序,當(dāng)然這種中斷方式的實現(xiàn)取決于處理器的硬件結(jié)構(gòu)。
中斷方式一般應(yīng)用于智能傳感器需要通訊和定時執(zhí)行特殊功能的場合,使得軟件結(jié)構(gòu)簡單易行。具體程序流程圖見圖3。
多重選擇方式——在智能多傳感器系統(tǒng)中,當(dāng)輸入發(fā)生變化時需要執(zhí)行相應(yīng)的功能,輸入狀態(tài)越多輸出的選擇越多。例如目前使用的模糊洗衣機廣泛采用單片機對各種輸入條件(衣服的多少、臟的程度等)判斷給出相應(yīng)的控制策略,實際上這種功能完成可以采用智能傳感器直接實現(xiàn)。
多選擇方式的程序流程圖如圖4所示,輸出的結(jié)果由輸入的變化和當(dāng)前狀態(tài)決定。用數(shù)學(xué)方式可表示為:
State_next=F(State_present,Injput);
Output=G(State_present,Input);
其中函數(shù)F(X,Y),G(X,Y)表示狀態(tài)變化邏輯和輸出輸入對應(yīng)關(guān)系,在嵌入式微處理單片機系統(tǒng)中一般采用查表方式獲取相應(yīng)的數(shù)據(jù)。
從程序流程圖可以看出這種方式符合結(jié)構(gòu)化程序的設(shè)計,軟件實現(xiàn)較為容易。
實際上,在一些比較復(fù)雜的過程中,上面的三種方式往往結(jié)合在一起來應(yīng)用。在嵌入式智能多傳感器系統(tǒng)中采用這三種方式主要是由嵌入式微處理器本身的特點所決定的。無法實現(xiàn)浮點運算,采用精簡指令集,數(shù)據(jù)存儲器空間有限等因素對程序的設(shè)計要求結(jié)構(gòu)簡單,方便實現(xiàn)。
3 開發(fā)開具
目前支持微處理單片機的開發(fā)工具較多,一般廠家都提供相應(yīng)的技術(shù)支持。下面簡單介紹MICROCHIP公司提供的Picstart Plus開發(fā)工具箱,包括相應(yīng)的硬件、接口、數(shù)據(jù)手冊和開發(fā)軟件MPLAB IDE,可以實現(xiàn)對PIC系列的微單片機編程、調(diào)試、寫入和仿真,其軟件開發(fā)環(huán)境支持在WINDOWS環(huán)境下運行,調(diào)試簡單。由于嵌入式微單片機普遍采用精簡指令系統(tǒng),給編程帶來很大的方便,系統(tǒng)仿真功能可以使開發(fā)者單步運行程序,并隨時監(jiān)測寄存器中的中間結(jié)果,觀測程序的執(zhí)行過程。
此開發(fā)系統(tǒng)唯一的缺點在于不能象一般的單片機系統(tǒng)一樣直接實現(xiàn)對系統(tǒng)的仿真,當(dāng)微處理單片機嵌入到傳感器系統(tǒng)中時其系統(tǒng)的運行過程仿真比較困難。不過這可以通過對仿真系統(tǒng)做一些改進,在PC機和所設(shè)計的嵌入系統(tǒng)之間設(shè)計一接口,微單片機的安裝位置與仿真機連接在一起以實現(xiàn)對系統(tǒng)的仿真。
4 傳感器的數(shù)據(jù)處理
一般單片機系統(tǒng)對傳感器的數(shù)據(jù)處理方法比較簡單,通過A/D轉(zhuǎn)換器的輸入實現(xiàn)對傳感器的采樣,由于其本身計算數(shù)據(jù)處理功能的強大,對傳感器信號處理如線性化、濾波和取閾值等功能比較簡單。采用微單片機時,這些功能的實現(xiàn)需要一些特別的處理方法。
4.1 線性化
線性化是傳感器中比較常見的問題,通過對微單片機所采樣數(shù)據(jù)進行一定的數(shù)據(jù)處理可以消除其非線性因素,一般可以通過兩種途徑來實現(xiàn)。
查表法——預(yù)先通過實驗校準(zhǔn),將傳感器A/D采樣的輸入和實際的值比較,將結(jié)果存入存儲器中,對應(yīng)每一個輸入相應(yīng)查表得到一個輸出。例如PIC74**包括一8位的A/D轉(zhuǎn)換器,可以通過256組輸入輸出鏈表直接得到真實的結(jié)果,A/D轉(zhuǎn)換器的輸入相當(dāng)于鏈表的指針入口地址,此方法是建立在大量的實驗的基礎(chǔ)之上的,比較簡單。例如紅外接近覺傳感器、溫度傳感器可以通過此方法實現(xiàn)線性化。當(dāng)A/D轉(zhuǎn)換器精度較高時,如PIC16C773、PIC16C774的A/D轉(zhuǎn)換器具有12位的精度,需要4096個地址空間存儲對應(yīng)表。
內(nèi)部插補法——當(dāng)存儲器空間有限時,可以采用插補法實現(xiàn)傳感器的線性化。將采樣所得到的曲線看成一系列的節(jié)點用直線連接在一起,因此只需要將每個節(jié)點的首尾數(shù)據(jù)存儲下來,大大節(jié)約了存儲空間,具體實現(xiàn)方法如下:
?。?)采樣獲取傳感器的輸入值x;
(2)確定u所在的節(jié)點位置n;
?。?)讀取相應(yīng)節(jié)點的節(jié)點輸入輸出值Xn,Xn+1,Yn,Yn+1
?。?)計算輸出結(jié)果Y
Y=Yn+(X-Xn)Kn
Kn=(Yn+1-Yn)/(Xn+1-Xn)
其中每個節(jié)點的斜率比值可以預(yù)先存入單片機中,通過查表獲取以提高計算速度。
4.2 濾波方法選擇
從A/D轉(zhuǎn)換器獲取的數(shù)據(jù)毫無疑問存在外界的干擾,需要通過濾波方法除去。在微單片機中比較容易實現(xiàn)的方法是移動窗口濾波法,具體為設(shè)置一定的窗口值例如3到8個數(shù)據(jù)為一組,對其取平均值。當(dāng)傳感器獲取的數(shù)據(jù)變化較快時,例如是采樣頻率的1/3到1/5時,窗口取值小一些較為理想(3到5),當(dāng)傳感器獲取的數(shù)據(jù)變化較為緩慢時,窗口值取大一些比較容易獲得較好的濾波效果。
目前應(yīng)用于嵌入式智能化傳感器中普遍使用的片上微型單片機主要有以下幾種。MORTOROLA公司提供的68HC908GP20,包括33路雙向I/O口,中斷,SCI、SPI串口通訊口,定時看門狗,在線編程等功能;Micrrochip公司提供的PIC系列單片機,除上面提到的一些功能相近外,PIC16C773,PIC116C774還提供12位精度的A/D口,應(yīng)用非常方便,PIC系列的片上型單片機目前國內(nèi)使用較廣泛;CYPRESS SEMICONDUCTOR公司提供的COP684BC/COP8844BC具有CAN接口功能,其他提供這類單片機的公司有Zilog,Digi-Key,Atmel等。
總之,將片上型微單片機嵌入傳感器中將大大提高傳感器的智能化、實用化方面的功能,給傳感器智能化的設(shè)計提供了新的思路,其提供的標(biāo)準(zhǔn)化接口大大方便傳感器的使用。