嵌入式小型多點(diǎn)溫度測(cè)量系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
溫度的測(cè)量與控制在工業(yè)生產(chǎn)與安全中起著關(guān)鍵性作用[1]。現(xiàn)今市場(chǎng)上溫度控制成型的產(chǎn)品大部分以單片機(jī)為核心控制器,但是單片機(jī)的運(yùn)算速度和系統(tǒng)處理能力十分有限,并且產(chǎn)品性能也無(wú)法繼續(xù)提高,更重要的是其ROM和RAM空間小,不能運(yùn)行較大的程序,而基于多任務(wù)的操作系統(tǒng)需要的任務(wù)堆棧很多,需要的RAM空間很大,故在發(fā)展上有很大限制[2]。因此,研究一種嵌入式小型多點(diǎn)溫度測(cè)量系統(tǒng)十分必要。
目前嵌入式小型溫度測(cè)量系統(tǒng)的研究有:張興紅等[3]為了能夠更加精準(zhǔn)確定超聲波傳播結(jié)束的終點(diǎn)時(shí)刻,保證溫度的精準(zhǔn)測(cè)量,提出了一種優(yōu)化閾值比較法,設(shè)計(jì)了一種針對(duì)液體介質(zhì)的超聲波測(cè)溫系統(tǒng),該系統(tǒng)相較傳統(tǒng)溫度計(jì)響應(yīng)更加迅速,具有更高的靈敏度,時(shí)間測(cè)量分辨率可達(dá)10—12 s,溫度測(cè)量分辨率可達(dá)0.001℃;杜光月等[4]針對(duì)熱物理學(xué)中對(duì)空間內(nèi)溫度梯度多點(diǎn)檢測(cè)用傳感器陣列數(shù)據(jù)采集同步性較差的問(wèn)題,基于DS18B20設(shè)計(jì)了分布式數(shù)據(jù)采集方法,該方法較傳統(tǒng)方法采集溫度可縮短82.2 s,大大提高了檢測(cè)的實(shí)時(shí)性和同步性;汪欽臣等[5]為了提高pC主站與智能從站采用常規(guī)Modbus通信的實(shí)時(shí)性,設(shè)計(jì)了一種基于Modbus UDp的實(shí)時(shí)通信系統(tǒng),該系統(tǒng)以STM32為核心,以pC為主站,以FreeRTOS開發(fā)的控制器作為從站,經(jīng)優(yōu)化測(cè)試可提高系統(tǒng)Modbus UDp通信的可靠性和實(shí)時(shí)性;許子穎等[6]通過(guò)對(duì)測(cè)量系統(tǒng)輸出值的調(diào)控,調(diào)節(jié)鉑電阻的激勵(lì)電流,從而抵消鉑電阻的非線性誤差,提出了一種基于壓控電流源的鉑電阻測(cè)溫非線性校正設(shè)計(jì)方法,可有效改善輸出信號(hào)的線性度,提高測(cè)溫精度。
本文嵌入式小型多點(diǎn)溫度測(cè)量系統(tǒng)基于Nanopi NEO嵌入式開發(fā)板進(jìn)行設(shè)計(jì),采用RS485總線,構(gòu)成分布式多點(diǎn)傳輸數(shù)據(jù)采集系統(tǒng),以滿足民用領(lǐng)域、工業(yè)領(lǐng)域等對(duì)多點(diǎn)溫度測(cè)量和數(shù)據(jù)存儲(chǔ)的需求。本文以單片機(jī)作為下位機(jī),用Nanopi NEO嵌入式開發(fā)板作為上位機(jī),搭建嵌入式Linux系統(tǒng)桌面開發(fā)環(huán)境[7],搭建基于64位操作系統(tǒng)的ARM—Linux交叉編譯環(huán)境,并采用RS485總線作為數(shù)據(jù)傳輸?shù)妮d體,以Nanopi NEO開發(fā)板為核心搭建了溫度測(cè)量硬件電路。
1硬件設(shè)計(jì)方案
1.1溫度傳感器選型
嵌入式小型多點(diǎn)溫度測(cè)量系統(tǒng)設(shè)計(jì)測(cè)溫范圍為—50~120℃,該小型測(cè)溫系統(tǒng)可以測(cè)量單點(diǎn)或多點(diǎn)溫度,同時(shí)可以提供多傳感器接口。溫度傳感器成本要求低,性價(jià)比高,綜合分析,該系統(tǒng)的溫度傳感器將選用數(shù)字式溫度傳感器。表1是幾種型號(hào)的數(shù)字式溫度傳感器的對(duì)比。
LM74溫度傳感器轉(zhuǎn)換時(shí)間太長(zhǎng),且溫度準(zhǔn)確度較差,不予選用;MAX6575和AD7418測(cè)溫準(zhǔn)確度較差[8],不能滿足需求;而DS18B20是一個(gè)單總線器件,采用單一接口方式對(duì)數(shù)據(jù)進(jìn)行傳輸,當(dāng)進(jìn)行多點(diǎn)溫度采集的時(shí)候,這是它同其他數(shù)字溫度傳感器相比的一個(gè)優(yōu)勢(shì),DS18B20單總線器件與51單片機(jī)的通信協(xié)議比較簡(jiǎn)單,占用單片機(jī)硬件I/O接口資源少,降低了系統(tǒng)成本,而且該器件傳輸距離很遠(yuǎn)[9]。綜上,采用DS18B20作為溫度傳感器。
1.2 Nanopi NE0
本設(shè)計(jì)基于Nanopi NEO嵌入式開發(fā)板,Nanopi NEO體積小、價(jià)格低,是一款高性能、低功耗的小體積嵌入式產(chǎn)品,擁有豐富的GpIO擴(kuò)展接口,包括UART、SpI、I2C多種常見通信接口,同時(shí)還擁有各種各樣的擴(kuò)展器件,擴(kuò)展性高,完全可以替代高端的STM32產(chǎn)品系列,同時(shí)還兼具上位機(jī)的處理能力,實(shí)用性強(qiáng)[10]。
嵌入式小型多點(diǎn)溫度測(cè)量系統(tǒng)由主機(jī)Nanopi NEO模塊、從機(jī)、溫度測(cè)量系統(tǒng)和RS485總線組成,硬件主從模塊電路組成框圖如圖1所示。
2軟件設(shè)計(jì)方案
嵌入式小型多點(diǎn)溫度測(cè)量系統(tǒng)主程序執(zhí)行流程的系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
首先作為上位機(jī)的Nanopi NEO在開機(jī)時(shí)執(zhí)行SELECT語(yǔ)句,在SQLitE數(shù)據(jù)庫(kù)中查詢主鍵sn列最大值,記錄該值,在之后的存儲(chǔ)過(guò)程中從此值開始插入數(shù)據(jù),此舉的目的在于滿足SQLitE數(shù)據(jù)庫(kù)的唯一性約束。上位機(jī)Nanopi NEO基于Modbus協(xié)議發(fā)送一幀報(bào)文到RS485總線,這一幀報(bào)文中指定下位機(jī),并令該下位機(jī)執(zhí)行指定指令。當(dāng)上位機(jī)Nanopi發(fā)送一幀報(bào)文到下位機(jī)之后,上位機(jī)會(huì)進(jìn)入監(jiān)聽狀態(tài),被指定的下位機(jī)會(huì)執(zhí)行所接收到的發(fā)送數(shù)據(jù)的指令,發(fā)送一幀包含傳感器數(shù)據(jù)的報(bào)文到RS485總線中,上位機(jī)會(huì)接收該數(shù)據(jù),并將該數(shù)據(jù)中的有效參數(shù)存儲(chǔ)到SQLitE數(shù)據(jù)庫(kù)文件的相應(yīng)表格中。通過(guò)循環(huán)語(yǔ)句,上位機(jī)Nanopi NEO會(huì)循環(huán)讀取每一個(gè)下位機(jī)的數(shù)據(jù),并存儲(chǔ)在相應(yīng)的數(shù)據(jù)庫(kù)表格中。
軟件設(shè)計(jì)分為兩個(gè)部分,第一個(gè)部分是下位機(jī)模塊,第二個(gè)部分是上位機(jī)模塊。
下位機(jī)模塊:本系統(tǒng)使用51單片機(jī)作為下位機(jī),51單片機(jī)會(huì)利用循環(huán)語(yǔ)句不斷采集DS18B20的溫度數(shù)據(jù),當(dāng)串口中斷觸發(fā)的時(shí)候,判定接收到的數(shù)據(jù),并據(jù)此判斷是否輸出溫度數(shù)據(jù),如果判定為發(fā)送,則將從DS18B20采集到的數(shù)據(jù)通過(guò)串口傳輸給485轉(zhuǎn)TTL模塊。
上位機(jī)模塊:為了滿足嵌入式數(shù)據(jù)庫(kù)SQLitE的唯一性約束,上位機(jī)Nanopi NEO在開機(jī)以后會(huì)使用SELECT語(yǔ)句查詢數(shù)據(jù)庫(kù)中的主鍵(sn列)數(shù)據(jù),之后數(shù)據(jù)將會(huì)從sn最大值開始使用INSERT語(yǔ)句插入。上位機(jī)Nanopi NEO通過(guò)串口1發(fā)送一幀報(bào)文到485轉(zhuǎn)TTL模塊(該模塊會(huì)對(duì)RS485總線信號(hào)和串口信號(hào)進(jìn)行互相轉(zhuǎn)換),之后將會(huì)處于監(jiān)聽模式,在監(jiān)聽模式下,Nanopi NEO得到從下位機(jī)傳輸過(guò)來(lái)的數(shù)據(jù)之后,會(huì)將該數(shù)據(jù)存入嵌入式數(shù)據(jù)庫(kù)SQLitE相應(yīng)的表格中。將數(shù)據(jù)使用數(shù)據(jù)庫(kù)保存是目前常用的一種方法,該方法存儲(chǔ)快速'面對(duì)輸入量具有良好的反應(yīng)時(shí)間。
3系統(tǒng)環(huán)境搭建
系統(tǒng)環(huán)境搭建'包括Nanopi板上系統(tǒng)環(huán)境搭建、Linux 64位操作系統(tǒng)環(huán)境搭建、SQLite數(shù)據(jù)庫(kù)使用環(huán)境搭建、QT Creator交叉編譯環(huán)境搭建。
3.1 Nanopi NE0板載系統(tǒng)環(huán)境的搭建
準(zhǔn)備Nanopi嵌入式開發(fā)板向TF卡中燒寫系統(tǒng)'打開燒寫工具'選擇相應(yīng)的固件和TF卡'選擇write。燒寫成功之后將TF卡插入Nanopi'使用uSB轉(zhuǎn)串口模塊連接Nanopi和電腦'接口選擇GpIO管腳圖中左下角的GND、5V、TX、RX。打開電腦上的串口調(diào)試工具'在界面上選擇相應(yīng)的COM端(Linux系統(tǒng)中為ttyuSB)'一欄波特率選擇115 200(Nanopi默認(rèn))'然后點(diǎn)擊界面下方的“打開”按鈕'此時(shí)串口調(diào)試助手處于監(jiān)聽模式'對(duì)Nanopi進(jìn)行關(guān)機(jī)操作'然后開機(jī)即可。串口調(diào)試第一次時(shí)間比較長(zhǎng)'此時(shí)系統(tǒng)會(huì)初始化'并對(duì)TF卡進(jìn)行分區(qū)'串口調(diào)試成功后的界面如圖3所示。
3.2 64位操作系統(tǒng)ubuntu的搭建
NanopiNEO的Cpu為Allwinner H3 FriendlyCore'如圖4所示'應(yīng)使用4.8.6版本的QT和ubuntu 16.04 64位版本操作系統(tǒng)'否則QT Creator在進(jìn)行交叉編譯時(shí)將會(huì)出現(xiàn)錯(cuò)誤。
3.3 SQLite數(shù)據(jù)庫(kù)使用環(huán)境的搭建
進(jìn)入官網(wǎng)下載預(yù)編譯的二進(jìn)制文件'并下載qlite—tools壓縮文件'在系統(tǒng)盤目錄下創(chuàng)建一個(gè)叫作sqlite的文件夾'解壓壓縮包到此文件夾'這時(shí)將會(huì)得到sqlite3.def、sqlite3.dll、sqlite3.exe文件。添加文件夾到pATH環(huán)境變量'就可以在命令行中使用SQLite。
Linux系統(tǒng)幾乎全部附帶著SQLite數(shù)據(jù)庫(kù)'創(chuàng)建數(shù)據(jù)庫(kù)文件和表格如圖5所示。
3.4 QT Creator交叉編譯環(huán)境的搭建
在Nanopi NEO的wikipedia網(wǎng)站下載完相應(yīng)的工具包后'首先添加QtEmbedded'然后添加C語(yǔ)言交叉編譯器與C++語(yǔ)言交叉編譯器'最后是構(gòu)建套件(kit)'如圖6、圖7、圖8所示。
4系統(tǒng)的實(shí)驗(yàn)測(cè)試
本系統(tǒng)設(shè)計(jì)過(guò)程中,大部分模塊是對(duì)溫度進(jìn)行測(cè)量和控制的,資源數(shù)據(jù)和操作數(shù)據(jù)兩大部分組成了系統(tǒng)數(shù)據(jù)庫(kù)的主要部分。資源數(shù)據(jù)主要指主機(jī)收集的溫度數(shù)據(jù),操作數(shù)據(jù)主要指的是系統(tǒng)在運(yùn)行過(guò)程中不斷變化產(chǎn)生出來(lái)的數(shù)據(jù),其添加、修改和刪除操作由相對(duì)應(yīng)的操作模塊來(lái)完成。
燒錄入程序并運(yùn)行軟件,主機(jī)收集的所測(cè)得的溫度數(shù)據(jù)如圖9所示,將溫度數(shù)據(jù)存儲(chǔ)到SQLite數(shù)據(jù)庫(kù)文件相應(yīng)的表格中,圖10為單片機(jī)作為下位機(jī)進(jìn)行測(cè)溫并與主機(jī)通信的照片。
5結(jié)束語(yǔ)
本設(shè)計(jì)以Nanopi NEO嵌入式開發(fā)板為核心,對(duì)多點(diǎn)溫度進(jìn)行測(cè)量,實(shí)現(xiàn)了對(duì)溫度的實(shí)時(shí)檢測(cè);該系統(tǒng)利用了DS18B20,使得硬件結(jié)構(gòu)簡(jiǎn)單、成本低廉、工作穩(wěn)定。系統(tǒng)對(duì)于需要實(shí)時(shí)監(jiān)測(cè)溫度的環(huán)境具有良好的應(yīng)用前景,可以較好地發(fā)揮其作用。