摘 要
生活中,我們經常會使用到電風扇。比如,在炎熱的夏天人們用電風扇來降溫;在工業生產中,大型機械用電風扇來散熱等。但是當環境溫度變化的時候,人工很難做到及時控制風扇的轉速,也很難有效利用寶貴的電資源。隨著溫度控制的技術不斷發展,溫控技術已經完全滿足現代的日常生活和生產的要求,應運而生的溫控電風扇也逐漸走進了人們的生活中。溫控電風扇可以根據環境溫度自動調節電風扇啟停與轉速,在實際生活的使用中,溫控電風扇不僅可節省寶貴的電資源,也大大方便了人們的生活和生產。
溫控風扇是利用溫度的變化控制風扇啟停及轉速的智能系統,在現代社會中的生產以及人們的日常生活中都有廣泛的應用,如工業生產大型機械散熱系統中的風扇、現在筆記本電腦上的廣泛應用的智能CPU風扇等。本文設計了基于單片機的溫控風扇系統,用單片機為控制器,利用溫度傳感器DS18B20作為溫度采集元件,并根據采集到的溫度,通過一個達林頓反向驅動器ULN2803驅動風扇電機。根據檢測到的溫度與系統設定的溫度比較實現風扇電機的自動啟動和停止,并能根據溫度的變化自動改變風扇電機的轉速,同時用LED八段數碼管顯示檢測到的溫度與設定的溫度。系統的預設溫度的設置是通過兩個獨立按鍵來實現的,一個增大預設溫度,一個減小預設溫度。
目錄
第一章 前 言
第二章 整體方案設計
2.1 系統整體的設計
2.2方案論證
2.2.1 溫度傳感器的選擇
2.2.2 控制核心的選擇
2.2.3 溫度顯示器件的選擇
2.2.4 調速方式的選擇
第三章 各單元模塊的硬件設計
3.1 系統器件簡介
3.1.1 DS18B20單線數字溫度傳感器簡介
3.1.2 達林頓反向驅動器ULN2803簡介
3.1.3 AT89C52單片機簡介
3.1.4 LED數碼管簡介
3.2電路設計
3.2.1 開關復位與晶振電路
3.2.2 獨立按鍵連接電路
3.2.3 數碼管顯示電路
3.2.4 溫度采集電路
3.2.5 風扇電機驅動與調速電路
3.2.6 電路總圖
第四章 軟件設計
4.1 程序設置
4.1.1 主要程序代碼
4.2 用Keil C51 編寫程序
4.3 用Proteus進行仿真
4.3.1 Proteus簡介
4.3.2 本設計基于Proteus的仿真
第五章 系統調試
5.1 軟件調試
5.1.1 按鍵顯示部分的調試
5.1.2 傳感器DS18B20溫度采集部分調試
5.1.3 電動機調速電路部分調試
5.2 硬件調試
5.2.1 按鍵顯示部分的調試
5.2.2 傳感器DS18B20溫度采集部分調試
5.2.3 電動機調速電路部分調試
5.3 系統功能
5.3.1 系統實現的功能
5.3.2 系統功能分析
第六章 結束語9
參考文獻
第一章 前 言
在現代的生活和生產中,電風扇被廣泛的使用,發揮著舉足輕重的作用,如夏天人們使用的散熱風扇、工業生產中大型機械中的散熱風扇以及現在筆記本電腦上廣泛使用的智能CPU風扇等。而隨著溫度控制技術的發展,為了降低風扇運轉時的噪音以及節省能源等,溫度控制風扇越來越受到重視并被廣泛的應用。在先階段,溫控風扇的設計已經有了一定的成效,可以使風扇根據環境溫度的變化進行自動無極調速,當環境溫度升高到到一定時能自動啟動風扇,并隨著環境溫度的升高自動加快風扇的轉速,當環境溫度降到一定時能自動停止風扇的轉動,實現智能控制。
本文設計了由ATMEL公司的8052系列單片機AT89C52作為控制器,采用DALLAS公司的溫度傳感器DS18B20作為溫度采集元件,并通過一個達林頓反向驅動器ULN2803驅動風扇電機的轉動。同時使系統檢測到的環境溫度以及系統預設的溫度動態顯示在LED數碼管上。根據系統檢測到的環境溫度與系統預設溫度的比較,實現風扇電機的自動啟動與停止以及轉速的自動調節。
第二章 整體方案設計
2.1 系統整體的設計
本設計的整體思路是:利用溫度傳感器DS18B20檢測環境溫度并直接輸出數字溫度信號給單片機AT89C52進行處理,在LED數碼管上顯示當前環境溫度值以及預設溫度值。其中預設溫度值只能為整數形式,檢測到的當前環境溫度可精確到小數點后一位。同時采用PWM脈寬調制方式來改變直流風扇電機的轉速。并通過兩個按鍵改變預設溫度的大小,一個提高預設溫度,另一個降低預設溫度。系統結構框圖如圖2-1所示。
圖2-1 系統構成框圖
2.2方案論證
本設計需要實現風扇直流電機的溫度控制,使風扇電機能根據環境溫度的變化自動啟動和停止以及轉速的自動調節,需要比較高的溫度變化分辨率以及穩定可靠的換擋停機控制部件。
2.2.1 溫度傳感器的選擇
在本設計中,溫度傳感器的選擇有一下兩種方案:
方案一:使用數字式的DS18B20集成溫度傳感器作為溫度檢測的核心元件,由其檢測并直接輸出數字信號給單片機進行處理。
方案二:使用熱敏電阻作為檢測溫度的核心元件,并通過運算放大器放大,由于熱敏電阻會隨溫度變化而變化,進而產生輸出電壓變化的微弱電壓變化信號,再經模數轉換芯片ADC0809將微弱電壓變化信號轉化為數字信號輸入單片機處理。
對于方案二,采用熱敏電阻作為溫度檢測元件,有價格便宜,元件容易購的優點,但是熱敏電阻對溫度的細微變化不太敏感,在信號采集、放大以及轉換的過程中還會產生失真和誤差,并且由于熱敏電阻的R-T關系的非線性,其自身對溫度的變化存在較大的誤差,雖然可以通過一定電路來修正,但這個不僅將使電路變得更加復雜,而且在人體所處環境溫度變化過程中難以檢測到小的溫度變化。故該方案不適合本系統。
對于方案一,由于數字式集成溫度傳感器DS18B20的高度集成化,大大降低了外界放大轉換等電路的誤差因數,溫度誤差變的很小,并且由于其檢測溫度的原理與熱敏電阻檢測的原理有著本質的不同,使得其溫度分辨力極高。溫度值在器件內部轉化成數字量直接輸出,簡化了系統程序的設計,又由于該溫度傳感器采用先進的單總線技術,與單片機的接口變的非常簡潔,抗干擾能力強,因此該方案適用于本系統。
2.2.2 控制核心的選擇
在本設計中采用AT89C52單片機作為控制核心,通過軟件編程的方法進行溫度檢測和判斷,并在其I/O口輸出控制信號。AT89C52單片機工作電壓低,性能高,片內含8k字節的只讀程序存儲器ROM和256字節的隨機數據存儲器RAM,它兼容標準的MCS-51指令系統,單片機價格便宜,適合本設計系統。
2.2.3 溫度顯示器件的選擇
方案一:應用動態掃描的方式,采用LED共陰極數碼管顯示溫度。
方案二:采用LCD液晶顯示屏顯示溫度。
對于方案一,該方案成本很低,顯示溫度明確醒目,即使在黑暗空間也能清楚看見,功耗極低,同時溫度顯示程序的編寫也相對簡單,因而這種方式得到了廣泛的應用。但不足的地方是它采用動態掃描顯示方式,各個LED數碼管是逐個點亮的,因此會產生閃爍 ,但由于人眼的視覺暫留時間為20ms,故當數碼管掃描周期小于這個時間時,人眼不會感覺到閃爍,因此只要掃描頻率設置得到即可采用該方案。
對于方案二,液晶顯示屏具有顯示字符優美,其不僅能顯示字符甚至圖形,這是LED數碼管無法比擬的。但是液晶顯示模塊的元件價格昂貴,顯示驅動程序的編寫也較復雜,從簡單實用的角度考慮,本系統采用方案一。
2.2.4 調速方式的選擇
方案一:采用單片機軟件編程實現PWM(脈沖寬度調制)調速方法。PWM的英文全稱是:Pulse Width Modulation的縮寫,它是按一定的規律改變脈沖序列的脈沖寬度,一調節輸出量和波形的一種調節方式,在PWM驅動控制的調節系統中,最常用的是以矩形波PWM信號,早控制時需要調節PWM波的占空比。占空比是指高電平持續時間在一個周期時間內的百分比。在控制電機轉速時,占空比越大,轉速就越快,若全為高電平,占空比為100%時,轉速達到最大。用單片機I/O口輸出PWM信號時,有如下三種方法:
(1)利用軟件延時。當高電平延時時間到時,對I/O電平取反,使其變成低電平,然后再延時一定時間;當低電平延時時間到時,再對I/O電平取反,使其變成高電平,如此循環即可得到PWM信號。在本設計中采用了此方法。
(2)利用定時器。控制方法與(1)相同,只是在該方法中利用單片機的定時器來定時進行高低電平的轉變,而不是用軟件延時。但是此方法編程相對復雜。
(3)利用單片機自帶的PWM控制器。在STC12系列單片機中自身帶有PWM控制器,但本系統所應用到的AT89C52單片機無此功能。
對于方案一,該方案能夠直接實現對直流電機的無極調速,速度變化靈敏,但是D/A轉換芯片的價格較高,與其溫控狀態下無極調速功能相比價格較高。
對于方案二,相對于其他用硬件或是軟件相結合的方法實現對電機進行調速而言,采用PWM用純軟件的方法來實現調速過程,具有更大的靈活性,并大大降低了成本,能夠充分發揮單片機的功能,對于簡單速度控制系統的實現提供了一種有效的途徑。綜合考慮選用方案二。
第三章 各單元模塊的硬件設計系統主要器件包括DS18B20溫度傳感器、AT89C52單片機、五位LED共陰數碼管、風扇直流電機,達林頓反向驅動器ULN2803。輔助元件包括電阻、電容、電源、按鍵、撥碼開關等。 3.1 系統器件簡介
3.1.1 DS18B20單線數字溫度傳感器簡介DS18B20數字溫度傳感器,是采用美國DALLAS半導體公司生產的DS18B20可組網數字溫度傳感器芯片封裝而成,它具有微型化、低功耗、高性能、抗干擾能力強、易配微型處理器等優點,可直接將溫度轉化成串行數字信號供處理器處理。適用于各種狹小空間設備數字測溫和控制領域。 DS18B20的主要特征:測量的結果直接以數字信號的形式輸出,以“一線總線”方式串行傳給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力;溫度測量范圍在-55℃~+125℃之間,在-10℃~+85℃時精確度為±0.5℃;可檢測溫度分辨率為9~12位,對應的可分辨溫度分別為0.5℃,0.25℃,0.125℃和0.0625℃,可實現高精度測溫;它單線接口的獨特性,使它與微處理器連接時僅需一條端口線即可實現與微處理器的雙向通信;支持多點組網功能,即多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫的功能;工作電壓范圍寬,其范圍在3.0~5.5V。 DS18B20內部結構主要有四部分:64位ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。其管腳有三個,其中DQ為數字信號端,GND為電源地,VDD為電源輸入端。 3.1.2 達林頓反向驅動器ULN2803簡介本系統要用單片機控制風扇直流電機,需要加驅動電路,為直流電機提供足夠大的驅動電流。在本系統驅動電路中,選用達林頓反向驅動器ULN2803來驅動風扇直流電機。ULN2803在使用時接口簡單,操作方便,可為電機提供較大的驅動電流,它實際上是一個集成芯片,單塊芯片可同時驅動8個電機。每個電機由單片機的一個I/O口輸出的為5V的TTL信號。 UNL2803由8個NPN達林頓晶體管組裝而成,共18個引腳,引腳1~8分別是8路驅動器的輸入端,輸入信號可直接是TTL或是CMOS信號;引腳11~18分別是8路驅動器的輸出端;引腳9為接地線,引腳10為電源輸入。當輸入TTL信號為5V或CMOS信號為6~15V時,輸出的最大電壓為50V,最大電流為500mA,工作溫度范圍為0~70℃。本系統選用的電機為12V直流無刷電機,可用ULN2803來驅動。 3.1.3 AT89C52單片機簡介AT89C52是51系列單片機的一個型號,它是由ATMEL公司生產的一個低電壓、高性能的8位單片機,片內器件采用ATMEL公司的非易失性、高密度存儲技術 ,與標準的MCS-51指令系統兼容,同時片內設置有通用8位中央處理器和8k字節的可反復擦寫的只讀程序存儲器ROM以及256字節的數據存儲器RAM,在許多較復雜的控制系統中AT89C52單片機得到了廣泛的應用。AT89C52有40個引腳,各引腳介紹如下: VCC:+5V電源線;GND:接地線。 P0口:P0.7~P0.0,這組引腳共8條,其中P0.7為最高位,P0.0為最低位。這8條引腳共有兩種不同的功能,分別適用于兩種不同的情況。第一種情況是單片機不帶片外存儲器,P0可以作為通用I/O口使用,P0.7~P0.0用于傳送CPU的輸入/輸出數據,此時它需外接一上拉電阻才能正常工作。第二種情況是單片機帶片外存儲器,其各個引腳在CPU訪問片外存儲器時先是用于傳送片外存儲器的低8位地址,然后傳送CPU對片外存儲器的讀寫數據。 P1口:P1口是一個內部含有上拉電阻的8位雙向I/O口。它也可作為通用的I/O口使用,與P0口一樣用于傳送用戶的輸入輸出數據,所不同的是它片內含上拉電阻而P0口沒有,故P0口在做該用途時需外接上拉電阻而P1口則不需要。在FLASH編程和校驗時,P1口用于輸入片內EPROM的低8位地址。 P2口:P2口為一個內部含有上拉電阻的8位雙向I/O口,它可以作為通用I/O口使用,傳送用戶的輸入/輸出數據,同時可與P0口的第二功能配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲單元,但此時不能傳送存儲器的讀寫數據。在一些型號的單片機中,P2口還可以配合P1口傳送內部EPROM的12位地址中的4位地址。 P3口:P3口引腳是8個帶內部上拉電阻的雙向I/O口,當P3口寫入1后,它們被內部上拉為高電平,它也可以作為普通的I/O口使用,傳送用戶的輸入輸出數據,P3口也作為一些特殊功能端口使用,如圖3-1所示。 P3.0:RXD(串行數據接受口),P3.1:TXD(串行數據發送口) P3.2:  (外部中斷0輸入),P3.3:  (外部中斷1輸入) P3.4:T0(計數器0計數輸入),P3.5:T1(計時器1外部輸入) P3.6:  (外部RAM寫選通信號)P3.7:  (外部RAM讀選通信號)
圖3-1 AT89C52單片機 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平狀態。 ALE/  :地址鎖存允許/編程線,當訪問片外存儲器時,在P0.7~P0.0引腳線上輸出片外存儲器低8位地址的同時還在ALE/  線上輸出一個高電位脈沖,其下降沿用于把這個片外存儲器低8位地址鎖存到外部專用地址鎖存器,以便空出P0.7~P0.0引腳線去傳送隨后而來的片外存儲器讀寫數據。在不訪問片外存儲器時,單片機自動在ALE/  線上輸出頻率為1/6晶振頻率的脈沖序列。  :外部程序存儲器ROM的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次  有效。但在訪問外部數據存儲器時,這兩次有效的  信號將不出現。  /VPP:允許訪問片外存儲器/編程電源線,當  保持低電平時,則在此期間允許使用片外程序存儲器,不管是否有內部程序存儲器。當  保持高電平時,則允許使用片內程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1和XTAL2:片內震蕩電路輸入線,這兩個端子用來外接石英晶體和微電容,即用來連接單片機片內OSC的定時反饋回路。 3.1.4 LED數碼管簡介 本系統選用五個LED數碼管來進行溫度顯示。LED又稱為數碼管,它主要有8段發光二極管組成的不同組合,其中a~g為數字和字符顯示段,dp為小數點的顯示,通過a~g這7個發光二極管點亮的不同組合,可以顯示0~9和A~F共16個數字和字母。LED數碼管可以分為共陰極和共陽極兩種結構,如圖3-2(a)和圖3-2(b)所示。共陰極結構把8個發光二極管陰極連接在一起,共陽極結構是把8個發光二極管陽極連接在一起。通過單片機引腳輸出高低電平,可使數碼管顯示相應的數字或字母,這種使數碼管顯示字形的數據稱字形碼,又稱段選碼。
數碼管引腳 a.共陰極 b.共陽極 圖3-2 七段LED數碼管 表3-1 七段LED的段選碼表
一個共陰極數碼管接至單片機的電路,要想顯示“7”,須a、b、c這3個顯示段發光(即這3個字段為高電平)只要在P0口輸入00000111(07H)即可。這里07H即為數字7的段選碼。字形與段選碼的關系見表3-1所示。 3.2電路設計
3.2.1 開關復位與晶振電路在單片機應用系統中,出單片機本身需要復位以外,外部擴展I/O接口電路也需要復位,因此需要一個包括上電和按鈕復位在內的系統同步復位電路。單片機上的XTAL1和XTAL2用來外接石英晶體和微調電容,即用來連接單片機內OSC的定時反饋回路。笨設計中開關復位與晶振電路如圖3-3所示,當按下按鍵開關S1時,系統復位一次。其中電容C1、C2為33pF,C3為10uF,電阻R2、R3阻值為10k,晶振頻率為12MHz。 圖3-3 系統復位與晶振電路 3.2.2 獨立按鍵連接電路按鍵包括兩個獨立按鍵S2和S3,一端與單片機的P1.3和P1.4口連接,另一端接地,當按下任一鍵時,P1口讀取低電平有效。系統上電后,進入按鍵掃描子程序,以查詢的方式確定各按鍵,完成溫度初值的設定。其中按鍵S2為加按鍵,每按一次,系統對最初設定值加一,按鍵S3為減按鍵,每按下一次,系統對初定值進行減一計算。其連線圖如圖3-4所示。 圖3-4 獨立按鍵連接電路 3.2.3 數碼管顯示電路本設計制作中選用5位共陰極數碼管作為顯示模塊,它和單片機硬件的接口如圖3-5所示。其中前3位數碼管DS1、DS2、DS3用于顯示溫度傳感器實時檢測采集到的溫度,可精確到0.1攝氏度,顯示范圍為0~99.9攝氏度;后2位數碼管DS4、DS5用于顯示系統設置的初值溫度,只能顯示整數的溫度值,顯示范圍為0~99攝氏度。5位數碼管的段選a、b、c、d、e、f、g、dp線分別與單片機的P0.0~P0.7口連接,其中P0口需要接一10K的上拉電阻,以使單片機的P0口能夠輸出高低電平。5位數碼管的位選W1~W5分別與單片機的P2.0~P2.4口相連接,只要在P2.0~P2.4口任一位中輸出低電平,則選中與該位相連的數碼管。 圖3-5 數碼管顯示電路 3.2.4 溫度采集電路DS18B20數字溫度傳感器通過其內部計數時鐘周期的作用,實現了特有的溫度測量功能。低溫系數振蕩器輸出的時鐘信號通過由高溫度系數振蕩器產生的門周期而被計數,計數器預先設置有與-55℃相應的一個基權值。如果計數器計數到0時,高溫度系數振蕩周期還未結束,則表示測量的溫度值高于-55℃,被預置在-55℃的溫度寄存器中的值就加1℃,然后這個過程不斷反復,知道高溫系數振蕩周期結束為止。此時溫度寄存器中的值即為被測溫度值,這個值以16位二進制的形式存放在存儲器中,通過主機發送存儲器讀命令可讀出此溫度值,讀取時低位在前,高位在后,依次進行。由于溫度振蕩器的拋物線特性的影響,其內用的斜率累加器進行補償。 DS18B20在使用時,一般都采用單片機來實現數據采集。只須將DS18B20信號線與單片機1位I/O線相連,且單片機的1位I/O線可掛多個DS18B20,就可實現單點或多點溫度檢測。本設計中將DS18B20接在P1.7口實現溫度的采集,其與單片機的連接如圖3-6所示。
圖3-6 溫度采集電路 3.2.5 風扇電機驅動與調速電路本設計中由單片機的I/O口輸出PWM脈沖,通過一個達林頓反向驅動器ULN2803驅動12V的直流無刷電機以及實現風扇電機轉速的調節。 按鍵控制設置溫度,通過軟件向單片機輸入相應控制指令,由單片機通過P1.7口輸出與轉速相應的PWM脈沖,經過ULN2803驅動風扇直流電機控制電路,實現電機轉速與啟停的自動控制。當環境溫度升高時,直流電機的轉速會相應按照設定的等級有所提高;當環境溫度下降時,電機的轉速會相應的下降;當環境溫度低于設置溫度時,電機停止轉動,而環境溫度又高于預設溫度時,電機重新啟動。 電路圖如圖3-7所示,風扇電機的一端接12V電源,另一端ULN2803的OUT7引腳,ULN2803的IN7引腳與單片機的P3.1引腳相連,通過控制單片機的P3.1引腳輸出PWM信號,由此控制風扇直流電機的速度與啟停。 圖3-7 風扇電機驅動與調速電路 系統選用的風扇電機為12直流無刷電機,達林頓反向驅動器ULN2803輸入TTL信號為5V或CMOS信號為6~15V時,輸出的最大電壓為50V,最大電流為500mA,工作溫度范圍為0~70℃。本系統中單片機I/O口輸出的TTL信號為5V,因此此風扇電機可以用ULN2803來驅動。 3.2.6 電路總圖電路總圖主要包括系統復位與晶振電路、獨立按鍵連接電路、數碼管顯示電路、溫度采集電路、風扇電機驅動與調速電路等,如圖3-8所示。
圖3-8 電路總圖
第四章 軟件設計
4.1 程序設置程序設計部分主要包括主程序、DS18B20初始化函數、DS18B20溫度轉換函數、溫度讀取函數、按鍵掃描函數、數碼管顯示函數、溫度處理函數以及風扇電機控制函數。DS18B20初始化函數完成對DS18B20的初始化;DS18B20溫度轉換函數完成對環境溫度的實時采集;溫度讀取函數完成主機對溫度傳感器數據的讀取及數據換算,按鍵掃描函數則根據需要完成初值的加減設定;溫度處理函數對采集到的溫度進行分析處理,為電機轉速的變化提供條件;風扇電機控制函數則根據溫度的數值完成對電機轉速及啟停的控制。主程序流程圖如圖4-1所示。 圖4-1 主程序圖
4.1.1 主要程序代碼1、按鍵掃描程序 void keyscan(void) { if(key1==0) { dmsec(5); if(key1==0) { sheding++; if(sheding==100) sheding=20; } while(!key1); } else if(key2==0) { dmsec(5); if(key2==0) { sheding--; if(sheding==0) sheding=20; } while(!key2); } } 2、溫度處理程序 void deal(uint tmp) //溫度處理 { if(tmp<=sheding) { gaonum=0; dinum=4; } else if((tmp>sheding)&&(tmp<=(sheding+5))) { gaonum=1; dinum=3; } else if((tmp>sheding+5)&&(tmp<=(sheding+10))) { gaonum=2; dinum=2; } else if((tmp>sheding+10)&&(tmp<=(sheding+15))) { gaonum=3; dinum=1; } else { gaonum=4; dinum=0; } } 4.2 用Keil C51 編寫程序Keil C51是美國Keil Software公司開發的51系列兼容單片機C語言的軟件開發系統,與單片機匯編語言相比,C語言不僅語句簡單靈活,而且編寫的函數模塊可移植性強,因而易學易用,效率高。隨著單片機開發技術的不斷發展,從普遍使用匯編語言到逐漸使用高級語言開發,單片機的開發軟件也在不斷發展,Keil軟件是目前使用較多的MCS-51系列單片機開發的軟件。 Keil C51軟件不僅提供了豐富的庫函數,而且它強大的集成開發調試工具為程序編輯調試帶來便利,在開發大型軟件時更能體現高級語言的優勢。早使用時要先建立一個工程,然后再添加文件并編寫程序,編寫好后在編輯調試。Keil C51的使用界面如圖3-2所示。
圖4-2 Keil C51的使用界面 4.3 用Proteus進行仿真
4.3.1 Proteus簡介Proteus軟件是來自英國Labcenter electionics公司的EDA工具軟件。 Proteus軟件有十多年的歷史,在全球廣泛使用,它不僅和其他EDA工具一樣有原理布圖、PCB自動或人工布線及電路仿真的功能,而且更重要的功能是,它的電路仿真是互動的,可以根據仿真實時觀察到現象驗證設計的正確性及準確性并及時改變程序代碼、原理圖連接以及元件屬性等。它還能配合系統配置的虛擬儀器來顯示和輸出,如示波器、邏輯分析儀等,效果很好。 Proteus有4個功能模塊:智能原理圖設計、完善的電路仿真功能、獨特的單片機協同仿真功能以及實用的PCB設計平臺。其內部元件庫含有豐富的元件,支持總線結構以及智能化的連線功能;支持主流CPU(如ARM、8051/52、AVR)及通用外設模型的實時仿真等,為單片機的開發應用等帶來極大的便利。軟件的使用主界面如圖4-3所示。
圖4-3 Proteus使用主界面 4.3.2 本設計基于Proteus的仿真首先啟動Proteus軟件并建立一工程,然后根據原理圖調出相應的元件,再根據要求改變各元件的屬性并把各個元件按原理圖連接起來。在原理圖繪制連接好后再把編譯好的程序加載到AT89C52單片機中。最后再根據系統要實現的功能分布進行仿真。 把溫度傳感器DS18B20溫度設置為27.6攝氏度,用按鍵S2調節預設的溫度為23攝氏度。點擊開始按鈕,系統開始仿真,待一段時間穩定后,觀察到此時風扇直流電機的轉速為+14.3 r/s,如圖4-4所示。 圖4-4 仿真效果圖一
把溫度傳感器DS18B20溫度設置為30.5攝氏度,用按鍵S2調節預設的溫度為23攝氏度。點擊開始按鈕,系統開始仿真,待一段時間穩定后,觀察到此時風扇直流電機的轉速為+23.4 r/s,如圖4-5所示。 圖4-5 仿真效果圖二
把溫度傳感器DS18B20溫度設置為35.6攝氏度,用按鍵S2調節預設的溫度為23攝氏度。點擊開始按鈕,系統開始仿真,待一段時間穩定后,觀察到此時風扇直流電機的轉速為+32.1 r/s,如圖4-6所示。
圖4-6 仿真效果圖三
在上一步仿真的基礎上(溫度傳感器DS18B20溫度設置為35.6攝氏度,系統預設的溫度為23攝氏度),用按鍵S2調節系統預設溫度至31攝氏度,此時可知預設溫度大于溫度傳感器檢測到的溫度,觀察到直流風扇電機的轉速逐漸變慢,最后轉速變為0,符合系統要實現的功能,如圖4-7所示。
圖4-7 仿真效果圖四 通過以上仿真可以看出,直流風扇電機在系統設定的溫度一定情況下,其轉速隨著環境溫度(溫度傳感器檢測到的溫度)的增加而增大。當環境溫度低于系統預設的溫度時,風扇自動停止運轉,實現了系統所設計的功能。當然,在此沒有實現風扇直流電機的無極調速,本系統實現的是電機在隨環境溫度變化的四個等級的速度變化,環境溫度在一定小范圍內變化時,風扇直流電機轉速是不變的,只有超過了設定的某一界限時轉速才會變化。
第五章 系統調試
5.1 軟件調試
5.1.1 按鍵顯示部分的調試起初根據設計編寫的系統程序:程序的按鍵接口采用P1口,數碼管現實采用P0控制LED的段碼,P2口控制LED的位碼,從而實現按鍵功能以及數碼管的顯示。經過編譯沒有出錯,但在仿真調試時,數碼管顯示的只是亂碼,沒有正確的顯示溫度,按鍵功能也不靈的,當按鍵按下時,顯示并不變化。 經過查找分析,發現按鍵掃描程序沒有按鍵消抖部分,按鍵在按下與松手時,都會有一定程序的抖動,從而可能使單片機做出錯誤的判斷,導致按鍵條件預設溫度時失靈,甚至根本不工作。因此必須在按鍵掃描程序中加入消抖部分,即在按鍵按下與松手時加入延時判斷,以檢測按鍵是否真的按下或已完全松手。 數碼管不能正確的顯示,主要是因為所有數碼管的段碼都由P0口傳送,而數碼管顯示又采用了動態掃描的方式,但在程序中卻沒有設置顯示段碼的暫存器,導致當P0口傳送段碼時發生混亂,不能正確識別段碼。應在系統中加入鎖存器,或是在程序中設定存儲段碼的空間。 在按鍵加入了消抖程序,數碼管顯示程序中加入了段碼的存儲空間后,數碼管能夠正常的顯示,按鍵也能正常的工作,達到了較好的效果。 5.1.2 傳感器DS18B20溫度采集部分調試由于數字式集成溫度傳感器DS18B20的高度集成化,為軟件的設計和調試帶來了極大的方便,體積小、低功耗、高精度為控制電機的精度和穩定提供了可能。軟件設計采用了P1.7口為數字溫度輸入口,但是需要對輸入的數字信號進行處理后才能顯示,從而多了溫度轉換程序。通過軟件設計,實現了對環境溫度的連續檢測,由于硬件LED個數的限制,只顯示了預設溫度的整數部分。 在溫度轉換程序中,為了能夠正確的檢測到并顯示溫控的小數位,程序中把檢測到的溫度與10 相乘后,再按一個三位的整數來處理。如果把19.7變成197來處理,這樣為程序的編寫帶來了方便。 5.1.3 電動機調速電路部分調試本設計中,采用了達林頓反向驅動器ULN2803驅動直流電機,其可驅動八個直流電機,本系統僅驅動一個。軟件設置了P3.1口輸出不同的PWM波形,通過達林頓反向驅動器ULN2803驅動直流電機轉動,通過軟件中程序設定,根據不同溫度輸出不同的PWM波,從而得到不同的占空比控制風扇直流電機。程序實現了P3.1口的PWM波形輸出,當外界溫度低于設置溫度時,電機不轉動或停止轉動;當外界溫度高于設置溫度時,電機的轉速升高或是自動開始轉動,且外界溫度與設置溫度的差值越大,電機轉速就越高,即占空比增加。 本系統中風扇直流電機的轉速可實現四級調速。通過溫度傳感器檢測到的溫度與系統預設的溫度值的比較,實現轉速變換。當檢測到的溫度比預設的溫度每增加5攝氏度,風扇電機轉速增加一級。 5.2 硬件調試
5.2.1 按鍵顯示部分的調試系統按鍵部分實現了以下功能:按下P1.3口鍵,LED的后兩位顯示溫宿值增一;按下P1.4口鍵,LED的后兩位顯示溫度值減一。調試過程中出現了當按鍵時間過長時,設置的溫度值不是增一或者減一,而是增加后減少了及幾個值,出現這種情況的主要原因可能是按鍵的去抖動延時時間過長造成,改進方法為將對應的按鍵去抖動延時時間適量增加,但也不應過長,否則將出現按鍵無效的情形。 系統顯示部分實現了以下功能:LED顯示的前三位實現了環境溫度整數部分與小數部分的連續顯示,LED的后兩位能根據按鍵的調整顯示所需的設計溫度。且LED的顯示效果很好,很穩定。 5.2.2 傳感器DS18B20溫度采集部分調試將DS18B20芯片接在系統板對應的P1.7口,通過插針在對應系統板的右下側三口即為對應的VCC、P1.7和GND,可將芯片直接插在該插件上,因此極為方便。系統調試中為驗證DS18B20是否能在系統板上工作,將手心靠攏或者捏住芯片,即可發現LED顯示的前兩位溫度也迅速升高,驗證了DS18B20能在系統板上工作。由于DS18B20為3個引腳,因此在調試過程中因注意各個引腳的對應位置,以免其接反而使芯片不能正常工作甚至燒毀芯片。 5.2.3 電動機調速電路部分調試系統本部分的設計中重在軟件設計,因為外圍的驅動電路只是將送來的PWM信號放大從而驅動電機轉動。系統軟件設置在P3.1口輸出是電機轉動的PWM占空比,當環境溫度高于設置溫度時,電機開始轉動,若此時用高于環境溫度的熱源靠近芯片DS18B20時,發現電機的轉速在升高,并越來越快,當達到一定值時,發現電機的轉速不再升高;將熱源遠離芯片DS18B20時,發現電機的轉速開始下降,轉速達到一定值時,若將環境溫度升高到環境溫度以上,發現電機又停止了轉動。系統采用的直流電機為12V的額定電壓,而驅動電路在采用單片機電源時的輸出電壓最高不過5V,因此在調試過程中只采用了5V的直流電機來調試,且得到了可觀的控制效果。 5.3 系統功能
5.3.1 系統實現的功能本系統能夠實現單片機系統檢測環境溫度的變化,然后根據環境溫度變化來控制風扇直流電機輸入占空比的變化,從而產生不同的轉動速度,也可根據按鍵調節不同設置溫度,再由環境溫度與設置溫度的差值來控制電機。當環境溫度低于設置溫度時,電機停止轉動;當環境溫度高于設置溫度時,單片機對應輸出口輸出不同占空比的PWM信號,控制電機開始轉動,并隨著環境溫度與設置溫度的差值的增加電機的轉速逐漸升高。系統還能動態的顯示當前溫度與設置溫度,并能通過按鍵調節當前的設置溫度。
5.3.2 系統功能分析系統總體上由五部分組成,即按鍵與復位電路、數碼管顯示電路、溫度檢測電路、電機驅動電路。首先考慮的是溫度檢測電路,該部分是整個系統的首要部分,首先要檢測到環境溫度,才能用單片機來判斷溫度的高低,然后通過單片機控制直流風扇電機的轉速;其次是電機驅動電路,該部分需要使用外圍電路將單片輸出的PWM信號轉化為平均電壓輸出,根據不同的PWM波形得到不同的平均電壓,從而控制電機的轉速。電路的設計中采用了達林頓反向驅動器ULN2803,實現較好的控制效果;再次是數碼管的動態顯示電路,該部分的功能實現對環境溫度和設置溫度的顯示,其中DS18B20采集環境溫度,按鍵實現不同設置溫度的調整,實現了對環境溫度和設置溫度的及時連續顯示。
第六章 結束語
本次設計的系統從硬件設計和軟件編寫到Proteus仿真,再到用單片機開發板的調試,直到最后的電路板焊接,每一個過程都使用到大學里學到的知識,整個過程把大學里的知識系統的串在了一起。本系統以單片機為控制核心,以溫度傳感器DS18B20檢測環境溫度,實現了根據環境溫度變化調節不同的風扇電機轉速,在一定范圍內能實現轉速的連續調節,LED數碼管能連續穩定的顯示環境溫度與設置溫度,并能通過兩個獨立的按鍵調節不同的設置溫度,從而改變環境溫度與設置溫度的差值,進而改變電機轉速。實現了基于單片機的溫控風扇的設計。
本系統的設計可推廣到各種電動機的控制系統中,實現電動機的轉速調節。在生產生活中,本系統可用于簡單的日常風扇的智能控制,為生活帶來便利;在工業生產中,可以改變不同的輸入信號,實現對不同信號輸入控制電機的轉速,進而實現生產自動化,如在電力系統中可以根據不同的負荷達到不同的電壓信號,再由電壓信號調節不同的發動機轉速,進而調節發電量,實現電力自動化調節。綜上所述,本系統的設計在我們的日常生產和生活中將有著重要的意義。
完整的Word格式文檔51黑下載地址:
http://www.zg4o1577.cn/bbs/dpj-129271-1.html
|