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