基于C8051F340單片機(jī)的紅外溫度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為實(shí)現(xiàn)對(duì)裝藥過(guò)程中實(shí)時(shí)溫度的檢測(cè),設(shè)計(jì)了一套C8051F340單片機(jī)與時(shí)分復(fù)用技術(shù)進(jìn)行數(shù)據(jù)采集和通信的多通道溫度采集系統(tǒng)。實(shí)驗(yàn)驗(yàn)證了CPLD在進(jìn)行分時(shí)控制時(shí)具有計(jì)時(shí)準(zhǔn)確,門(mén)選電路設(shè)計(jì)方便,集成度高的優(yōu)點(diǎn),同時(shí)結(jié)合Silicon Laboratories公司提供的USBXpress開(kāi)發(fā)工具使得單片機(jī)與計(jì)算機(jī)的USB通信實(shí)現(xiàn)變得極為簡(jiǎn)便。
關(guān)鍵詞:紅外測(cè)溫;時(shí)分復(fù)用;SOC
0 引言
螺旋裝藥過(guò)程中,經(jīng)常會(huì)因?yàn)閮?nèi)部藥品溫度分布不均勻?qū)е略谘b藥過(guò)程中藥品內(nèi)出現(xiàn)氣泡的現(xiàn)象,這嚴(yán)重影響了彈體內(nèi)的藥品質(zhì)量和彈藥參數(shù)。因此,本文希望通過(guò)設(shè)計(jì)一種溫度監(jiān)測(cè)系統(tǒng)來(lái)實(shí)現(xiàn)對(duì)腔體內(nèi)藥品溫度檢測(cè),尋找裝藥過(guò)程中溫度與藥品質(zhì)量之間的關(guān)系。由于裝藥機(jī)結(jié)構(gòu)的特殊性,我們無(wú)法通過(guò)傳統(tǒng)的接觸測(cè)溫法獲取藥品的溫度。因此本文設(shè)計(jì)了一種基于紅外測(cè)溫方法的系統(tǒng)來(lái)實(shí)現(xiàn)對(duì)藥品溫度的實(shí)時(shí)檢測(cè)。
1 時(shí)分復(fù)用原理
復(fù)用方法的設(shè)計(jì)主要依據(jù)TN9紅外傳感器的信號(hào)特征及接口特點(diǎn),TN9紅外溫度傳感器具有5個(gè)接口,其中電源和地不需要接到CPLD上,其余三個(gè)接口分別為低電平有效的TN9工作使能接口,工作在主模式的SPI時(shí)鐘接口和數(shù)據(jù)接口。采用復(fù)用模式是只需通過(guò)設(shè)置合適的時(shí)序和門(mén)電路控制就可以將這些具有相同功能的接口連接到同一個(gè)模塊上。
實(shí)際應(yīng)用中當(dāng)EA有效時(shí)TN9傳感器通過(guò)SPI總線(xiàn)在大約180ms和560ms時(shí)發(fā)送兩次溫度數(shù)據(jù),第一次為環(huán)境溫度數(shù)據(jù),第二次為目標(biāo)溫度數(shù)據(jù)。當(dāng)EA無(wú)效時(shí)傳感器仍會(huì)發(fā)送數(shù)據(jù),只不過(guò)發(fā)送的數(shù)據(jù)沒(méi)有意義,這時(shí)就需要通過(guò)合適的門(mén)電路控制將無(wú)用信號(hào)屏蔽掉。當(dāng)采用多路采集通道時(shí),隨著傳感器數(shù)量的增加所需引腳及控制門(mén)電路會(huì)極大增加,處于精確時(shí)間控制及多門(mén)選電路的需要,數(shù)據(jù)采集模塊使用CPLD來(lái)實(shí)現(xiàn)相對(duì)單片機(jī)加門(mén)電路簡(jiǎn)單靈活。
如圖1所示,以雙通道TN9數(shù)據(jù)接收模塊舉例來(lái)說(shuō)明SPI總線(xiàn)復(fù)用方式。EA信號(hào)通過(guò)分時(shí)模塊來(lái)控制,由于VHDL語(yǔ)言可以被認(rèn)為是為CPLD內(nèi)部邏輯單元建立了連接關(guān)系,在系統(tǒng)運(yùn)行時(shí)語(yǔ)句本身并不消耗系統(tǒng)時(shí)間,因此通過(guò)寄存器設(shè)可以是CPLD的時(shí)間設(shè)置極為精確。這里設(shè)置TN9工作周期為1s,400ms時(shí)間為高電平(EA禁止),第一個(gè)傳感器啟動(dòng)后約200 ms下一個(gè)傳感器以同樣方式開(kāi)始工作,這樣保證不同傳感器回來(lái)的信號(hào)不重疊在一起。由于TN9在EA無(wú)效期間仍會(huì)發(fā)送無(wú)效數(shù)據(jù),且SPI總線(xiàn)上的DATA線(xiàn)與CLK線(xiàn)空閑時(shí)為高電平,這里設(shè)計(jì)了如圖1所示的門(mén)控電路來(lái)實(shí)現(xiàn)對(duì)無(wú)效信息的屏蔽。[!--empirenews.page--]
2 系統(tǒng)設(shè)計(jì)
系統(tǒng)以C8051F340單片機(jī)為核心,它通過(guò)UART總線(xiàn)和USB總線(xiàn)分別與CPLD和電腦相連接。
2.1 數(shù)據(jù)采集模塊設(shè)計(jì)
數(shù)據(jù)采集模塊的核心模塊由CPLD實(shí)現(xiàn),CPLD接收到單片機(jī)控制命令后進(jìn)行復(fù)位并開(kāi)始工作,分時(shí)模塊和門(mén)電路配合實(shí)現(xiàn)傳感器的分時(shí)啟動(dòng)以及屏蔽掉SPI總線(xiàn)發(fā)回的環(huán)境溫度數(shù)據(jù)及使能信號(hào)無(wú)效(高電平)時(shí)的亂碼。SPI模塊實(shí)現(xiàn)CPLD的從器件接受功能,每次工作將TN9發(fā)回的16位溫度數(shù)據(jù)存入寄存器。寄存器控制模塊在接受完16位溫度數(shù)據(jù)后,啟動(dòng)串口發(fā)送,將高低8位數(shù)據(jù)分別發(fā)送給單片機(jī),單片機(jī)在其中斷函數(shù)中進(jìn)行相應(yīng)處理。
2.2 單片機(jī)模塊設(shè)計(jì)
USB數(shù)據(jù)發(fā)送功能的實(shí)現(xiàn)是這一部分的難點(diǎn),這里使用Silicon Laboratories公司提供的USBXpress和Configuration Wizard開(kāi)發(fā)包并結(jié)合Keil uVision3開(kāi)發(fā)環(huán)境可以很方便的實(shí)現(xiàn)C80S1F340單片機(jī)的配置工作,這樣單片機(jī)程序編寫(xiě)和USB通信開(kāi)發(fā)難度,我們只需要關(guān)注自己要實(shí)現(xiàn)的功能部分并不需要很了解復(fù)雜的USB通信協(xié)議。
[!--empirenews.page--]
如圖3所示,單片機(jī)上電后完成系統(tǒng)初始化配置,初始化配置語(yǔ)句可以使用Configuration Wizard來(lái)進(jìn)行配置,C8051F340的UART0接口(第二功能)固定在P0^4,P0^5,USB也只能使用特定端口,這里不需要對(duì)端口進(jìn)行特別配置,將其端口模式設(shè)置為推拉即可,系統(tǒng)時(shí)鐘設(shè)置為使用內(nèi)部時(shí)鐘模式,通過(guò)選擇多路開(kāi)關(guān)和倍頻使USB時(shí)鐘工作在48MHz。作為USB系統(tǒng)中的從設(shè)備,系統(tǒng)初始化設(shè)置完成后,執(zhí)行等待命令DisplayLED(),然后在中斷函數(shù)中根據(jù)USB中對(duì)要執(zhí)行的操作進(jìn)行判斷。
UART0使用定時(shí)器2作為波特率發(fā)生器,并使能定時(shí)器0中斷允許。USB初始化首先要調(diào)用USBXpress提供的API函數(shù)USB_Clock_Start(),然后對(duì)其端口初始化,這里使用USBXpress提供的默認(rèn)設(shè)置即可。
由于溫度數(shù)據(jù)為16位數(shù)據(jù),串口每次接收其中8位,這里定義個(gè)數(shù)組In_Packet[3]后兩位用來(lái)存放MSB,LSP的值,第一位存放傳感器標(biāo)志位。當(dāng)In_Packet[3]數(shù)組數(shù)據(jù)更新后,調(diào)用USBXpress的API函數(shù)Block_Write(In_Packet,3)將溫度數(shù)據(jù)發(fā)送給上位機(jī)。
2.3 上位機(jī)軟件設(shè)計(jì)
USBXpress提供VC6.0進(jìn)行USB通信的動(dòng)態(tài)鏈接庫(kù),這里采取了靜態(tài)方法加載動(dòng)態(tài)鏈接庫(kù)的形式,這樣需要在編譯選項(xiàng)中把USBXpress提供的SiUSBXp.lib路徑添加進(jìn)去,并在需要調(diào)用時(shí)添加頭文件siusbxp.h。
程序依照USBXpress提供的API函數(shù)編寫(xiě),在程序界面初始化時(shí)調(diào)用SI_GetNumDevices()和SI_GetProductString()函數(shù)獲取USB器件信息,由于傳感器工作間隔200ms左右,這里設(shè)定50ms的定時(shí)器,在其響應(yīng)函數(shù)中執(zhí)行SI_Read(),當(dāng)Buffer中有數(shù)據(jù)時(shí)就會(huì)將數(shù)據(jù)讀取到定義好結(jié)構(gòu)體當(dāng)中去,并使用Format命令將其轉(zhuǎn)換為字符串類(lèi)型且按16進(jìn)制方式將數(shù)據(jù)更新到編輯框中。
3 總結(jié)
系統(tǒng)基本實(shí)現(xiàn)了溫度的采集和傳輸功能,并能通過(guò)VC6.0將數(shù)據(jù)保存,提供給matlab等數(shù)學(xué)分析軟件進(jìn)行數(shù)據(jù)分析,實(shí)驗(yàn)證明了利用CPLD可以很精確地實(shí)現(xiàn)對(duì)傳感器的分時(shí)控制,C8051F340利用USBXpress提供的API進(jìn)行USB開(kāi)發(fā)極大地簡(jiǎn)化了開(kāi)發(fā)流程。
實(shí)驗(yàn)只進(jìn)行了簡(jiǎn)單的框架搭建,這里只是對(duì)基于CPLD進(jìn)行時(shí)分復(fù)用方法采集傳感器數(shù)據(jù)并且使用C8051F340利用USB總線(xiàn)與計(jì)算機(jī)進(jìn)行通信的可行性進(jìn)行了驗(yàn)證,完善穩(wěn)定的系統(tǒng)仍需要大量的后期工作去完成。