基于單片機(jī)ATmega16的無線溫度監(jiān)測系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:利用AVR系列的ATmega16單片機(jī)、無線收發(fā)模塊nRF24L01、數(shù)字溫度傳感器DS18B20和LCD1602液晶顯示器設(shè)計(jì)了無線溫度監(jiān)測系統(tǒng)。該系統(tǒng)通過配置ATmega16單片機(jī),采集DS18B20轉(zhuǎn)換的溫度量,將溫度信息顯示在LCD1602液晶顯示器上,同時(shí)通過無線收發(fā)模塊將溫度信息傳送到管理終端進(jìn)行顯示和處理。系統(tǒng)同時(shí)保證當(dāng)被測溫度不在合理范圍時(shí)發(fā)出聲音報(bào)警信號。
關(guān)鍵詞:單片機(jī);ATmega16;DS18B20;無線溫度監(jiān)測;nRF24L01
0 引言
隨著社會的發(fā)展和進(jìn)步,越來越多的場合對溫度的要求日臻嚴(yán)格,溫度監(jiān)控系統(tǒng)的應(yīng)用日趨受到重視。在農(nóng)業(yè)發(fā)展領(lǐng)域,農(nóng)業(yè)大棚、冷庫、培育溫室等眾多場合都需要溫度測量技術(shù)。傳統(tǒng)的測溫系統(tǒng)都是有線系統(tǒng),對于一些需要多點(diǎn)測溫的場合,使用傳統(tǒng)有線測溫方式在布設(shè)、維護(hù)和更新方面存在著很多不便。為了解決這個(gè)問題,設(shè)計(jì)了一種基于單片機(jī)和無線收發(fā)模塊的無線溫度監(jiān)控系統(tǒng),結(jié)合溫度傳感器可以很方便構(gòu)建一個(gè)多點(diǎn)分布式智能無線溫度監(jiān)控系統(tǒng)。
1 無線溫度監(jiān)控系統(tǒng)構(gòu)成
系統(tǒng)主要由兩部分組成。如圖1所示,第一部分是節(jié)點(diǎn)溫度測量系統(tǒng),第二部分是溫度顯示管理終端。節(jié)點(diǎn)溫度測量系統(tǒng)負(fù)責(zé)測量溫度,并將溫度值通過無線通信發(fā)送到溫度顯示管理終端。管理終端接收溫度信息并進(jìn)行顯示和發(fā)出警報(bào)信號,而且在特殊情況下管理終端還可以逆向發(fā)送調(diào)控信息給節(jié)點(diǎn)溫度測量系統(tǒng),實(shí)現(xiàn)對溫度的調(diào)控。
1.1 節(jié)點(diǎn)溫度測量系統(tǒng)設(shè)計(jì)
節(jié)點(diǎn)溫度測量系統(tǒng)構(gòu)成如圖2所示,系統(tǒng)核心控制芯片采用AVR系列的單片機(jī)ATmega16。這是一款精簡指令集的單片機(jī),高速度、低功耗,具有Sleep功能及CMOS技術(shù),并具有高度保密性,可多次燒寫的Flash,具有多重密碼保護(hù)鎖死功能。另外內(nèi)置看門狗定時(shí)器(WDT)和片內(nèi)有RC振蕩器,使用起來非常方便。具有休眠省電功能和閑置低功耗功能,在實(shí)用性方面性價(jià)比相對較高。
溫度傳感器模塊采用數(shù)字溫度傳感器DS18B20,它是美國Dallas半導(dǎo)體公司推出的一種智能數(shù)字溫度傳感器。DS18B20在與MCU連接時(shí)僅需要一條線(即單總線接口,加電源為三線接口)即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。使用DS18B20可以節(jié)省系統(tǒng)資源、使系統(tǒng)結(jié)構(gòu)更趨簡單。DS18B20測溫范圍是-55℃~+125℃,固有測溫分辨率0.5℃。工作電源為3 V~5V/DC。在使用中不需要任何外圍元件,測量結(jié)果以9~12位數(shù)字量方式串行傳送。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。其中64位光刻ROM中存儲的是該DS18B20的地址序列號碼。其號碼的排列是:最初8位(28H)是產(chǎn)品類型標(biāo)號,接著的48位是DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM中的地址序列碼可以區(qū)分每一個(gè)DS18B20,從而實(shí)現(xiàn)在同一根總線上掛接多個(gè)DS18B20。根據(jù)DS18B20的通訊協(xié)議,MCU(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:
(1)每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位操作
(2)復(fù)位成功后發(fā)送一條ROM指令
(3)最后發(fā)送RAM指令
這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500 μs,然后釋放,當(dāng)DS18B20收到信號后等待16~60μs左右,后發(fā)出60~240μs的低脈沖,主CPU收到此信號表示復(fù)位成功。論文設(shè)計(jì)的測溫系統(tǒng)中每一個(gè)DS18B20在與MCU連接時(shí)各占用一個(gè)I/O口,則MCU控制DS18B20完成溫度轉(zhuǎn)換的步驟如圖3所示。
nRF24L01是Nordic公司推出的高集成的單片無線收發(fā)器件。芯片具備自動應(yīng)答和自動重發(fā)功能,速度可達(dá)2 Mbps,126個(gè)可選工作頻道,很短的頻道切換時(shí)間,可用于跳頻,其輸出功率,頻道選擇以及協(xié)議設(shè)置都可以通過SPI口進(jìn)行設(shè)置。其Enhanced Shock Burst模式可以同時(shí)控制應(yīng)答及重發(fā)功能而無需增加微控制器的工作量。nRF24L01還具備同一頻道接收六路不同通道數(shù)據(jù)的功能,利用FDMA技術(shù)最多可實(shí)現(xiàn)750個(gè)點(diǎn)的數(shù)據(jù)采集,這使它成為無線溫度測量系統(tǒng)硬件實(shí)現(xiàn)的最佳選擇。nRF24L01模塊在與MCU進(jìn)行數(shù)據(jù)傳輸時(shí),可以使用MCU普通的I/O口,系統(tǒng)中直接利用ATmega16的固有資源SPI通信口,這樣從一定程度上簡化了軟件設(shè)計(jì)過程。
液晶顯示模塊采用LCD1602液晶顯示器,模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。因?yàn)?602識別的是ASCII碼,設(shè)計(jì)中可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如A’。系統(tǒng)中1602采用的是8位數(shù)據(jù)線驅(qū)動,其控制端和數(shù)據(jù)傳輸均通過單片機(jī)的I/O口直接控制,電路如圖4所示。
MCU-ATmega16、溫度傳感器DS18B20和液晶顯示器模塊1602都是用5 V供電電源。系統(tǒng)供電電源為5 V,可以直接使用。nRF24L01無線收發(fā)模塊需要3.3 V供電,所以采用REG1117-3.3芯片進(jìn)行電源電壓變換,產(chǎn)生3.3 V電源供nRF24L01使用。ATmega16的SPI口在與nRF24L01無線收發(fā)模塊相接時(shí),由于ATmega16輸出驅(qū)動電流偏大,可能會損壞無線模塊,所以要串聯(lián)2 k電阻以保護(hù)無線模塊。
1.2 溫度顯示管理終端
在溫度顯示管理終端,首先由無線收發(fā)模塊nRF24L01通過天線將節(jié)點(diǎn)溫度測量系統(tǒng)發(fā)送的溫度信息進(jìn)行接收。通過單片機(jī)SPI串口將溫度信息數(shù)據(jù)采集到MCU,溫度不在正常監(jiān)測范圍則聲音模塊發(fā)出聲音報(bào)警。最后通過RS232通信,將溫度數(shù)據(jù)送到PC進(jìn)行顯示和處理。整個(gè)系統(tǒng)的通信屬于雙工通信,在必要情況下,電路功能可以擴(kuò)展,實(shí)現(xiàn)PC發(fā)出控制信號,通過反方向通信調(diào)節(jié)各個(gè)節(jié)點(diǎn)的溫度。
2 結(jié)束語
本文設(shè)計(jì)的無線溫度監(jiān)測系統(tǒng)結(jié)構(gòu)簡單,實(shí)現(xiàn)容易,系統(tǒng)性能好。適合多種場合進(jìn)行無線溫度監(jiān)測。