基于FPGA控制的溫度檢測(cè)無(wú)線發(fā)射接收系統(tǒng)
王振紅 周錫剛
北方工業(yè)大學(xué)
摘要: 以前大多溫度控制系統(tǒng)都是用單片機(jī)控制的,,但是隨著FPGA的迅速發(fā)展,,應(yīng)用也越來(lái)越廣,。本文將設(shè)計(jì)出一套由FPGA獨(dú)立控制的,、智能化的遠(yuǎn)程溫度控制系統(tǒng)。由一個(gè)放置于客戶端的溫度采集系統(tǒng)采集到客戶端溫度(可排除工程中熱損失),,當(dāng)大于或小于人體最佳溫度區(qū)時(shí)發(fā)出報(bào)警信號(hào),,由控制端去控制是應(yīng)該加溫還是降溫,從而達(dá)到節(jié)能的作用,。
Abstract:
Key words :
O 前言
隨著社會(huì)節(jié)能環(huán)保意識(shí)的增強(qiáng),,人們?cè)絹?lái)越重視能源的利用效率。傳統(tǒng)的暖氣控制都是利用鍋爐燒出蒸汽或熱水,,通過(guò)管道輸送到建筑物內(nèi)的散熱器中,,散出熱量,使室溫增高,。但是這種設(shè)備控制中心和客戶端不在同一個(gè)地方,,這樣就存在著一種控制中心不了解客戶的情況,。存在著暖氣開(kāi)得過(guò)大或者過(guò)小,,從而導(dǎo)致客戶溫度過(guò)低或過(guò)高而浪費(fèi)了能源!
以前大多溫度控制系統(tǒng)都是用單片機(jī)控制的,但是隨著FPGA的迅速發(fā)展,,應(yīng)用也越來(lái)越廣,。本文將設(shè)計(jì)出一套由FPGA獨(dú)立控制的、智能化的遠(yuǎn)程溫度控制系統(tǒng),。由一個(gè)放置于客戶端的溫度采集系統(tǒng)采集到客戶端溫度(可排除工程中熱損失),,當(dāng)大于或小于人體最佳溫度區(qū)時(shí)發(fā)出報(bào)警信號(hào),由控制端去控制是應(yīng)該加溫還是降溫,從而達(dá)到節(jié)能的作用,。
1 數(shù)字溫度傳感技術(shù)
1.1 數(shù)字溫度傳感器原理
數(shù)字溫度傳感器LM75A是一個(gè)使用了內(nèi)置帶隙溫度傳感器和∑-△模數(shù)轉(zhuǎn)換技術(shù)的溫度-數(shù)字轉(zhuǎn)換器,。簡(jiǎn)化框圖如圖1所示。
它也是一個(gè)溫度檢測(cè)器,,可提供一個(gè)過(guò)熱檢測(cè)輸出,。LM75A包含許多數(shù)據(jù)寄存器:配置寄存器(Conf),用來(lái)存儲(chǔ)器件的某些配置,,如器件的工作模式,、OS工作模式、OS極性和0S故障隊(duì)列等,;溫度寄存器(Temp),,用來(lái)存儲(chǔ)讀取的數(shù)字溫度,器件通過(guò)2線的串行I2C總線接口與控制器通信,。
LM75A還包含一個(gè)開(kāi)漏輸出(OS),,當(dāng)溫度超過(guò)編程限制的值時(shí)該輸出有效。LM75A有3個(gè)可選的邏輯地址管腳,,使得同一總線上可同時(shí)連接8個(gè)器件而不發(fā)生地址沖突,。
LM75A可配置成不同的工作條件。它可設(shè)置成在正常工作模式下周期性地對(duì)環(huán)境溫度進(jìn)行監(jiān)控或進(jìn)入關(guān)斷模式來(lái)將器件功耗降至最低,。OS輸出有2 種可選的工作模式:OS比較器模式和OS中斷模式,。OS輸出可選擇高電平或低電平有效。故障隊(duì)列和設(shè)定點(diǎn)限制可編程,,為了激活OS輸出,,故障隊(duì)列定義了許多連續(xù)的故障。
溫度寄存器通常存放著一個(gè)11位的二進(jìn)制數(shù)的補(bǔ)碼,,用來(lái)實(shí)現(xiàn)0.125℃的精度,。這個(gè)高精度在需要精確地測(cè)量溫度偏移或超出限制范圍的應(yīng)用中非常有用。
正常工作模式下,,當(dāng)器件上電時(shí),,OS工作在比較器模式,溫度閾值為80℃,,滯后75℃,,這時(shí),LM75A就可用作一個(gè)具有以上預(yù)定義溫度設(shè)定點(diǎn)的獨(dú)立的溫度控制器,。
1.2 溫度傳感器控制原理
如果將溫度傳感器設(shè)定為正常工作模式,,那么首先要向配置寄存器寫(xiě)入控制字告訴器件的工作模式。寫(xiě)配置寄存器時(shí)序如圖2所示,。
LM75A還包含一個(gè)開(kāi)漏輸出(OS),,當(dāng)溫度超過(guò)編程限制的值時(shí)該輸出有效。LM75A有3個(gè)可選的邏輯地址管腳,,使得同一總線上可同時(shí)連接8個(gè)器件而不發(fā)生地址沖突,。
LM75A可配置成不同的工作條件。它可設(shè)置成在正常工作模式下周期性地對(duì)環(huán)境溫度進(jìn)行監(jiān)控或進(jìn)入關(guān)斷模式來(lái)將器件功耗降至最低,。OS輸出有2 種可選的工作模式:OS比較器模式和OS中斷模式,。OS輸出可選擇高電平或低電平有效。故障隊(duì)列和設(shè)定點(diǎn)限制可編程,,為了激活OS輸出,,故障隊(duì)列定義了許多連續(xù)的故障。
溫度寄存器通常存放著一個(gè)11位的二進(jìn)制數(shù)的補(bǔ)碼,,用來(lái)實(shí)現(xiàn)0.125℃的精度,。這個(gè)高精度在需要精確地測(cè)量溫度偏移或超出限制范圍的應(yīng)用中非常有用。
正常工作模式下,,當(dāng)器件上電時(shí),,OS工作在比較器模式,溫度閾值為80℃,,滯后75℃,,這時(shí),LM75A就可用作一個(gè)具有以上預(yù)定義溫度設(shè)定點(diǎn)的獨(dú)立的溫度控制器,。
1.2 溫度傳感器控制原理
如果將溫度傳感器設(shè)定為正常工作模式,,那么首先要向配置寄存器寫(xiě)入控制字告訴器件的工作模式。寫(xiě)配置寄存器時(shí)序如圖2所示,。
寫(xiě)配置寄存器首先要選擇器件的地址,,即A0-A2設(shè)置與硬件地址A0-A2一樣,。然后是寫(xiě)入配置寄存器地址指針,配置寄存器指針為”0000-000l”,。等待器件應(yīng)答一個(gè)SCL周期,,再寫(xiě)入工作模式控制字。如果設(shè)置在正常工作模式下,,OS設(shè)置為比較輸出,,那么配置數(shù)據(jù)字應(yīng)寫(xiě)入”00000000”。
寫(xiě)入配置寄存器控制字”00000000”后溫度傳感器工作在正常工作模式下,,即每一段時(shí)間溫度傳感器將溫度轉(zhuǎn)換成數(shù)字信號(hào)存放在溫度寄存器里,,所以只需要將溫度寄存器的數(shù)據(jù)讀出再加以計(jì)算即可以得到溫度數(shù)據(jù)。讀取溫度寄存器的時(shí)序如圖3所示,。
寫(xiě)入配置寄存器控制字”00000000”后溫度傳感器工作在正常工作模式下,,即每一段時(shí)間溫度傳感器將溫度轉(zhuǎn)換成數(shù)字信號(hào)存放在溫度寄存器里,,所以只需要將溫度寄存器的數(shù)據(jù)讀出再加以計(jì)算即可以得到溫度數(shù)據(jù)。讀取溫度寄存器的時(shí)序如圖3所示,。
讀取溫度寄存器時(shí)首先是選中器件,,地址信號(hào)應(yīng)該與硬件設(shè)置地址一致。第二段是選擇溫度寄存器,,溫度寄存器指針地址P1-P0寫(xiě)入”0-0”,,表示下次操作的默認(rèn)寄存器為器件的溫度寄存器。重新起始后再次選中器件并讀取溫度寄存器的十六位的溫度數(shù)據(jù),,并將十六位的數(shù)據(jù)的有效數(shù)據(jù)前十一位提取出,,即可得到有效的溫度數(shù)據(jù)。將溫度數(shù)據(jù)與預(yù)設(shè)的溫度比較后得出升溫或降溫信號(hào),,連接到無(wú)線發(fā)射模塊的KEYl,、KEY2上發(fā)射到接收端。接收端接收到信號(hào)后再經(jīng)過(guò)放大后便可驅(qū)動(dòng)步進(jìn)電機(jī)等,。
2 時(shí)序的實(shí)現(xiàn)方法
FPGA與其它邏輯語(yǔ)言的運(yùn)行有很大區(qū)別,,最大的區(qū)別就是FPGA是硬件語(yǔ)言,而不是類似于c語(yǔ)言的程序,。VHDL下載后生成的是邏輯硬件電路,,不是控制器控制執(zhí)行的邏輯語(yǔ)句。VHDL語(yǔ)言每個(gè)進(jìn)程之間是并行運(yùn)行的,,但是進(jìn)程內(nèi)部的語(yǔ)句卻又是順序執(zhí)行的,。而且每個(gè)信號(hào)的傳輸都是在所在進(jìn)程結(jié)束的時(shí)候進(jìn)行的。這點(diǎn)很重要,,比如你對(duì)一個(gè)信號(hào)前后兩次賦值,,哪怕你中間有很多運(yùn)算最終的結(jié)果還是最后一次賦值的結(jié)果,前一次賦值將是無(wú)效的,,且會(huì)在報(bào)告中彈出一個(gè)警告,。每個(gè)process的運(yùn)行是靠敏感信號(hào)觸發(fā)的,敏感信號(hào)放在process后面的括號(hào)中,。所以對(duì)于VHDL語(yǔ)言來(lái)說(shuō)循環(huán)語(yǔ)句不是很必要的,,因?yàn)槊看蚊舾行盘?hào)變化該進(jìn)程將從程序的第一句開(kāi)始重新運(yùn)行一次。意味著一個(gè)進(jìn)程本來(lái)就是一個(gè)循環(huán),,只有變化的部分的信號(hào)才能得到改變,。這一點(diǎn)與普通邏輯語(yǔ)言有很大的區(qū)別。
FPGA與其它邏輯語(yǔ)言的運(yùn)行有很大區(qū)別,,最大的區(qū)別就是FPGA是硬件語(yǔ)言,而不是類似于c語(yǔ)言的程序,。VHDL下載后生成的是邏輯硬件電路,,不是控制器控制執(zhí)行的邏輯語(yǔ)句。VHDL語(yǔ)言每個(gè)進(jìn)程之間是并行運(yùn)行的,,但是進(jìn)程內(nèi)部的語(yǔ)句卻又是順序執(zhí)行的,。而且每個(gè)信號(hào)的傳輸都是在所在進(jìn)程結(jié)束的時(shí)候進(jìn)行的。這點(diǎn)很重要,,比如你對(duì)一個(gè)信號(hào)前后兩次賦值,,哪怕你中間有很多運(yùn)算最終的結(jié)果還是最后一次賦值的結(jié)果,前一次賦值將是無(wú)效的,,且會(huì)在報(bào)告中彈出一個(gè)警告,。每個(gè)process的運(yùn)行是靠敏感信號(hào)觸發(fā)的,敏感信號(hào)放在process后面的括號(hào)中,。所以對(duì)于VHDL語(yǔ)言來(lái)說(shuō)循環(huán)語(yǔ)句不是很必要的,,因?yàn)槊看蚊舾行盘?hào)變化該進(jìn)程將從程序的第一句開(kāi)始重新運(yùn)行一次。意味著一個(gè)進(jìn)程本來(lái)就是一個(gè)循環(huán),,只有變化的部分的信號(hào)才能得到改變,。這一點(diǎn)與普通邏輯語(yǔ)言有很大的區(qū)別。
對(duì)于時(shí)序的實(shí)現(xiàn)有很多方法,,可以用case語(yǔ)句實(shí)現(xiàn),,也可以用if語(yǔ)句實(shí)現(xiàn)。但是最有效和合乎邏輯的方法是用狀態(tài)機(jī)實(shí)現(xiàn),。以下是狀態(tài)機(jī)的模型,。
狀態(tài)機(jī)邏輯清晰,在每個(gè)對(duì)應(yīng)的狀態(tài)下將每個(gè)信號(hào)應(yīng)該進(jìn)行的操作放在對(duì)應(yīng)的狀態(tài)機(jī)程序中,,嚴(yán)格控制各個(gè)信號(hào)的時(shí)序要求則可精確地實(shí)現(xiàn)高速控制,。而且比單片機(jī)具有更高的速度。
3 無(wú)線收發(fā)模塊
3.1 無(wú)線收發(fā)硬件原理
如圖4所示,,無(wú)線發(fā)射模塊PT2262將來(lái)自10-13管腳的按鍵信號(hào)編碼后在17管腳上輸出,。PT2262的17管腳的信號(hào)由同步碼、地址碼,、數(shù)據(jù)碼組成,。17管腳輸出信號(hào)經(jīng)過(guò)R315A芯片AM調(diào)制后輸出到天線上。每組數(shù)碼連續(xù)發(fā)射四次,,只有兩次得到的數(shù)碼一樣以后才把相應(yīng)數(shù)據(jù)位輸出高電平,。為了保護(hù)高頻設(shè)備,本設(shè)計(jì)采用間歇發(fā)射的方式,,即每3s發(fā)射一下信號(hào),,然后停止1s。目的是為了保護(hù)高頻設(shè)備,,避免其一直處于一種工作狀態(tài)而降低其壽命,。
3 無(wú)線收發(fā)模塊
3.1 無(wú)線收發(fā)硬件原理
如圖4所示,,無(wú)線發(fā)射模塊PT2262將來(lái)自10-13管腳的按鍵信號(hào)編碼后在17管腳上輸出,。PT2262的17管腳的信號(hào)由同步碼、地址碼,、數(shù)據(jù)碼組成,。17管腳輸出信號(hào)經(jīng)過(guò)R315A芯片AM調(diào)制后輸出到天線上。每組數(shù)碼連續(xù)發(fā)射四次,,只有兩次得到的數(shù)碼一樣以后才把相應(yīng)數(shù)據(jù)位輸出高電平,。為了保護(hù)高頻設(shè)備,本設(shè)計(jì)采用間歇發(fā)射的方式,,即每3s發(fā)射一下信號(hào),,然后停止1s。目的是為了保護(hù)高頻設(shè)備,,避免其一直處于一種工作狀態(tài)而降低其壽命,。
接收電路如圖5所示,接收端將天線接收到信號(hào)經(jīng)過(guò)兩級(jí)三極管放大以后再經(jīng)過(guò)一級(jí)同向放大,,最后將放大信號(hào)經(jīng)過(guò)比較以后,,輸出到PT2272芯片的14管腳,如果沒(méi)有受到外部干擾,,PT2272的14管腳的信號(hào)與PT2262的17管腳的信號(hào)是一致的,。PT2272內(nèi)部將接收到的信號(hào)解碼后得出數(shù)據(jù)碼,并在相對(duì)應(yīng)的輸出管腳輸出高電平,。如果輸出的信號(hào)有效,,那么在2272的17管腳將輸出一個(gè)高電平有效的信號(hào),表示輸出信號(hào)是有效的,。
4.2 無(wú)線發(fā)射信號(hào)原理
發(fā)射數(shù)據(jù)分為三部分,,第一部分是地址碼,,第二部分是數(shù)據(jù)碼,最后一部分是同步碼,。即在每一段數(shù)據(jù)后邊都有一個(gè)定位信息,。每個(gè)AD碼為占32a。地址碼和數(shù)據(jù)碼都用寬度不同的脈沖來(lái)表示,,兩個(gè)窄脈沖表示”O”,;兩個(gè)寬脈沖表示”1”;一個(gè)窄脈沖和一個(gè)寬脈沖表示”F-”,,也就是地址碼的”懸空”,。
發(fā)射數(shù)據(jù)分為三部分,,第一部分是地址碼,,第二部分是數(shù)據(jù)碼,最后一部分是同步碼,。即在每一段數(shù)據(jù)后邊都有一個(gè)定位信息,。每個(gè)AD碼為占32a。地址碼和數(shù)據(jù)碼都用寬度不同的脈沖來(lái)表示,,兩個(gè)窄脈沖表示”O”,;兩個(gè)寬脈沖表示”1”;一個(gè)窄脈沖和一個(gè)寬脈沖表示”F-”,,也就是地址碼的”懸空”,。
發(fā)射的數(shù)據(jù)是一個(gè)字碼由12位AD碼(地址碼加數(shù)據(jù)碼,比如8位地址碼加4位數(shù)據(jù)碼)組成,。2262每次發(fā)射時(shí)至少發(fā)射4組字碼,,2272只有在連續(xù)兩次檢測(cè)到相同的地址碼加數(shù)據(jù)碼才會(huì)把數(shù)據(jù)碼中的”1”驅(qū)動(dòng)相應(yīng)的數(shù)據(jù)輸出端為高電平和驅(qū)動(dòng)VT端同步為高電平。
因?yàn)?a href="http://forexkbc.com/article/index.aspx?id=24224 ">無(wú)線發(fā)射的特點(diǎn),,第一組字碼非常容易受零電平干擾,,往往會(huì)產(chǎn)生誤碼,所以程序可以丟棄處理,。接收端接收到升溫或者降溫信號(hào)后可以控制步進(jìn)電機(jī)等驅(qū)動(dòng)電路工作去控制暖氣系統(tǒng)升溫和降溫,。
因?yàn)?a href="http://forexkbc.com/article/index.aspx?id=24224 ">無(wú)線發(fā)射的特點(diǎn),,第一組字碼非常容易受零電平干擾,,往往會(huì)產(chǎn)生誤碼,所以程序可以丟棄處理,。接收端接收到升溫或者降溫信號(hào)后可以控制步進(jìn)電機(jī)等驅(qū)動(dòng)電路工作去控制暖氣系統(tǒng)升溫和降溫,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。