久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12182|回復: 1
收起左側

基于單片機的風速風向畢業設計論文

[復制鏈接]
ID:201968 發表于 2017-5-17 22:04 | 顯示全部樓層 |閱讀模式
本科生畢業設計
(申請學士學位)

論文題目風速風向數據采集實驗
裝置的設計

作者姓名 劉江

所學專業名稱  自動化

指導教師  呂承啟

   月  

學       生:                  (簽字)
學       號:
答 辯 日 期:      年   月   日
指 導 教 師:                  (簽字)

目錄
摘要
Abstract              2
1 緒論              3
     1.1 研究背景及意義              3
     1.2 研究內容              3
     1.3 國內外發展現狀              4
2 系統整體方案設計              5
     2.1 系統問題分析              5
     2.2 系統框架論證與比較              6
3 硬件設計              8
     3.1 電源的選擇與設計              8
     3.2 單片機選型與設計              8
            3.2.1 AT89S52單片機簡介              8
            3.2.2 AT89S52單片機引腳特性              9
     3.3 顯示模塊設計              11
     3.4 風速風向電路設計              12
            3.4.1 風速風向儀簡介
            3.4.2 風速儀工作原理
            3.4.3 風向儀工作原理
            3.4.4 光電編碼器原理圖              13
4 軟件設計              14
     4.1 風向檢測軟件設計              14
     4.2 風速檢測軟件設計              14
     4.3 主程序設計              15
5 系統測試與評價              17
     5.1 測試方法              17
     5.2 測試結果與分析              17
參考文獻              19
致 謝
附 錄

風速風向數據采集實驗裝置的設計

摘要:風速風向采集儀主要應用在一些動作單一,工作強度大或者環境比較嚴峻的場合,例如沙漠,軍區等。通過自動控制技術達到對儀器的類人工控制,使得對區間的測量更加有效和便捷。本文結合自動控制技術和光電探測技術,設計了一款自動風速風向采集儀。通過多個傳感器模塊將風速風向跟核心控制器聯接在一起,定義了自己的通信協議。我們可以通過風速傳感器對風速進行精確測量。也可以通過風向傳感器對風向進行精確檢測。然后由核心控制器對其進行顯示。同時考慮到工作現場的復雜性,為本系統設計了濾波部分,使得當有異常波動時,系統不會偏離正常狀態,而只有系統檢測到正常變化時,才允許顯示。
系統整體包括核心控制部分,風速檢測部分,風向檢測部分以及顯示部分。通過這幾大模塊的綜合作用,我們的系統可以應對大部分的場景以及突發狀況。本設計成本低廉,功耗較小同時功能豐富,具有相當的理論和實踐指導。系統采用keil編譯軟件進行代碼的編寫,使用protues進行軟件仿真,整體效果穩定。



1 緒論
1.1 研究背景及意義
隨著人工智能技術的不斷提高,傳統的探測技術已經無法滿足社會的需求。雖然我們的生活條件相比以前有了很大的改善。物質生活發生了翻天覆地的變化。人類對自己生存環境已經具有了相當的改造能力。但是我們仍然生存在一個不方面的地球上。我們的計算機技術已經有了很大的提高,但是在一些傳統行業中,仍然使用較為原始的探測技術。這些測量技術在過去的生產生活中占有很大的比重,應用范圍也十分廣泛。但是隨著我們對科學技術的不斷發展,對這些技術的依賴性已經開始呈現出一種降低趨勢。而如何將傳統測量理論結合現代科學技術,已經成為了當今的發展趨勢。
風作為一種大自然的饋贈,可以給人類提供豐富的生產動力。近年來隨著人們對環境友好型社會建設理念的不斷加強,我們已經將能源發展的目光從石油,煤炭等化石材料轉移向了風能,太陽能等這些純凈的能源。由于這些能源無污染,成本低的特點,人類已經研制出了一大批可以收集這些能源的設備。雖然這一趨勢是科學發展所必然的結果。但是目前來看,這些研究領域仍然處于初級階段。相比于傳統的燃煤,燃油技術,這些新興的技術仍然存在效率低的缺點。如何加強這些能源的轉化效率已經成了一些工程師們著重研究的領域。將傳統理論結合計算機等技術似乎成為了一塊不錯的敲門磚。  
雖然智能化技術在我們生活中已經普及開來,但是這些技術主要是一些弱智能技術,我們確實已經進入了弱智能時代,但是對智能技術的追求我們從沒放慢過自己的腳步,各國也將發展的重頭戲放在了相關產業鏈上,比如物聯網就是我們正在大力發展的技術。我國每年對相關IT人員尤其是嵌入式開發人員的需求也是年年供不應求。各國之間的角力將會發生在這些領域之中。因此,我們自動風速風向采集儀不管是在民用領域還是在軍事領域都具有相當的潛力以及未來,對我國人員安全以及科研都有十分重大的推動作用。
1.2 研究內容
我們結合社會需求與現有理論,在實際可行的基礎上進行了本次課題設計。在經過充分的研究與討論之后,我們完成了對本系統的電路設計。代碼編寫與實驗仿真。在整個項目期間,我們先對需要用到的各個模塊進行了充分調研與設計。在硬件電路方面,我們對轉壓模塊,驅動模塊,控制模塊,風速風向檢測模塊進行了設計與仿真,在protues仿真與理論切合的基礎上,我們進行了實際的電路制作。對于軟件部分,我們對單片機進行了深入的學習,包括用到的中斷系統,輪詢部分,A/D轉換與pwm部分進行了重點學習。經過系統的學習之后,我們對軟硬件進行了綜合。在確保原理正確的基礎上,我們不斷對軟硬件進行聯調。最終,我們的設計成功地實現了設計要求,并有了一定的相關擴展,可以在此基礎上進行二次研發。

1.3 國內外發展現狀
人工智能技術被視為未來科技領域,尤其是嵌入式行業的重點發展方向。隨著物聯網的興起,人工智能也逐漸被人們撥開了迷霧,人們開始越來越關注這一領域的發展。從“小米之家”的興起到智能家居的廣泛應用,我們已經開始進入了一個智能化的時代。說到科技領域的發展,走在前沿的國家主要有美國,日本,韓國以及中國。領導這一發展趨勢的公司主要是美國的蘋果,谷歌,日本的索尼,韓國的三星以及中國的華為,小米等科技公司。這些國家在智能化技術領域有著不可忽視的作用。
基于單片機的風速風向采集儀屬于人工智能技術領域的一種。一直被各國視為發展的重頭戲,各大公司也早早地進行了戰略布局。從20世紀90年代以來,日本的機器人技術便一直領先于世界,無論是從娛樂家用型機器人還是工業型機器人,日本都完成了重大的戰略布局,每年的機器人大會也主要在日本舉行。而美國韓國則在便攜式設備領域領先于世界,無論是蘋果公司還是三星,都在科技領域占有舉足輕重的地位。
我國在這一領域的發展起步也較早,早在2000年左右,我國便在物聯網方面有了自己的認識,國家也大力培養這一方面的人才,在各大高校開設了各類IT專業,但即使如此,也遠遠跟不上國內外對這一領域人才的需求,去年在嵌入式方面的人才空缺仍然在幾十萬以上,相關專業人員的薪水也遙遙領先于其他行業。近幾年國內比較熱門的互聯網之家,小米之家便是其中的典范。無論是從日常使用,還是工業級產業鏈,人工智能都將是未來必不可少的。而隨著我們科技高度發展的同時,各類相關產業也如雨后春筍幫設立起來,智能風速風向采集儀以其高度智能化以及便利性,成為了民用以及軍事領域必不可少的技術之一。


2 系統整體方案設計
2.1 系統問題分析
我們首先考慮本系統架構的問題。在研發初期,我們對別人的設計模型進行了實地研究,觀看了一些視頻,對該儀器的設計有了一些基本的理念。具體來說,我們開發本系統所具有的問題主要來源于三個方面:系統結構的設計,硬件電路焊接以及軟件代碼的編寫。針對這些問題,我們進行了任務分配與階段性安排。首先我們對系統的結構進行了剖析,認真討論完成本系統需要哪些方面的知識,其次,在對風速風向采集有了充分的了解與認識后,我們開始制作該儀器的硬件框架,最后,完成上兩步的設計之后,我們開始編寫代碼。總體來說,在我們對系統進行分割之后,系統的制作難度有了一定的降低,但還是有一些問題存在,比如說模塊之間的貼合,軟硬件的聯調問題,這在我們的文章中會有相應講述。
本系統開發的第一個問題是系統結構的設計。我們在拿到任務的時候,由于對風速風向采集的了解不深,也沒有過相關的制作經驗,所以在此進行了相當時間的糾結。最后,還是在班級里一位參加過競賽的同學的幫助下,解決了這個問題。我們在經過認真剖析之后,將本系統劃分為了三個層次,自頂向下進行安排。首先是控制層,這里涉及到人機的交互問題,主要是控制人員與系統之間指令的傳輸與數據的回饋問題。由于系統在遇到突發狀況時,需要等待控制人員的控制指令,同時也會傳遞數據給控制人員進行分析,所以這一部分的設計至關重要,設計到我們系統將來的穩定性。其次,信息采集層。系統在運行過程中,需要采集一些數據進行風速風向的顯示。系統這一層次的設計關系到風速儀各種功能的完成,對提高本設計性能有很大幫助。最后一個層次為顯示層。系統在完成各方面的工作后,需要對風速風向進行顯示,所以本部分主要負責信息的傳達。系統層次劃分如下:

        表2.1 系統層次劃分

系統層次

在體系中的劃分

功能剖析

控制層

頂層

提高系統穩定性

信息采集層

中層

完善系統功能

顯示層

底層

顯示信息


如上表所示,我們的系統劃分成頂層,中層以及底層等三個層次,各層次也有其相應的功能劃分。
在完成系統層次劃分之后,我們需要考慮的第二個問題是硬件電路的設計。具體的設計方案在后續章節介紹,在這里我們重點講解開發過程中所遇到的問題。在硬件制作上,由于以前沒有進行過系統的練習,所以對電路焊接方面缺乏完善的技能。在本系統中,在電路制作上的困難主要體現在轉壓模塊,風速風向轉換模塊,電源驅動模塊,控制模塊等。由于核心控制電路我們選擇已經集成好的單片機,所以只需設計外圍電路即可,最后進行各個模塊的集成聯調。其中,轉壓模塊所遇到的問題在于復雜的電壓要求,單片機需要5V供電,驅動模塊需要12V供電。所以選擇一款合適的轉壓芯片勢在必行。電源驅動的問題主要在于選型。至于控制器件則相對簡單,有現成的模塊供我們使用。在完成了綜合設計之后,我們對硬件的需求進行了綜合分析,列出了我們所需的硬件模塊。所需器件如下表所示:

      表2.2 器件選型

器件

價格(元)

功能

單片機一塊

80

核心控制

LCD1602

10

顯示

5號電池4節

20

供電

風速檢測模塊

700

檢測風速

風向檢測模塊

600

檢測風向

如上表所示為我們選擇的器件類型,各個器件在淘寶均有銷售。最后一部分是我們的軟件功能分析。一個穩定的系統離不開完善的代碼輔助。在本系統中,由于將系統架構分為了控制層,信息采集層以及顯示層,所以代碼也相應的分為自動控制層代碼,信息采集層代碼以及顯示層代碼。其中比較復雜的是信息采集層軟件的設計。控制模塊所需的軟件主要是分析風速風向模塊采集的數據以及控制顯示屏的顯示,我們在參考相關例程之后已經有了深入的了解。信息采集層我們主要是對風速風向進行定時采集,得出當前場景的風速風向的信息。而顯示層則需要我們對各種數據進行顯示。在后續章節中,我們會重點進行講解

2.2 系統框架論證與比較
在設計前期,我們對可實現的方案進行了論證,基于風速風向采集儀的功能以及穩定性,我們進行了以下兩方面的設想。
方案一,采用相關數字電路來完成本次設計。通過設計相關編碼電路來完成系統的控制,通過核心控制電路和周邊電路的綜合作用,可以實現系統的設計。該方案實行難度大,效率低,周期長,成本較高。
方案二,采用基于單片機的核心控制,自主設計外圍電路,包括風速風向采集電路,顯示電路,轉壓電路等周邊模塊。通過對單片機進行編程,控制這些外圍模塊一起工作。在此方案中,我們所需要的只是用軟件將這些傳感器建進行通信,不管是在實現難度上還是在成本上都有很大程度的降低,并且對我們的編程能力也有很大的提高。
通過上述論證,我們采用了方案二來完成本次畢業設計,整體思路是采用單片機作為我們的控制核心,通過對單片機的編程,將周邊傳感器采集的數據進行分析與計算,并在自動控制模塊的基礎上,完成系統穩定可靠的運行。
系統整體框圖如下圖2.1所示:



圖2.1 系統框圖
由上述系統框圖,我們分為了三大模塊進行分工合作,在今后的敘述中,我們將對這幾個模塊進行分別敘述。

3 硬件設計
3.1 電源的選擇與設計
電源是系統穩定工作的前提,由于任何非電量的控制都要轉換為電量進行測量與控制,所以我們首先對電源進行設計。在本系統中,需要兩種不同的電壓,主要分為單片機供電電壓(5V)與風速風向模塊電壓(12V),主要有以下兩種方案:
方案一,采用兩種電源供電。單片機及外圍電路采用5V供電,外部模塊采用12V供電,將兩種電壓完全隔離開,獨立工作。此種方法的好處是設計簡單,但是需要增加道閘負載。
方案二,采用單一電源供電。首先使用12V電壓對外部模塊供電,再有12V電壓源引入轉壓芯片進行5V轉壓,給單片機及外圍電路供電。此種方法設計較為復雜,但是可以減少系統的負載。
考慮到本次設計的主要目的為提高能力,增強自己的電路制作能力,也考慮到系統的靈敏性,我們選擇了第二種方案,對系統進行單一供電。并且由于本次設計可能會進行反復地測試,我們決定采購可充電電池。
如下為電壓轉化模塊:

1.010.jpg

圖3.1 轉壓模塊

在上圖中,我們對12V和5V電壓進行了轉化,使得可以對風速風向模塊和單片機分別供電。
3.2 單片機選型與設計
3.2.1 AT89S52單片機簡介
52單片機是51系列單片機的一種。該款單片機芯片具有較低的工作電壓,而性能通常比較高,單片機內部包含8k bytes的可以重復使用的Flash(即只讀存儲器)以及256 比特的隨機存儲器(RAM)。該MCU基于先進的存儲技術和強大的計算能力。對上一代單片機進行了升級。但對傳統的51單片機的指令也能夠兼容。該芯片內置了通用的8位cpu以及Flash存儲單元,因此該單片機的強大的運算能力和控制能力可以應用在廣泛的場合中。
該單片機有40個引腳。32個外部雙向輸入/輸出(I/O)端口。同時內含2個外中斷口。3個16位的可以通過程序編程的定時器。兩個全雙工的串行口。2個讀寫引腳。可以通過常規編程方法進行控制。但不可以在線編程。該單片機通過將常用的MCU和Flash結合在了一起,尤其通過使用可重復擦寫的Flash存儲器,不僅在功耗上還是在效率上都具有相當的實用性。
該單片機的基本組成框圖見圖3.2.1。

            1.011.jpg

圖3.2.1 單片機組成框圖
3.2.2 AT89S52單片機引腳特性
AT89S52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產品的需求。主要功能特性:
兼容MCS51指令系統
· 8k可反復擦寫(>1000次)Flash ROM
· 32個雙向I/O口
· 256x8bit內部RAM
· 3個16位可以通過編程設置的定時器。
· 時鐘頻率0-24MHz
· 2個串行中斷
· 可編程UART串行通道
· 2個外部中斷源
· 共6個中斷源
· 2個讀寫中斷口線
· 3級加密位
· 低功耗空閑和掉電模式
· 軟件設置睡眠和喚醒功能

                            1.012.jpg

                                        圖3.2.2 單片機引腳圖
部分引腳說明:
(1)時鐘電路引腳XTAL1 和XTAL2:
XTAL2(18 腳):可以外接晶體振蕩器。可以構成內部系統的振蕩電路,振蕩器的振蕩頻率等于系統的固有頻率。當需要外部時鐘提供信號時,可以從該端口輸入所需信號。在驗證該部分是否處于正常狀態時,可將示波器的輸入引腳連接該端口,在示波器上觀察系統的輸出信號。
XTAL1(19 腳):同上述18腳連接方式相同。系統的內部時鐘振蕩器。如果使用內部時鐘時,將該腳接地。若要使用外部時鐘,則將時鐘信號加到該引腳即可。
(2)控制信號引腳RST,ALE,PSEN 和EA:
復位引腳:復位信號輸入端,高電平有效。該引腳為備用電源引腳,可以由外部電源進行供電。在該引腳上輸入兩個時鐘周期的高電平,便完成了對MCU的復位。同時RST 端口具有另外一種功能,即當接入RST接口時,可以作為RAM 備用電源,以使系統在突然掉電時,在寄存器內的數據不會丟失,在系統復位之后仍可以繼續運行。
ALE/PROG:地址鎖存允許信號端。51單片機在正常上電之后,該引腳對外輸出高電平,頻率是振蕩電驢振蕩頻率的1/6。MCU讀取外部存儲器。作為低8 位地址的鎖存信號。該引腳會輸出相應的信號。
單片在在不訪問外部ROM時,該引腳則以內部振蕩器1/6 的頻率固定輸出高電平信號,所以該引腳的輸出信號可以用來給外部電路提供工作時鐘。在驗證單片機的性能時,可以示波器的輸入端外界ALE引腳,觀察示波器是否顯示對應信號。當輸出正常的信號時。芯片正常。
ALE 端的驅動能力較強,可以帶動多個負載。
同時這個引腳可以作為單片機的地址輸入端口。進行地址選擇時,可以在此端口進行。
PSEN:輸出使能信號。完成對相應功能的使能。該引腳外界存儲器的使能端口,后續會有相應原理圖展示。PSEN 端有效,即允許讀出EPROM/ROM 中的指令碼。PSEN 端同樣可驅動8 個LS 型TTL 負載。
EA/Vpp(31 腳):該引腳是單片機的程序輸入使能引腳。該引腳外接高電平時,MCU只在內部存儲其中進行尋址,即只能執行內部命令。在地址選擇器的值大于內部存儲器時。單片機會自動去外部存儲器中讀取指令。即0x0FFF是內外存儲器的區分點。當給該引腳接地時,MCU將脂肪紋外部程序存儲器的內容,而忽略內部存儲器的內容。對于無片內ROM 的8031 或8032,需外擴EPROM,此時必須將EA 引腳接地。
(3)輸入/輸出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32 腳):P0口是一個漏極開路的8 位準雙向I/O口。該引腳的構成方式為漏極開路模式,一共可以對8個負載進行驅動。當P0用作輸入引腳時,必須先向口鎖存器(地址80H)寫入0XFFFF,導致P0口引腳成為懸浮狀態,成為了高阻態。該引腳作為輸入端使用時,需要配置相應的寄存器。即先由該引腳進行寫出,再進行讀入。即具有雙向的特性。
P1口(P1.0~P1.7,1~8 腳):P1口是一個帶內部上拉電阻的8 位準雙向I/O口。P1口每位能驅動4 個LS 型TTL 負載。當將P1端作為輸入端使用時,同樣應該向控制端寫入控制信號,不同于P0,此時P1端自動進入上拉狀態,顯示高電平。
P2口(P2.0~P2.7,21~28 腳):P2口是一個帶內部上拉電阻的8 位準雙向I/O口。該引腳可以同時驅動四個負載。在訪問片外寄存器時,它輸出高地址。
P3口(P3.0~P3.7,10~17 腳):P3口是一個帶內部上拉電阻的8 位準雙向I/O口。如下:
P3.0:(RXD)串行數據接收。
P3.1:(RXD)串行數據發送。
P3.2:(INT0#)外部中斷0輸入。
P3.3:(INT1#)外部中斷1輸入。
P3.4:(T0)定時/計數器0的外部計數輸入。
P3.5:(T1)定時/計數器1的外部計數輸入。
P3.6:(WR#)對外部的數據存儲器進行使能。
P3.7:(RD#)選擇片外存儲器。
3.3 顯示模塊設計
系統采用1602作為顯示器件,可以較為清晰地顯示我們需要的字符與數字,相比其他顯示器件,具有功耗低,成本低的特點。液晶的命令操作腳是RS、RW、EN接在單片機的P1^1、P1^2、P1^3腳。顯示屏的數據輸入端應該分別接單片機的的P0口。在顯示特定字符時,單片機通過這些引腳對顯示內容進行控制。具體電路圖如圖下所示:
1.013.jpg
圖3.3 顯示模塊原理圖
3.4 風速風向電路設計
3.4.1 風速風向儀簡介
風速儀用來檢測風的速度,而風向儀可以測量風的方向。兩者結合起來使用可以確定環境中風的特性。在對風的常規測量中,經常將這兩者結合起來使用,以達到對環境中風的檢測。在風速儀模塊電路中,因為需要檢測風的速度,所以通常包括一個風杯(三杯),該風杯在受到環境中風的作用時發生旋轉,帶動下級檢測電路運動,下級檢測電路根據風杯的運動即可檢測到風的速度。為了在任何角度都能檢測到風,所以經常采用三個風杯來組成檢測模塊。而風向儀用來測量環境中風的方向,所以在檢測電路中包括一個由風向標組成的指示模塊。風向儀在受到風的作用后受力旋轉,但不同于風速計的不斷旋轉,風向儀會達到一個平衡狀態,在平衡狀態時,風向標指示的即為風當前的方向。
風速風向儀在檢測到當前環境中的風速和風向后,將采集的數據傳遞給單片機,單片機對這些數據進行濾波處理,通常為求均值后,將這些信息顯示在顯示屏上,用戶即可得到當前環境中風的特性。通常將風向以讀數表示,而風速以等級或者m/s的形式展示。用戶在得到這些信息后,便可以據此安排自己的生產生活,提高自己的作業水平。
3.4.2 風速儀工作原理
本系統采用的風速儀是基于光電編碼器的原理工作的。光電編碼器的傳動軸與風杯連接在一起,在風的吹動下,編碼器傳動軸跟隨轉動,由此不停地產生出脈沖信號。外部電路檢測到脈沖信號后,根據脈沖信號產生的頻率,即可計算出風的速度。
在工作時,我們將光電編碼器即風速儀的輸出引腳連接至單片機的中斷引腳處,配置單片機為上升沿觸發中斷。則由于風的轉動,風速儀的引腳會源源不斷地產生脈沖信號。這些脈沖信號傳遞給單片機后,單片機進入中斷。由于風的速度不同,導致編碼器脈沖信號的頻率也不盡相同,所以單片機內部根據這些信號的頻率,即可得到風速儀的轉速。按照動量守恒原理,風的速度便可以得到。
3.4.3 風向儀工作原理
風速儀在工作工程中,三個風杯在風的作用下不斷旋轉,由此得到風的速度。而風向儀的工作原理與此不同。由于我們需要采集環境中風的方向,當環境中風的方向比較穩定時,風向儀的風標不會有大幅度的波動。
風向儀的核心元器件同樣采用光電編碼器。但是與風速儀不同的是,風速儀根據光電編碼器脈沖產生的頻率工作,而風向儀根據編碼器轉動方向的不同而工作。由于編碼器在進行正轉或者反轉時,產生脈沖信號的電平不同。在正轉時,編碼器輸出高電平,而反轉時,輸出低電平。由此根據編碼器輸出電平的正負,我們便可以得知風向標正轉或者反轉過的角度,經過初始定位,便得到了風的方向。
3.4.4 光電編碼器原理圖
光電編碼器原理圖如下所示:

                     1.014.jpg

                             圖3.4.4 光電編碼器原理圖

如上圖所示為系統采用的光電編碼器原理圖。傳感器通過外部轉子的帶動,產生不同頻率,不同電平的脈沖。單片機根據脈沖頻率得到轉速,根據電平高低得到轉角。便可以精確地測量風的轉速和轉向。


4 軟件設計
4.1 風向檢測軟件設計
在進行風向檢測時,我們設計系統中斷來對風向進行檢測。將風向儀的A相引腳接至單片機的INT0中斷引腳,而將B相接至普通輸入引腳。配置INT0為下降沿中斷,即外部引腳產生下降沿時觸發中斷,程序進入中斷服務函數進行處理。風向儀在正常工作時,A相產生中斷,系統進入中斷程序后判斷B引腳的電平。若該引腳電平為低,則表示風向標反轉,將其計數減一。而如果該引腳為高電平,則代表風向標正轉,計數值加一。
光電編碼器具有自己的轉值,即旋轉一周產生的脈沖個數。本系統采用的風向儀的轉數為500.即風向標每轉過一圈,產生五百個脈沖。所以風向標的角度為N/500*360度。在程序中設計計數值N的絕對值小于500,當大于500時,減去500。而當小于-500時,加上500即可。
該部分的軟件流程圖如下: 1.016.jpg


                              圖4.1 風向檢測流程圖

4.2 風速檢測軟件設計
在進行風速的測量時,我們需要采集風速儀在一定時間內產生脈沖的個數。設計定時器T0作為定時器,定時時間為1s,即檢測在1s內產生脈沖的個數,我們即可得到風速儀的轉速。設計N1為脈沖計數個數,連接至中斷引腳INT1。風速儀在進行工作時,不斷有脈沖產生。當產生脈沖時,我們在中斷程序中對計數值N進行加1操作。每當1s的定時到達時,對脈沖計數個數進行計算。由此我們得到了以脈沖個數表達的轉速。即v=N1。每秒轉過的度數為:N1/500*360。乘以風速儀的半徑,即為風的速度。
風速檢測部分流程圖如下:





圖4.2 風速檢測流程圖
由上圖所示,我們剛開始先初始化定時器T0,以及中斷引腳INT1。
初始化計數值N1為0.每當有脈沖產生時,計數值加1。
定時器的定時周期為1s。每當1s定時到達時,計算當前風速,并用顯示屏進行顯示。
4.3 主程序設計
系統的軟件主要包括風速檢測,風向檢測,與數值顯示。在上文中,我們討論了風速和風向的檢測部分的軟件流程。
顯示部分僅僅是對各個數值進行顯示,比較簡單,故在此不再贅述。
系統在工作時,處于等待狀態,等待風向儀的中斷或者風速儀的中斷的脈沖到來,系統轉去執行相應的處理函數。
在完成對各部分的處理之后,驅動顯示屏顯示對應的風速和風向。
整體流程采用順序流程,原理也比較簡單。整體流程圖如下所示:






1.020.jpg








1.021.jpg







         圖4.3 整體流程圖
如上所示系統的整體流程圖,在程序中,主程序一直等待外部脈沖的到來。在有脈沖產生后,系統判斷脈沖的來源,并轉而去執行各自的處理程序。在完成處理后,驅動顯示屏進行顯示。

5 系統測試與評價
5.1 測試方法
所需儀器:測試儀器主要包括數字萬用表,秒表,量角器,示波器,USB轉TTL設備。
所需軟件:keil編譯軟件,串口調試軟件,protues仿真軟件。
調試前準備工作:
數字萬用表測量電壓源(5V和12V)輸出電壓是否為標準電壓,測量標準電阻是否標稱(本文用到的電阻為1k,5k,10k和100k)。示波器檢查風速儀和風向儀輸出波形是否準確。用量角器檢測風向儀的精準度是否足夠。
測試步驟:
給各模塊上電,用數字萬用表檢查各個模塊是否處于正常工作電壓。其中單片機,顯示屏模塊等標準電壓應處于4~6V,檢查電壓源電壓,防止發生泄露,電壓源電壓位于12V左右,誤差不超過1V。
各模塊檢查無誤,對各模塊組裝供電。用萬用表檢查各模塊電壓是否標準,LED指示是否正確。
打開單片機開關,讓系統處于等待狀態。首先對風速儀進行檢測。
打開電源開關,模擬外界環境產生風源,檢測風速儀的輸出,測量10次,每次測試1分鐘。
進而對風向儀進行檢測。
讓風從不同角度吹動風向標,觀察顯示屏顯示的角度是否精確。測量5次,每次30s。
5.2 測試結果與分析
表5-1 風速儀檢測狀況(10次)

次數

理論(m/s)

實際(m/s)

1

5

4.5

2

10

9

3

15

14

4

20

19

5

15

15

6

13

13

7

12

12

8

10

10

9

5

4.7

   10

3

3


         表5-2 風向儀檢測


理論

實際

第一次

10

11

第二次

50

49

第三次

100

103

第四次

150

145

第五次

200

202



誤差分析:我們進行了兩類的系統測試:驗證系統風速儀狀態的正確性和風向儀檢測精準度。在速度檢測準確性方面,我們可以達到百分之九十以上的準確性,這是由兩方面因素決定的:代碼健壯性以及編碼器模塊的穩定性。由于我們在代碼中只是測試指令的數值,并沒有進行大量的運算,所以其精準度會很高。
在風向檢測方面,其誤差出現的原因主要包括:編碼器精度不夠,風向波動較大,以及單片機定時器的誤差。即使存在這些影響因素,我們的精準度也達到了百分之九十以上,已經足夠面對日常使用了。


參考文獻
[1] 何立民. 單片機應用系統設計. 北京:航天航空大學出版社,2002.22-33
[2] 李廣弟. 單片機基礎.北京:北京航空航天大學出版社,2001.1-3
[3] 何希才. 新型實用電子電路400例. 電子工業出版社,2000.7-9
[4] 趙負圖. 傳感器集成電路手冊. 第一版,化學工業出版社,2004.12-14
[5] 陳伯時. 電力拖動自動控制系統. 第二版,北京:機械工業出版社,2000.15-19
[6] 張毅剛,彭喜元. 新編 MCS-51 單片機應用設計. 第一版,哈爾濱工業大學出版社,2003.1-9
[7] 邵貝貝. 單片機嵌入式應用的在線開發方法, 清華大學出版社,2004.12-19
[8] 楊寧,胡學軍. 單片機與控制技術,北京航空航天大學出版社,2005.44-46
[9] 趙亮,侯國銳.單片機C語言編程與實例,人民郵電出版社,2003.43-48
[10] 黃開勝,金華民,蔣狄南. 韓國智能模型車技術方案分析,2006.33-39
[11] 胡漢才. 單片機原理及系統設計.北京:清華大學出版社,2003.13-15
[12] 李朝青. 單片機原理及接口技術.北京:北京航空航天大學出版社,2003.22-25
[13]《8051 單片機課程設計實訓教材》陳明熒編著,北京:清華大學大學社,2005.16-18
[14]《單片機實訓教程》張迎軍,貢雪梅,北京:北京大學出版社,2005.34-35
[15]《單片機應用實訓教程》袁啟昌,王宏宇,北京:科學出版社,2006 .46-49
[16] 胡漢才. 單片機原理及系統設計.北京:清華大學出版社,2003.55-56
[17] 李朝青. 單片機原理及接口技術.北京:北京航空航天大學出版社,2003.65-66
[18]黃家升. 基于IAP的單片機軟件遠程升級[J]. 艦船電子對抗, 2007,(03) 41-44 .
[19]楊美仙. 單片機的發展及其應用[J]. 科技信息(學術研究), 2007,(35) 26-28.
[20]陳壽元. 單片機多機通信網絡改進及數據通信容錯技術[J]. 山東師范大學學報(自然科學版), 2006,(02) . 23-28
[21]栗欣,周東輝,孫曉苗,李立. 單片機程序遠程升級的設計[J]. 微計算機信息, 2006,(32) 33-35.
             致 謝
在我完成本科畢業設計的幾個月時間里,我的指導老師呂承啟在學習上給予了悉心的指導和極大的幫助,在生活上給予了無微不至的關懷與照顧。呂承啟老師深厚的理論功底、嚴謹的治學態度、科學的思維方式,務實的工作作風令我收益非淺。值此論文完成之際,向呂承啟老師致以最崇高的敬意和衷心的感謝。此外,同時還要感謝同實驗室和同班的各位同學給我的無私的幫助,是他們使我在本科階段的學習和生活充滿樂趣,受益良多,在這里向他們表示由衷的感謝。最后要特別感謝我的父母,在我多年的求學生涯中,不斷的支持和鼓勵我,承受了各種的壓力,付出了最真摯的愛。謹以此文獻給所有關心我的老師、同學、朋友。
最后,向評閱本文的專家、教授致敬!


附錄


單片機源程序如下:
  1. #include<reg52.h>
  2. #define  uchar  unsigned  char
  3. #define  uint   unsigned  int    //宏定義
  4. sbit lcdrs=              P1^0;
  5. sbit lcden=P1^1;            
  6. #define Da P2     //液晶1602數據口
  7. uint temp;    //保存檢測到的電平數據以便比較      
  8. uint count;   //用于計數
  9. uint aa,bb;                //用于計數
  10. uint speed;   //用來計算轉速
  11. void delay(uchar z);
  12. void time_init();                                          //定時器的初始化
  13. void write_com(uchar com);              //液晶寫指令
  14. void write_data(uchar date); //液晶寫數據
  15. void lcd_init();                                          //液晶初始化
  16. void display(uint rate);              //顯赫速度
  17. void int0_init();                                          //定時器0初始化
  18. void main()
  19. {
  20.   time_init();                                          //定時器的初始化
  21.   lcd_init();                                          //液晶初始化
  22.   int0_init();                                          //外部中斷初始化
  23.    while(1)
  24.    {
  25.   }
  26. }
  27. void time_init()
  28. {
  29.   TMOD=0x11;              //兩個定時器都設定為工作方式1   十六位定時計數器
  30.   EA=1;                            //開啟總中斷

  31.   TH0=(65536-50000)/256;
  32.   TL0=(65536-50000)%256;   //定時初值
  33.   ET0=1;
  34.   TR0=1;       //開中斷

  35. }
  36. void int0_init()   //加個防偽
  37. {
  38.    EX0=1;  //外部中斷源可以申請中斷
  39.    IT0=1;  //外部中斷源下降沿觸發
  40. }
  41. void  timer0()   interrupt 1 using 0
  42. {
  43.   TH0=(65536-50000)/256;
  44.   TL0=(65536-50000)%256;              //裝載初值  50ms
  45. aa++;
  46.   if(aa==20)                                               //1s 時間內統計脈沖個數
  47.    {
  48.       aa=0;
  49.                 temp=count*10/16;                  //計算風速,每米轉多少圈,每圈設定多少個脈沖進行計算
  50.                          //(若設定風速為1m/s時,葉片每秒轉2圈,每圈給傳感器8個脈沖,屏幕顯示的值為count/16)
  51.                 count=0;                                                                         //重新開始計數脈沖數
  52.                 display(temp);                                          //把計算得的結果顯示出來
  53.    }
  54.   }
  55. /*******外部中斷*******************/
  56. void  service_int0()                interrupt                 0
  57. {
  58.                 count++;                 //來一個下降沿沿就計一個脈沖數
  59. }
  60. /*******顯示函數***********/
  61. void display(uint rate)
  62. {
  63.    uchar wan,qian, bai,shi,ge;
  64.    wan=rate/10000;   //萬轉
  65.    qian=rate/1000%10; //
  66.    bai=rate/100%10;
  67.    shi=rate/10%10;
  68.    ge=rate%10;
  69.    write_com(0x80);
  70.    write_data('0'+wan);
  71.    write_data('0'+qian);
  72.    write_data('0'+bai);
  73.    write_data('0'+shi);
  74.    write_data('.');
  75.    write_data('0'+ge);
  76.    write_data('m');  //單位
  77.    write_data('/');
  78.    write_data('s');
  79. }
  80. /******延時函數********/
  81. void delay(uint z)
  82. {
  83.    uint x,y;
  84.    for(x=z;x>0;x--)
  85.       for(y=110;y>0;y--) ;
  86. }
  87. /************寫指令************/
  88. void write_com(uchar com)
  89. {
  90.               lcdrs=0;
  91.               Da=com;
  92.               delay(1);
  93.               lcden=1;
  94.               delay(1);
  95.               lcden=0;
  96. }
  97. /************寫數據**********/
  98. void write_data(uchar date)
  99. {
  100.               lcdrs=1;
  101. ……………………

  102. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

完整論文下載(word格式 可編輯):
03-(設計論文-自動化-2013211320-劉江)風速風向數據采集實驗裝置的設計(呂承啟老師).doc (510.92 KB, 下載次數: 124)

評分

參與人數 1黑幣 +5 收起 理由
拾浪. + 5 很給力!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕在线播放 | 成人小视频在线免费观看 | 国产精品久久久久久吹潮 | 免费黄色大片 | www.色综合 | 天天拍天天草 | 成人国产在线视频 | 九色视频网站 | 国产高清av免费观看 | 亚洲精品一区二区三区在线观看 | 欧美一区二区三区精品免费 | 日韩精品视频一区二区三区 | 中文字幕电影在线观看 | 成人精品一区二区三区四区 | 欧美性生交大片免费 | 免费播放一级片 | 自拍偷拍亚洲视频 | 午夜二区 | 99精品一区二区三区 | 亚洲精品国产电影 | 国产精品久久久久久久久久 | 一区二区三区回区在观看免费视频 | 在线观看日韩 | 国产日韩欧美在线观看 | 成人精品在线观看 | av电影手机在线看 | 国产精品www | 国产精彩视频 | 超碰日本 | 瑞克和莫蒂第五季在线观看 | 在线欧美一区 | 欧美午夜激情在线 | 精品久久九 | 欧美在线一区二区三区 | 日本不卡一区 | 亚洲综合一区二区三区 | 午夜资源| 免费特级黄毛片 | 一区二区三区欧美在线观看 | 97国产超碰 | 四虎影院在线播放 |