a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > 基于nRF9E5和DS18B20的無線測溫系統設計

基于nRF9E5和DS18B20的無線測溫系統設計

作者: 時間:2007-08-16 來源:網絡 收藏

目前,很多場合的采用的還是有線設備,由溫度傳感器、分線器、機和監控機等組成,各部件之間采用電纜連接進行數據傳輸。這種布線復雜、維護困難、成本高,可采用方案解決這些問題。測溫是一種集溫度信號采集、大容量存儲、射頻發送、LED(或LCD)動態顯示、控制與通信等功能于一體的新型系統。

本文從低功耗、小體積、使用簡單等方面考慮,射頻SoC 和數字溫度傳感器了一個無線測溫系統,整個系統由多個無線節點和1個基站組成。無線節點工作在各個測溫地點,進行溫度數據采集和無線發送。基站與多個節點進行無線通信,并通過數碼管將數據顯示出來,同時可以通過RS-232串口將數據發送給PC。

簡介

是Nordic公司推出的射頻片上系統,內嵌8051兼容微控制器、RF收發器和4通道10位A/D轉換器,是真正的系統級芯片,其功能結構如圖1所示。

圖1 nRF9E5功能結構框圖

nRF9E5的片內微控制器與標準8051兼容,指令時序與標準8051稍有區別。中斷控制器支持5個擴展中斷源:ADC中斷、SPI中斷、喚醒中斷和兩個無線收發中斷。此外,還擴展了兩個數據指針,使得片外RAM存取數據更為方便。微控制器內有256B的數據RAM和512B的ROM。上電復位或軟件復位后,控制器自動執行ROM引導區中的代碼,用戶程序通常在引導區的引導下,從E2PROM加載到1個4KB的RAM中,該RAM也可用來存儲數據。當進行批量生產時,可要求廠家代理將程序固化到片內,這樣可省去E2PROM的費用并進一步減小系統體積。

nRF9E5內置收發器具有與單片射頻收發器nRF905相同的功能,可通過片內MCU的并行口或SPI口與微控制器通信。收發器由頻率合成器、功率放大器、調制器和接收單元組成。輸出功率、頻道和其他射頻參數可通過對特殊功能寄存器RADIO編程進行控制。發射模式(TX)下,最小工作電流僅為9mA(輸出功率-10dBm),接收(RX)模式下的工作電流為12.5mA,掉電模式下的工作電流僅為2.5μA。可見,nRF9E5的功耗很低。

nRF9E5采用Nordic公司的ShockBurst技術(自動處理前綴、地址和CRC),實現低速數據輸入,高速數據輸出,從而降低了系統的平均功耗。另外,nRF9E5還具有載波檢測功能。在ShockBurst接收方式下,當工作信道內有射頻載波出現時,載波檢測引腳(CD)被置高。也就是說,當收發器準備發送數據時,它首先進入接收模式并檢測所工作的信道是否可以發送數據(信道是否空閑),這是一種簡單的傳輸前監聽協議。這個特性很好地避免了同一工作頻率下不同發射器數據包之間的碰撞。

概述

是美國DALLAS公司的“單總線”數字溫度傳感器,它具有結構簡單、體積小、功耗低、無須外接元件、用戶可自行設定預警上下限溫度等特點。“單總線”結構獨特而且經濟,采用一根I/O數據線既可供電又可傳輸數據,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。

3引腳封裝的DS18B20形如一只三極管,其內部結構如圖2所示。主要由四部分組成:64位光刻ROM、溫度傳感器、非易失性的溫度報警觸發器和配置寄存器。此外,還有電源檢測模塊、存儲和控制邏輯器、中間結果緩存器和8位循環冗余校驗碼(CRC)發生器。

圖2 3引腳DS18B20內部結構


ROM中的64位序列號是出廠前被光刻好的,可以看作該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。DS18B20內部的RAM由9個字節的高速緩存器和E2PROM組成,數據先寫入高速緩存器,經校驗后再傳送給E2PROM。通過DS18B20功能命令對RAM進行操作。

DS18B20的測量溫度范圍為-55℃~125℃,在-10℃~85℃范圍內,精度為0.5℃,可編程設定9~12位的分辨率,默認值為12位,轉換12位溫度信號所需時間為750ms(最大)。檢測溫度由2字節組成,字節1的高5位S代表符號位,字節0的低4位是小數部分,中間7位是整數部分。

無線測溫系統組成及硬件

無線測溫系統主要可分為基站和無線節點兩大部分。每套系統一般只有1個基站,包括微控制器及射頻收發單元、顯示單元、報警單元、電源模塊及接口單元,主要硬件連接如圖3所示。

圖3 基站主要部件原理圖


接口單元是為了方便射頻模塊和PC的通信,通常可采用RS-232接口、USB接口、以太網接口等,其中,RS-232接口是目前PC與通信工業中應用最廣泛的一種串行接口。本文使用RS-232接口,采用MAX3232芯片實現RS-232電平與TTL電平之間的轉換。MAX3232是MAXIM公司生產的一種RS-232接口芯片,使用單一電源電壓供電,電源電壓在3.0~5.5V范圍內都可以正常工作。

基站接收到數據后,將溫度信息通過數碼管(或液晶顯示屏)顯示出來,根據需要,還可以通過RS-232接口與PC進行通信。為簡化系統,本直接用nRF9E5的P0口驅動數碼管(未在圖中給出),但是P0口不具備數據保持能力,需要外接一定大小的上拉電阻,顯示方法采用掃描法。采用一個蜂鳴器作為報警裝置,當溫度超過設定范圍時,鳴叫報警。射頻天線采用單鞭天線。

無線節點分布在溫度采集點,由數字溫度傳感器DS18B20、射頻SoC nRF9E5、天線及電池組成。在實際應用中,可以有多個無線節點,它們與基站之間通過射頻進行無線通信。無線節點的電路結構如圖4所示,其中,25AA320為E2PROM程序存儲器。DS18B20有寄生電源和外部電源兩種供電方式,本文采用外部供電方式,VDD引腳直接連接外部電源。DS18B20在空閑時,其DQ腳由上拉電阻置為高電平。無線節點的天線根據實際需要可選用單鞭天線或PCB印制天線。

圖4 無線測溫節點結構簡圖


無線測溫系統的軟件設計

本系統軟件設計比較復雜,整個軟件系統的流程如圖5所示,主要有以下幾個關鍵函數:DS18B20初始化及溫度采集函數、nRF9E5初始化及射頻發送(接收)函數、數據顯示函數、串口通信函數等。

圖5 無線測溫系統軟件流程


限于篇幅,各個函數的詳細流程圖不再給出,僅列出幾個函數片斷供參考,程序采用C語言編寫,用Keil C51進行編譯。

DS18B20采用單總線數據傳輸方式,對讀寫的操作時序要求嚴格。DS18B20提供了一系列指令來控制傳感器的工作,利用這些指令就可以對DS18B20進行操作了。為了操作方便,可編寫兩個操作函數,源碼如程序清單1所示。

程序清單1:
//-------------------
//啟動DS18B20的1次溫度轉換
//-------------------
void ConvertT(void)
{
RST18B20( ); //初始化
WR18B20(0xcc); //跳過多傳感器識別
WR18B20(0x44); //啟動溫度轉換
}
//-------------------
//讀取DS18B20
//-------------------
int ReadT(void)
{
RST18B20( ); //初始化
WR18B20(0xcc); //跳過多傳感器識別
WR18B20(0xbe); //讀DS18B20緩存器
DPL=RD18B20( ); //溫度低位
DPH=RD18B20( ); //溫度高位
return(DPTR); //返回讀出的溫度值
}

在開始進行無線通信前,必須對nRF9E5進行初始化配置,這個配置是通過對配置寄存器的設置來完成的。nRF9E5有一個144位的配置字,規定了無線收發器的接收地址、收發頻率、發射功率、無線傳輸頻率、無線收發模式、CRC校驗和的長度及有效數據的長度等。nRF9E5的初始化工作,可根據具體要求對照數據手冊進行配置。

數據的發送和接收是無線收發器的主要功能,當有數據要發送時,首先通過SPI接口把所要發送的數據送給nRF905模塊,設置TRX_CE、TXEN為高以激活nRF9E5進入發送狀態。無線系統自動上電,數據自動加前導碼和CRC校驗,然后發送數據包。具體過程如程序清單2所示。

程序清單2:
//-------------------
//發送數據包
//-------------------
void TransmitPacket(INT8U *pBuf)
{
INT8U i;
RACSN = 0;
SpiReadWrite(WTP);
for (i=0; iNrf9e5Config[10]; i++)
{
SpiReadWrite(pBuf[i]); //寫入發送緩沖區
}
RACSN = 1;
TXEN = 1;
TRX_CE = 1; //使能發送
Delay100us(1);
TRX_CE = 0; //發送完畢
}

當要接收數據時,通過設置TRX_CE為高、TXEN為低,使nRF9E5進入接收狀態。當nRF9E5監測到和接收頻率相同的載波時,載波檢測(CD)被置高;當接收到有效的地址時,地址匹配(AM)被置高;當接收到有效的數據包(CRC校驗正確)時,數據就緒(DR)置高。接收數據的具體程序清單不再列出。

當需要將接收到的數據通過RS-232串口輸出時,首先要進行串口初始化,開啟nRF9E5管腳P0.1、P0.2的第二功能,具體過程見程序清單3。

程序清單3:
//-------------------
//串口初始化
//-------------------
void InitUart(void)
{
TH1=243;
CKCON|=0x10;
PCON=0x80; // 設置波特率
SCON=0x52; // 模式1,使能接收
TMOD=~0x30;
TMOD|=0x20;
TR1=1; //定時器1開啟
P0_ALT|=0x06; //串口使能
P0_DIR|=0x02; //P0.1 輸入
P0_DIR=0xfb; //P0.2輸出
ES=0;
}

結束語

本文nRF9E5和DS18B20設計了一個無線測溫系統,具有體積小、功耗低等優點,適用于采油廠、發電廠、鉆井施工等不宜進行有線測溫的場合,應用前景廣闊。



評論


相關推薦

技術專區

關閉