一、基于nRF24L01的無線溫濕度檢測系統(tǒng)設(shè)汁
摘要:提出了一種針對無線數(shù)據(jù)傳輸問題的解決方案,該方案基于nRF24L01來設(shè)計無線溫度采集系統(tǒng)。該系統(tǒng)采用低功耗、高性能單片機STC12C5A08S2和溫濕度傳感器DHT11來構(gòu)成多點、實時溫濕度監(jiān)測系統(tǒng),最后在PC機上完成配置、顯示和報警等功能。該系統(tǒng)使用方便,擴展十分容易,可廣泛應(yīng)用于各種工農(nóng)業(yè)生產(chǎn)和養(yǎng)殖等場合。
0 引言
在當(dāng)今的工農(nóng)業(yè)生產(chǎn)中,需要進行溫濕度采集的場合越來越多,準(zhǔn)確方便地測量溫度變得至關(guān)重要。傳統(tǒng)的有線測溫方式存在著布線復(fù)雜,線路容易老化,線路故障難以排查,設(shè)備重新布局要重新布線等問題。特別是在有線網(wǎng)絡(luò)不通暢或由于現(xiàn)場環(huán)境因素的限制而不便架設(shè)線路的情況下,給溫濕度的數(shù)據(jù)采集帶來了很大的麻煩。要想監(jiān)測到實時的溫濕度數(shù)據(jù),就必須采用無線傳輸?shù)姆绞綄?shù)據(jù)進行采集、發(fā)送、接收并對無線采集來的數(shù)據(jù)通過上位機進行處理,以控制并監(jiān)測設(shè)備的運行情況,減少不必要的線路設(shè)備開支。
1 系統(tǒng)組成框圖
本文設(shè)計的多路無線溫濕度檢測系統(tǒng)將單片機檢測控制系統(tǒng)和射頻通信系統(tǒng)相結(jié)合,系統(tǒng)由主機和從機兩部分構(gòu)成,從機負(fù)責(zé)檢測溫濕度,并將采集到的數(shù)據(jù)通過射頻系統(tǒng)發(fā)送給主機,主機接收從機發(fā)送過來的信號,并通過串口和PC機進行通信,記錄數(shù)據(jù)。同時可通過PC機設(shè)定報警數(shù)據(jù)上下限。其系統(tǒng)組成框圖如圖1所示。
圖1 系統(tǒng)組成框圖
2 系統(tǒng)硬件電路
系統(tǒng)的溫濕度數(shù)據(jù)采用數(shù)字式溫濕度傳感器DHT11進行數(shù)據(jù)采集,以51系列增強型單片機STC12C5A08S2為核心和無線射頻nRF2401構(gòu)成收發(fā)電路,從機使用液晶LCD1602顯示,主機顯示則使用LCD12864,整個顯示系統(tǒng)可與PC上位機相連接。
2.1 溫濕度采集電路設(shè)計
DHT11是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。該傳感器應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),具有極高的可靠性與卓越的長期穩(wěn)定性。圖2所示為其溫度采集電路。DHT11傳感器包括一個電阻式感濕元件和一個NTC測溫元件,可與高性能8位單片機相連接。校準(zhǔn)系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的過程中可調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口可使系統(tǒng)集成變得簡易而快捷,而且信號傳輸距離可達20m以上。當(dāng)連接線長度短于20m時,應(yīng)使用5kΩ上拉電阻,大于20m時,應(yīng)根據(jù)情況使用合適的上拉電阻。
圖2 溫度采集電路
2.2 無線發(fā)射、接收電路設(shè)計
nRF24L01是NORDIC公司生產(chǎn)的一款無線通信芯片,采用FSK調(diào)制方式,內(nèi)部集成有NORDIC自己的Enhanced Short Burst協(xié)議??梢詫崿F(xiàn)點對點或是1對6的無線通信。無線通信速度可以達到2 Mb/s.NORDIC無線發(fā)射、接收芯片nRF24L01的電路原理圖如圖3所示。
圖3 無線發(fā)射、接收原理圖
nRF24L01是單片射頻收發(fā)芯片,工作于2.4~2.5 GHz的ISM頻段,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。nRF24L01芯片的能耗非常低,以-5 dBm的功率發(fā)射時,工作電流只有10.5 mA,接收時的工作電流只有18 mA,它具有多種低功率工作模式,節(jié)能環(huán)保,設(shè)計方便。
nRF24L01無線收發(fā)模塊的各管腳功能如表1所列,圖4所示是nRF24L01與單片機連接時的電路圖。
圖4 無線模塊與CPU連接電路圖
本無線發(fā)射接收模塊需要的電源為1.9~3.6 V,本系統(tǒng)中采用3.3 V直流電源來直接對無線發(fā)射接收模塊供電,5 V電源經(jīng)。ASM1117-3.3芯片轉(zhuǎn)換后可得到穩(wěn)定的直流電源,其電源轉(zhuǎn)換電路如圖5所示。
圖5 無線模塊電源轉(zhuǎn)換電路
2.3 串行通信模塊
主機單片機接收到nRF24L01的數(shù)據(jù)后,經(jīng)MAX232電平轉(zhuǎn)換可實現(xiàn)單片機程序下載與升級,同時可實現(xiàn)單片機與PC機(上位機)的通信,以便將顯示數(shù)據(jù)信息通過此電路傳送到PC機,并存PC機上顯示,其串行通信電路如圖6所示。
圖6 MAX232CPE與PC的串口通信電路
3 軟件設(shè)計
3.1 下位機軟件
本系統(tǒng)使用C語言編程,應(yīng)根據(jù)設(shè)計任務(wù)的要求確定系統(tǒng)程序的完整結(jié)構(gòu),盡可能采用模塊化程序設(shè)計方法,將任務(wù)劃分為相對獨立的功能模塊,明確各模塊的功能、時間順序和相互關(guān)系,系統(tǒng)的軟件設(shè)計可以分為幾個部分,首先是各個模塊的底層驅(qū)動程序編寫,而后是系統(tǒng)聯(lián)機調(diào)試,最后再編寫上位機的系統(tǒng)程序。
主程序是控制和管理的核心,系統(tǒng)上電后,首先進行初始化,系統(tǒng)開始正常運轉(zhuǎn)后,再進行溫、濕度的監(jiān)測與處理等操作。
3.2 上位機軟件設(shè)計
系統(tǒng)上位機能完成的功能有顯示串口號,提示串口是否已被成功打開;同時,上位機能夠與下位機同步顯示溫度,而且能夠?qū)崟r曲線顯示溫度;上位機能夠設(shè)置下限溫濕度和上限溫濕度,當(dāng)高于上限溫濕度或低于下限溫濕度時,還能夠報警。將主機單片機的控制電路串行接口與電腦串口經(jīng)過電平轉(zhuǎn)換連接后,選擇正確的通信協(xié)議,設(shè)置好波特率,即可進行通信。圖7所示是上位機操作界面圖。
圖7 上位機操作界面
上位機軟件可在PC機上通過VC6.0編寫,主要是對MSComm控件及CserialPort類進行操作。
首先是串口設(shè)置。本系統(tǒng)利用的是CSERIALPORT類中的初始化函數(shù)InitPort (this,nport,nbtl,‘N’,8,1,m_dwCommEvents,512)。其巾nport為串口號,nbtl為波特率,可利用串口設(shè)置對話框中的串口號和波特率兩個組合框分別得到初始化函數(shù)中的nport和nbtl.
其次是對溫濕度上下限的設(shè)置。可利用CSERIALPORT類中的啟動串口監(jiān)測進程函數(shù)Start Monitoring、發(fā)送字符串函數(shù)WriteToPort以及關(guān)閉串口進程StopMonitoring來進行溫度上下限的設(shè)置,其信息通過這些函數(shù)發(fā)送到串口,單片機從RS232上收到數(shù)據(jù)后,與自身的溫度相比較,再進行相應(yīng)的處理。
第三是曲線顯示。動態(tài)曲線顯示可利用CHistogram類中的SetRange(200,400),SetPos(temp)函數(shù),SetRange設(shè)置上下極限值,SetPos是在圖上顯示相應(yīng)的數(shù)據(jù)點,temp是從單片機傳來的溫濕度數(shù)據(jù)的處理結(jié)果,具體的移動曲線可由CHistogram類中函數(shù)實現(xiàn)。
4 結(jié)論
經(jīng)測試,在發(fā)射接收模塊沒加天線的情況下,無線發(fā)射接收模塊在大多數(shù)情況下的數(shù)據(jù)傳輸距離在200 m左右,發(fā)射頭發(fā)射功率、接收頭接收靈敏度等因素可能會影響傳輸距離,若外加天線,則會大大增加傳輸距離。另外,在調(diào)試過程中,振蕩電阻必須匹配,否則接收距離會變短甚至無法接收。
本系統(tǒng)的數(shù)字信號由單片機采樣,基于DHT11的數(shù)字溫濕度傳感器構(gòu)成的實時監(jiān)控系統(tǒng)具有精度高、抗干擾能力強、電路簡單等諸多優(yōu)點。然后利用單片機與PC機的通信可將數(shù)據(jù)送到PC機進行數(shù)據(jù)的存儲、后期處理與顯示。本系統(tǒng)數(shù)據(jù)處理功能強大、顯示直觀、界面友好、性價比高,可廣泛應(yīng)用于工業(yè)控制、儀器、儀表、農(nóng)業(yè)養(yǎng)殖及智能家居等諸多領(lǐng)域。
二、基于FPGA的數(shù)字示波器設(shè)計
隨著信息技術(shù)的發(fā)展,對信號的測量技術(shù)要求越來越高,示波器的使用越來越廣泛。模擬示波器使用前需要進行校正,使用比較麻煩;而數(shù)字示波器,由于受核心控制芯片的影響,對輸入信號的頻率有嚴(yán)格的限制?;贔PGA的數(shù)字示波器,其核心芯片可達到50萬門,配合高速外圍電路,可以測量頻率為1 MHz的信號,有效地克服了以往示波器的不足。
1 系統(tǒng)方案設(shè)計
設(shè)計的數(shù)字示波器系統(tǒng)主要使用了Xilinx系統(tǒng)的開發(fā)環(huán)境,并在此環(huán)境內(nèi)部建立了AD采樣控制模塊、鍵盤控制模塊、VGA顯示模塊等多個模塊,從很大程度上減少了硬件電路的搭建,也因此提高了系統(tǒng)的穩(wěn)定性和可靠性,系統(tǒng)框圖如圖1所示。
另外,設(shè)計使用XPS將32位的MicroBlaze微處理器嵌入到了FPGA中,實現(xiàn)了可編程片的嵌入以及在可編程片上的系統(tǒng)設(shè)計。MieroBlaze通過LBM總線訪問片上的存儲模塊BlockRAM,然后通過OPB總線上掛接外設(shè)進行接口連接和驅(qū)動。
VGA顯示部分采用雙緩沖機制進行工作,在FPGA內(nèi)部建立RAM,按照一定時序降RAM內(nèi)的緩存數(shù)據(jù)映射到VGA顯示屏上。
2 硬件設(shè)計
2.1 信號調(diào)理電路模塊
信號調(diào)理電路模塊,對輸入的模擬信號進行處理,由于輸入電壓幅度為-2.5~+2.5 V之間,而后一級的AD模塊采用了12位的高速A/D轉(zhuǎn)換芯片ADS804,只能對0~2 V的電壓進行模/數(shù)轉(zhuǎn)換,故需要將輸入電壓先抬升為0~5 V,在應(yīng)用運算放大器進行比例縮小,達到0~2 V的模數(shù)轉(zhuǎn)換要求。
2.2 A/D轉(zhuǎn)換電路
A/D轉(zhuǎn)換模塊采用存儲采樣數(shù)據(jù)的并行數(shù)據(jù)處理方法,這樣可以使硬件電路得到最大程度的簡化,同時也提高了系統(tǒng)的穩(wěn)定性。AD部分的采樣,選用實時采樣技術(shù)。能夠捕獲到單個信號。采樣速率為10 MHz,即在最高頻率1 MHz時,實時采樣可以在每周期采10個點以保證取到一個完整的信號波形。
2.3 觸發(fā)電路模塊
觸發(fā)電路模塊屬于外觸發(fā),對模擬信號實現(xiàn)任意電平觸發(fā),該模塊采用電壓比較器來實現(xiàn)單次觸發(fā)。
2.4 存儲模塊
存儲模塊包括內(nèi)存儲和外存儲兩部分,使用外部電路進行搭建的為外存儲,內(nèi)存儲在軟件部分進行說明。
外部非易失性存儲器模塊采用存儲容量為16 KB的E2PROM芯片24C128,該芯片作為手動存儲的存儲介質(zhì),從而實現(xiàn)掉電不丟失的設(shè)計目的。
2.5 VGA顯示模塊
VGA顯示模塊是建于FPGA內(nèi)的雙緩沖機制,由嵌入的MicroBlaze軟核進行控制,能夠進行多個頁面間的切換。另外,每個界面,可以實現(xiàn)中文信息、彩色通道和所測輸入波形的顯示,并可控制顯示內(nèi)容的顯示顏色。
2.6 鍵盤模塊
4×4矩陣鍵盤模塊實現(xiàn)人機交互。
通過鍵盤,可以對示波器的數(shù)字通道、模擬通道、混合通道、存儲、回放、波形左移、波形右移等功能進行選擇。
3 基于FPGA的軟件設(shè)計
FPGA的硬件主要包括:觸發(fā)電路模塊、數(shù)字信號發(fā)生模塊、存儲模塊、鍵盤模塊、VGA顯示模塊等5個部分,軟件流程圖如圖2所示。
3.1 觸發(fā)電路程序
AD采樣啟動后,將從AD進來的數(shù)據(jù)與觸發(fā)字進行比較,當(dāng)滿足設(shè)定條件時,會產(chǎn)生觸發(fā)信號,此信號送到RAM控制器端。通過對外部觸發(fā)電路發(fā)出觸發(fā)信號與內(nèi)部的兩路數(shù)字信號進行觸發(fā)的選擇后,RAM控制器得到觸發(fā)后將采樣數(shù)據(jù)寫入到RAM中。當(dāng)RAM在進行寫數(shù)據(jù)過程中觸發(fā)信號是被抑制的;當(dāng)RAM達到預(yù)觸發(fā)深度時,釋放觸發(fā)信號,等待下一次觸發(fā)的到來。
3.2 數(shù)竽信號發(fā)生程序
利用DDS的原理,在FPGA內(nèi)部生成一個信號發(fā)生器。主要包括頻率控制寄存器、高速相位累加器和比較器3部分。具體做法為:使用一個表示信號平均值的數(shù)據(jù)與AD采樣得來的數(shù)據(jù)進行比較得到同頻同相的A路信號,再經(jīng)由A信號觸發(fā)計數(shù)器,經(jīng)過合理設(shè)置計數(shù)脈沖,得到有45°延時,占空比25%的B路信號。最后對該相位值計算數(shù)字化正弦波幅度輸出。
表示信號平均值的數(shù)據(jù)由MicroBlaze測量信號提供。
3.3 存儲程序
存儲模塊分RAM存儲和FLASH存儲RAM存儲使用一個雙口RAM,寫和讀分開,波形數(shù)據(jù)滿足觸發(fā)條件時送進RAM,存儲了1 024個點,其中前560組送住VGA顯示。
FLASH存儲完成掉電不丟失的存儲目的。20世紀(jì)使用開發(fā)板上的一塊型號為AM29LV160DB的FLASH存儲器,當(dāng)按下存儲健后,F(xiàn)LASH把RAM中的數(shù)據(jù)寫到FLASH中,根據(jù)資料中的讀寫時序圖,使用狀態(tài)機實現(xiàn)這個過程,當(dāng)按下回顯的按鍵時將FLASH中的數(shù)據(jù)讀回圖像顯示RAM,再顯示出來。
3.4 鍵盤程序
鍵盤采用4×4矩陣鍵盤,使用FPGA進行掃描控制,實現(xiàn)人機交互。
鍵盤子程序主要包括數(shù)字通道、模擬通道、混合通道、存儲、回放、波形左移、波形右移、垂直靈敏度檔位設(shè)置,掃描速度檔位設(shè)置等功能與按鍵的對應(yīng)。
3.4.1 顯示分辨率分析
垂直方向劃分為10 div,設(shè)置3檔垂直靈敏度:1 000 mV/div,100 mV/div和10 V/div,即每div可代表1 000 mV,100 mV和10 mV。
A/D轉(zhuǎn)換模塊的模擬信號輸入端的輸入信號電壓為0~2 V,當(dāng)示波器滿刻度顯示時,被測信號的幅度將分別為:V11=1 V/div×10 div=10 V,V12=0.1 V/div×10 div=1 V,V13=10 mv/div×10 div=100 mV。A/D轉(zhuǎn)換器的滿刻度輸入值為Vmax=2 V,程控放大器電路的增益AN=Vmax/VIn,其中N=1,2,3,對應(yīng)于3檔不同垂直靈敏度的增益分別為:A1=2/10=0.2;A2=2/1=2;A3=2/0.1=20。
A/D轉(zhuǎn)換器的滿刻度輸入值為Vmax=5 V《10 V,將AD采樣的值和數(shù)字信號的值據(jù)當(dāng)前檔位進行計數(shù)存儲,即1μs/div時每10個點保存一個,1 ms,/div時每10 000個點保存一個,1 s/div時每采樣10 000 000個點保存一個。
3.4.2 掃描速率分析
A/D的轉(zhuǎn)換速率取決于被測信號的頻率范圍,或DSO對掃描速度的要求,設(shè)計掃描速度含1 ms/div,1μs,/div,1 s/div三檔,通過FPGA內(nèi)部建立分頻電路實現(xiàn)了最高采樣率16 MS/s,每10倍頻步進,共六檔,增加了該示波器的實用性。水平顯示分辨率為64點/div,以保證顯示波形清晰穩(wěn)定。
3.5 VGA顯示部分
VGA顯示模塊使用雙緩沖機制,軟核MicroBlaze通過讀寫顯存來控制VGA顯示。VGA顯示可顯示3種顏色,利用了SOPC的優(yōu)勢。GRAM位寬32b,大大提高了FPGA刷屏的速度。vga_dn與GRAM對內(nèi)嵌的MCU設(shè)計成為BlackBox,MCU只需向相應(yīng)地址發(fā)送合適數(shù)據(jù)即可顯示想要的波形。本設(shè)計主要實現(xiàn)了的顯示為:底色,漢字,示波器的顯示框,波形數(shù)據(jù)。通過取字摸的方式,可在顯示屏上顯示中文信息。當(dāng)部分的數(shù)據(jù)進行綜合時,這幾部分的數(shù)據(jù)各自有不同的優(yōu)先級,當(dāng)多部分重疊時,根據(jù)優(yōu)先級顯示出來。
4 總體效果
圖3為同時顯示2個數(shù)字通道和1個模擬通道的界面,通道1(CH1)為模擬通道,通道2(CH2)和通道3(CH3)為數(shù)字通道,輸入信號為一正弦波,峰一峰值為1.2 V,通道2,設(shè)定輸入信號信號電壓大于0為高電平,反之為低電平,故通道2為占空比為50%的矩形波。通道3設(shè)定輸入信號大于3.3 V為高電平,反之為低電平,故在本圖上通道3為占空比約為25%的矩形波。由圖可知觀察值與計算值相符。
5 結(jié)語
設(shè)計實現(xiàn)了一款基于FPGA的VGA顯示的多通道數(shù)字存儲示波器。FPGA的高速性比其他控制芯片更適合于高速數(shù)據(jù)的采集和處理,另外FPGA內(nèi)部存儲模塊在完成輸入信號的量化存儲速度上有著外接RAM無法比擬的優(yōu)勢。通過測試,設(shè)計系統(tǒng)比較好地完成了各項設(shè)計要求。
三、單片機與模糊控制的溫控儀設(shè)計與實現(xiàn)
摘要:溫度是科學(xué)技術(shù)中最基本的物理量之一,在工業(yè)生產(chǎn)和生活中,常常是表征對象和過程狀態(tài)的重要參數(shù),其控制具有非線性、時滯性和不確定性,用傳統(tǒng)的控制達不到好的控制效果。設(shè)計一種以單片機MSP430F149為系統(tǒng)的核心部件,并將模糊控制算法應(yīng)用到其中的溫控儀上,溫度控制范圍為常溫0~100℃,設(shè)定溫度值與測量溫度值實時顯示,控制精度可達±0.5℃。該系統(tǒng)采用恒瀧供電,電路較簡單,成本低,溫度控制精度高,可以廣泛應(yīng)用于需要進行恒溫控制的生產(chǎn)和生活中。
0 引言
溫度控制對于工業(yè)和日常生活等領(lǐng)域都具有廣闊的應(yīng)用前景,很多應(yīng)用領(lǐng)域,需要精度較高的恒溫控制,由于其控制具有非線性、時滯性和不確定性,用傳統(tǒng)的控制達不到好的控制效果。模糊控制是一種基于規(guī)則的控制,它直接采用語言型控制規(guī)則,出發(fā)點是現(xiàn)場操作人員的控制經(jīng)驗或相關(guān)專家的知識,其魯棒性強,干擾和參數(shù)變化對控制效果的影響被大大減弱,所以特別適合于0~100℃溫度的精確控制。
MSP430系列單片機是一個16位的、具有精簡指令集的、超低功耗的混合型單片機。MSP430F149單片機采用了精簡指令(RISC),具有豐富的尋址方式(7種源操作數(shù)尋址、4種目的操作數(shù)尋址)、簡潔的27條內(nèi)核指令以及大量的模擬指令,大量的寄存器以及片內(nèi)數(shù)據(jù)存儲器都可參加多種運算,還有高效的查表處理指令;有較高的處理速度,在8MHz晶體驅(qū)動下指令周期為125 ns。這些特點保證了可編制出高效率的源程序。MSP430F149單片機具有10位/12位ADC、16位Sigma-Delta A/D、直接尋址模塊(DMA)、端口1~6、基本定時器(Basic Timer)等的一些外圍模塊的不同組合。其中,看門狗可以使程序失控時迅速復(fù)位;模擬比較器進行模擬電壓的比較,配合定時器,可設(shè)計出A/D轉(zhuǎn)換器。該系統(tǒng)采用MSP430F149單片機,可以省去A/D等硬件電路,使其成本降低,可靠性大大增強。
1 系統(tǒng)設(shè)計
系統(tǒng)以MSP430F149單片機為控制核心,溫度測量由鉑電阻恒流調(diào)理電路完成,調(diào)理電路的輸出電壓送入單片機,在單片機內(nèi)部實現(xiàn)A/D轉(zhuǎn)換,并對采樣數(shù)據(jù)進行濾波及標(biāo)度變換處理,溫度值由3位數(shù)碼管顯示。輸入的溫度設(shè)定值由4位獨立式鍵盤電路進行,設(shè)定值送入單片機后,由另一個3位數(shù)碼管顯示。系統(tǒng)設(shè)計框圖如圖1所示。
2 主要硬件電路設(shè)計
2.1 鉑電阻測溫調(diào)理電路
在本系統(tǒng)中,實際溫度值由鉑電阻恒流工作調(diào)理電路進行測量。為了克服鉑電阻的非線性特點,在信號調(diào)理電路中加入負(fù)反饋非線性矯正網(wǎng)絡(luò)。如圖2所示,鉑電阻選用標(biāo)稱值為100Ω的RT100作為溫度傳感器。A1,A2和A3采用低溫漂運放OP07,由于有電流流經(jīng)鉑電阻傳感器,所以當(dāng)溫度為0℃時,在鉑電阻傳感器上有壓降,這個電壓為鉑電阻傳感器的偏置電壓,是運放A1輸出電壓的一部分,使恒流工作調(diào)理電路的輸出實際不為0,所以需要對這個偏置電壓調(diào)零,圖中R3為調(diào)零電阻。圖中運放A3及電阻R1,R4和R6構(gòu)成負(fù)反饋非線性校正網(wǎng)絡(luò)。R5用于調(diào)整運放A2的增益。
2.2 溫度控制電路
系統(tǒng)加熱絲與風(fēng)扇均采用圖3所示電路形式。電路采用了晶體管驅(qū)動的直流電磁繼電器。當(dāng)單片機的P5.4為低電平時,繼電器RL1吸合,當(dāng)P5.4為高電平時,繼電器RL1釋放。采用這種控制邏輯可以使繼電器在上電復(fù)位或單片機受控復(fù)位時不吸合。繼電器由晶體管2N222A驅(qū)動,可以提供所需的驅(qū)動電流。
3 模糊控制規(guī)則表及軟件流程圖
3.1 建立模糊控制規(guī)則表
采用溫度誤差E和溫度誤差變化率Ec作為模糊控制器的輸入變量,溫度控制量U作為模糊控制器的輸出變量。系統(tǒng)中溫度誤差E、溫度誤差變化率Ec和溫度控制量U(單位:℃)的基本域分別為[-5,+5],[-2,+2]和[0,1]。輸入語言變量的語言值取7個,輸出控制量用于控制繼電器驅(qū)動電路。將占空比模糊控制量設(shè)定為0,1/4,1/2,3/4,1五個單點模糊量和1個控制風(fēng)扇吹風(fēng)的單點模糊量。輸出語言變量的語言值取6個。當(dāng)U=0時,單片機P3.5口置低電平,使風(fēng)扇控制電路工作;當(dāng)U=1時,加熱絲控制電路工作,且繼電器在1個周期內(nèi)全關(guān)斷;當(dāng)U=2時,加熱絲控制電路工作,且繼電器在1/4個周期內(nèi)接通,在3/4個周期內(nèi)關(guān)斷;當(dāng)U=5時,加熱絲控制電路工作,且繼電器在1個周期內(nèi)全接通。本控制系統(tǒng)選用三角函數(shù)、升半梯形函數(shù)與降半梯形函數(shù)作為輸入量語言值的隸屬函數(shù),用脈沖函數(shù)作為輸出量語言值的隸屬函數(shù)。模糊控制規(guī)則如表1所示。
由模糊規(guī)則進行推理可以得出模糊控制器語言規(guī)則的輸入輸出關(guān)系,其關(guān)系是一個非線性的關(guān)系曲面。當(dāng)偏差較大時,控制量的變化應(yīng)盡力使偏差迅速減小;當(dāng)偏差較小時,除了要消除偏差外,還要考慮系統(tǒng)的穩(wěn)定性,防止系統(tǒng)出現(xiàn)過沖,甚至引起系統(tǒng)振蕩。
3.2 軟件流程圖
主程序軟件流程如圖4所示。
溫度采集和顯示、鍵盤處理等在編程時作為相對獨立的功能模塊來實現(xiàn),并自主程序運行中按照設(shè)定的流程來調(diào)用,完成相應(yīng)的任務(wù)后再返回主程序即可。
4 仿真分析
在Proteus仿真軟件中加入編譯后的HEX文件,使用分析圖表分析系統(tǒng)分析加熱器控制信號與風(fēng)扇控制信號輸出端口的占空比。當(dāng)輸入電壓為2.7 V時,系統(tǒng)的輸出顯示實際溫度為54℃,系統(tǒng)的設(shè)定溫度為55℃,此時P5.4輸出占空比為2:1的加熱器控制信號;而當(dāng)系統(tǒng)的實際溫度大于設(shè)定溫度時,系統(tǒng)輸出適當(dāng)?shù)娘L(fēng)扇控制信號以恒定的功率散熱,說明滿足設(shè)計要求。
5 結(jié)語
本系統(tǒng)采用低功耗MSP430系列單片機作為控制核心,整個控制電路較簡單,用模糊控制算法設(shè)計程序,設(shè)定溫度值與測量溫度值實時顯示,控制精度可達±0.5℃,在實際生產(chǎn)和生活中具有廣泛的實用性。
四、3軸加速度計全功能計步器參考設(shè)計
簡介
計步器是一種頗受歡迎的日常鍛煉進度監(jiān)控器,可以激勵人們挑戰(zhàn)自己,增強體質(zhì),幫助瘦身。早期設(shè)計利用加重的機械開關(guān)檢測步伐,并帶有一個簡單的計數(shù)器。晃動這些裝置時,可以聽到有一個金屬球來回滑動,或者一個擺錘左右擺動敲擊擋塊。
如今,先進的計步器利用MEMS(微機電系統(tǒng))慣性傳感器和復(fù)雜的軟件來精確檢測真實的步伐。MEMS慣性傳感器可以更準(zhǔn)確地檢測步伐,誤檢率更低。MEMS慣性傳感器具有低成本、小尺寸和低功耗的特點,因此越來越多的便攜式消費電子設(shè)備開始集成計步器功能,如音樂播放器和手機等。ADI公司的3軸加速度計ADXL335, ADXL345和 ADXL346小巧纖薄,功耗極低,非常適合這種應(yīng)用。
本文以對步伐特征的研究為基礎(chǔ),描述一個采用3軸加速度計ADXL345的全功能計步器參考設(shè)計,它能辨別并計數(shù)步伐,測量距離、速度甚至所消耗的卡路里。
ADXL345專有的(正在申請專利)片內(nèi)32級先進先出(FIFO)緩沖器可以存儲數(shù)據(jù),并執(zhí)行計步器應(yīng)用的相關(guān)操作,從而最大程度地減少主處理器干預(yù),為便攜式設(shè)備節(jié)省寶貴的系統(tǒng)功率。其13位分辨率(4 mg/LSB)甚至允許計步器以合理的精度測量超低速步行(每步加速度變化約55 mg)。
了解模型
在可用于分析跑步或步行的特征當(dāng)中,我們選擇“加速度”作為相關(guān)參數(shù)。個體(及其相關(guān)軸)的運動包括三個分量,分別是前向(“滾動”)、豎向(“偏航”)和側(cè)向(“俯仰”),如圖1所示。ADXL345檢測其三個軸——x、y和z上的加速度。計步器處于未知方向,因此測量精度不應(yīng)嚴(yán)重依賴于運動軸與加速度計測量軸之間的關(guān)系。
圖1. 各軸的定義
讓我們考慮步行的特性。圖2描繪了一個步伐,我們將其定義為單位步行周期,圖中顯示了步行周期各階段與豎向和前向加速度變化之間的關(guān)系。
圖2. 步行階段與加速度模式
圖3顯示了與一名跑步者的豎向、前向和側(cè)向加速度相對應(yīng)的x、y和z軸測量結(jié)果的典型圖樣。無論如何穿戴計步器,總有至少一個軸具有相對較大的周期性加速度變化,因此峰值檢測和針對所有三個軸上的加速度的動態(tài)閾值決策算法對于檢測單位步行或跑步周期至關(guān)重要。
圖3. 從一名跑步者測得的x、y和z軸加速度的典型圖樣
算法
步伐參數(shù)
數(shù)字濾波器:首先,為使圖3所示的信號波形變得平滑,需要一個數(shù)字濾波器??梢允褂盟膫€寄存器和一個求和單元,如圖4所示。當(dāng)然,可以使用更多寄存器以使加速度數(shù)據(jù)更加平滑,但響應(yīng)時間會變慢。
圖4. 數(shù)字濾波器
圖5顯示了來自一名步行者所戴計步器的最活躍軸的濾波數(shù)據(jù)。對于跑步者,峰峰值會更高。
圖5. 最活躍軸的濾波數(shù)據(jù)
動態(tài)閾值和動態(tài)精度:系統(tǒng)持續(xù)更新3軸加速度的最大值和最小值,每采樣50次更新一次。平均值(Max + Min)/2稱為“動態(tài)閾值”。接下來的50次采樣利用此閾值判斷個體是否邁出步伐。由于此閾值每50次采樣更新一次,因此它是動態(tài)的。這種選擇具有自適應(yīng)性,并且足夠快。除動態(tài)閾值外,還利用動態(tài)精度來執(zhí)行進一步濾波,如圖6所示。
圖6. 動態(tài)閾值和動態(tài)精度
利用一個線性移位寄存器和動態(tài)閾值判斷個體是否有效地邁出一步。該線性移位寄存器含有2個寄存器:sample_new寄存器和sample_old寄存器。這些寄存器中的數(shù)據(jù)分別稱為sample_new和sample_old。當(dāng)新采樣數(shù)據(jù)到來時,sample_new無條件移入sample_old寄存器。然而,sample_result是否移入sample_new寄存器取決于下述條件:如果加速度變化大于預(yù)定義精度,則最新的采樣結(jié)果sample_result移入sample_new寄存器,否則sample_new寄存器保持不變。因此,移位寄存器組可以消除高頻噪聲,從而保證結(jié)果更加精確。
步伐邁出的條件定義為:當(dāng)加速度曲線跨過動態(tài)閾值下方時,加速度曲線的斜率為負(fù)值(sample_new 《 sample_old)。 。
峰值檢測:步伐計數(shù)器根據(jù)x、y、z三軸中加速度變化最大的一個軸計算步數(shù)。如果加速度變化太小,步伐計數(shù)器將忽略。
步伐計數(shù)器利用此算法可以很好地工作,但有時顯得太敏感。當(dāng)計步器因為步行或跑步之外的原因而非常迅速或非常緩慢地振動時,步伐計數(shù)器也會認(rèn)為它是步伐。為了找到真正的有節(jié)奏的步伐,必須排除這種無效振動。利用“時間窗口”和“計數(shù)規(guī)則”可以解決這個問題。
“時間窗口”用于排除無效振動。假設(shè)人們最快的跑步速度為每秒5步,最慢的步行速度為每2秒1步。這樣,兩個有效步伐的時間間隔在時間窗口[0.2 s - 2.0 s]之內(nèi),時間間隔超出該時間窗口的所有步伐都應(yīng)被排除。
ADXL345的用戶可選輸出數(shù)據(jù)速率特性有助于實現(xiàn)時間窗口。表1列出了TA = 25°C, VS = 2.5 V, and VDD I/O = 1.8 V時的可配置數(shù)據(jù)速率(以及功耗)。
表1. 數(shù)據(jù)速率和功耗
此算法使用50 Hz數(shù)據(jù)速率(20 ms)。采用interval的寄存器記錄兩步之間的數(shù)據(jù)更新次數(shù)。如果間隔值在10與100之間,則說明兩步之間的時間在有效窗口之內(nèi);否則,時間間隔在時間窗口之外,步伐無效。
“計數(shù)規(guī)則” 用于確定步伐是否是一個節(jié)奏模式的一部分。步伐計數(shù)器有兩個工作狀態(tài):搜索規(guī)則和確認(rèn)規(guī)則。步伐計數(shù)器以搜索規(guī)則模式開始工作。假設(shè)經(jīng)過四個連續(xù)有效步伐之后,發(fā)現(xiàn)存在某種規(guī)則(in regulation),那么步伐計數(shù)器就會刷新和顯示結(jié)果,并進入“確認(rèn)規(guī)則”工作模式。在這種模式下工作時,每經(jīng)過一個有效步伐,步伐計數(shù)器就會更新一次。但是,如果發(fā)現(xiàn)哪怕一個無效步伐,步伐計數(shù)器就會返回搜索規(guī)則模式,重新搜索四個連續(xù)有效步伐。
圖7顯示了步伐參數(shù)的算法流程圖。
圖7. 步伐參數(shù)算法流程圖
距離參數(shù)
根據(jù)上述算法計算步伐參數(shù)之后,我們可以使用公式1獲得距離參數(shù)。
距離 = 步數(shù) × 每步距離 (1)
每步距離取決于用戶的速度和身高。如果用戶身材較高或以較快速度跑步,步長就會較長。參考設(shè)計每2秒更新一次距離、速度和卡路里參數(shù)。因此,我們使用每2秒計數(shù)到的步數(shù)判斷當(dāng)前跨步長度。表2顯示了用于判斷當(dāng)前跨步長度的實驗數(shù)據(jù)。
表2. 跨步長度與速度(每2秒步數(shù))和身高的關(guān)系
2秒的時間間隔可以利用采樣數(shù)精確算出。以50 Hz數(shù)據(jù)速率為例,處理器可以每100次采樣發(fā)送一次相應(yīng)的指令。處理器利用一個名為m_nLastPedometer的變量記錄每個2秒間隔開始時的步數(shù),并利用一個名為m_nPedometerValue的變量記錄每個2秒間隔結(jié)束時的步數(shù)。這樣,每2秒步數(shù)等于m_nPedometerValue與m_nLastPedometer之差。
雖然數(shù)據(jù)速率為50 Hz,但ADXL345的片內(nèi)FIFO使得處理器無需每20 ms讀取一次數(shù)據(jù),極大地減輕了主處理器的負(fù)擔(dān)。該緩沖器支持四種工作模式:旁路、FIFO、流和觸發(fā)。在FIFO模式下,x、y、z軸的測量數(shù)據(jù)存儲在FIFO中。當(dāng)FIFO中的采樣數(shù)與FIFO_CTL寄存器采樣數(shù)位規(guī)定的數(shù)量相等時,水印中斷置1。如前所述,人們的跑步速度最快可達每秒5步,因此每0.2秒刷新一次結(jié)果即可保證實時顯示,從而處理器只需每0.2秒通過水印中斷喚醒一次并從ADXL345讀取數(shù)據(jù)。FIFO的其它功能也都非常有用。利用觸發(fā)模式,F(xiàn)IFO可以告訴我們中斷之前發(fā)生了什么。由于所述解決方案沒有使用FIFO的其它功能,因此筆者將不展開討論。
速度參數(shù)
速度 = 距離/時間,而每2秒步數(shù)和跨步長度均可根據(jù)上述算法計算,因此可以使用公式2獲得速度參數(shù)。
速度 = 每2秒步數(shù) × 跨步/2 s(2)
卡路里參數(shù)
我們無法精確計算卡路里的消耗速率。決定其消耗速率的一些因素包括體重、健身強度、運動水平和新陳代謝。不過,我們可以使用常規(guī)近似法進行估計。表3顯示了卡路里消耗與跑步速度的典型關(guān)系。
表3. 卡路里消耗與跑步速度的關(guān)系
由表3可以得到公式(3)。
卡路里(C/kg/h) = 1.25 × 跑步速度(km/h) (3)
以上所用的速度參數(shù)單位為m/s,將km/h轉(zhuǎn)換為m/s可得公式4。
卡路里(C/kg/h) = 1.25 × 速度(m/s) × 3600/1000 (4)
卡路里參數(shù)隨同距離和速度參數(shù)每2秒更新一次。為了考慮運動者的體重,我們可以將公式4轉(zhuǎn)換為公式5。體重(kg)為用戶輸入量,一個小時等于1800個2秒間隔。
卡路里(C/2 s) = 4.5 × 速度 × 體重/1800(5)
如果用戶在步行或跑步之后休息,則步數(shù)和距離將不變化,速度應(yīng)為0,此時的卡路里消耗可以利用公式6計算(休息時的卡路里消耗約為1 C/kg/h)。
卡路里(C/2 s) = 1 × 體重/1800 (6)
最后,我們可以將所有2秒間隔的卡路里相加,獲得總卡路里消耗量。
硬件連接
ADXL345易于連接到任何使用I2C?或SPI數(shù)字通信協(xié)議的處理器。圖8給出了演示設(shè)備的原理示意圖,它采用3V電池供電。ADXL345的/CS引腳連接到板上的VS,以選擇I2C模式。利用一個低成本精密模擬微控制器ADuC7024從ADXL345讀取數(shù)據(jù),執(zhí)行算法,并通過UART將結(jié)果發(fā)送至PC。SDA和SCL分別為I2C總線的數(shù)據(jù)和時鐘引腳,從ADXL345連接到ADuC7024的對應(yīng)引腳。ADXL345的兩個中斷引腳連接到ADuC7024的IRQ輸入,以產(chǎn)生各種中斷信號并喚醒處理器。
圖8. 硬件系統(tǒng)的原理示意圖
用戶界面
用戶界面顯示測試數(shù)據(jù),并對操作員的指令做出響應(yīng)。用戶界面(UI)運行之后,串行端口應(yīng)打開,通信鏈路應(yīng)啟動,隨后演示程序?qū)⒊掷m(xù)運行。圖9顯示了用戶佩戴計步器步行或跑步時的測試情況。用戶可以輸入其體重和身高數(shù)據(jù),距離、速度和卡路里參數(shù)將根據(jù)這些數(shù)據(jù)進行計算。
圖9. 用戶佩戴計步器步行或跑步時的測試情況
結(jié)論
ADXL345是一款出色的加速度計,非常適合計步器應(yīng)用。它具有小巧纖薄的特點,采用3 mm × 5 mm × 0.95 mm塑封封裝,利用它開發(fā)的計步器已經(jīng)出現(xiàn)在醫(yī)療儀器和高檔消費電子設(shè)備中。它在測量模式下的功耗僅40 μA,待機模式下為0.1 μA,堪稱電池供電產(chǎn)品的理想之選。嵌入式FIFO極大地減輕了主處理器的負(fù)荷,使功耗顯著降低。此外,可以利用可選的輸出數(shù)據(jù)速率進行定時,從而取代處理器中的定時器。13位分辨率可以檢測非常小的峰峰值變化,為開發(fā)高精度計步器創(chuàng)造了條件。最后,它具有三軸輸出功能,結(jié)合上述算法,用戶可以將計步器戴在身上幾乎任何部位。
幾點建議:如果應(yīng)用對成本極其敏感,或者模擬輸出加速度計更適合,建議使用ADXL335,它是一款完整的小尺寸、薄型、低功耗、三軸加速度計,提供經(jīng)過信號調(diào)理的電壓輸出。如果PCB尺寸至關(guān)重要,建議使用ADXL346,這款低功耗器件的內(nèi)置功能甚至比ADXL345還多,采用小巧纖薄的3 mm × 3 mm × 0.95 mm塑封封裝,電源電壓范圍為1.7 V至2.75 V。
評論