1 前言科技的進步帶動了產品的智能化,單片機的應用更是加快了發展的步伐,它的應用范圍日益廣泛,已遠遠超出了計算機科學的領域。小到玩具、信用卡,大到航天器、機器人,從實現數據采集、過程控制、模糊控制等智能系統到人類的日常生活,到處都離不開單片機,此設計正是單片機的一個典型應用。而此設計可以通過實現智能電源監控,以及負載監控,通過對電壓的檢測,由單片機來控制其反應情況,使其變得智能化,使人的雙手解放出來,此系統還可以應用到其它領域,能滿足社會的多方面需要。
在日常生活中,電壓,電流和功率是最基本的三個個被測量,而電壓、電流尤其被經常測量。如今電子技術的高速發展,需要高精度的測量電壓、電流,由此一種可在線監測電壓電流和功率的系統就顯得十分重要。
本設計主要目的是實現電路的電流和電壓以及功率的監測。本設計主要由六大模塊組成:輔助電源模塊、信號采集模塊、A/D模數轉換部分、單片機控制模塊、顯示模塊和上位機部分。輔助電源可提供一個穩定的直流5V電壓為系統供電;信號采集模塊可將電壓、電流信號轉換成A/D轉換芯片可識別的電氣信號;A/D數模轉換部分可信號采集模塊采集的模擬信號轉換成數字信號;單片機將A/D數模轉換模塊的數字信號進行處理、計算并且顯示到LCD液晶顯示屏上面;最后LABVIEW上位機可將單片機處理之后的信息顯示于PC機上面,做到遠程監控。
本設計主要通過查閱大量相關資料,對比自己所學的知識,對設計題目進行分析,從而制定出相應的方案計劃,制定方案后再對相關各個模塊進行深入設計、確定相關參數。初步確定方案后,運用EDA仿真軟件對設計進行仿真測試調節,測試成功后,對電路進行PCB電路板制作,實物焊接等。實物焊接成功后再對實物進行逐步調試。
2 總體方案設計通過查閱大量相關技術資料,并結合自己的實際知識,我主要提出了兩種技術方案來實現系統功能。下面我將首先對這兩種方案的組成框圖和實現原理分別進行說明,并分析比較它們的特點,然后闡述我最終選擇方案的原因。
2.1 方案比較不同的設計方案決定著系統的性能、設計的難易程度,這里對于系統總體設計提出兩種設計方案。
2.1.1 方案一方案一原理框圖如圖2.1所示。

圖2.1 方案一原理框圖
方案一采用了TLC2543這塊12位ADC作為模數轉換器,CTC89C51單片機作為主控芯片,并結合LCD1602I顯示屏處理方案,優點是顯示美觀,成本低廉,電壓測量范圍廣;缺點是結構復雜,數據處理速度慢,精度低,能耗較大。
2.1.2 方案二方案二原理框圖如圖2.2所示。

圖2.2 方案二原理框圖方案二采用STM32單片機作為主控芯片,由于STM32芯片內部自帶12位高速ADC,所以不用外接外部ADC,這樣就使得系統的結構大大簡化,并且其內部ADC為處理精度為12位,所以電壓采集精度較高,可以達到0.8mV。12864液晶價格便宜,應以簡便,完全可以滿足設計需求。就方案二來說,其優點是系統資源廣,數據處理精度高,結構簡單,處理速度快,穩定性好,性能優良,能耗低,缺點是STM32應用起來較復雜,成本略高。
2.2 方案論證2.2.1 方案一論證該方案主要由五大模塊組成:檢測電路、A/D模數轉換模塊、單片機控制模塊、顯示模塊和上位機部分。按系統功能實現要求,控制模塊采用STC89C51單片機,STC89C51是一個低電壓,高性能CMOS 8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM)。STC89C51有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2 個讀寫口線,AT89C52可以按照常規方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的 Flash存儲器可有效地降低開發。
本設計通過程序來進行電壓、電流的計算等數據處理,及其功能控制; A/D轉換模塊采用TLC2543芯片,TLC2543是TI公司的12位串行數模轉換器,使用開關電容逐次逼近技術完成A/D轉換過程。由于是串行輸入結構,能夠節省51系列單片機I/O口資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應用。
2.2.2 本方案二論證本方案設計思路與方案一基本相似,但方案二采用的是STM32單片機,STM32單片機最高工作頻率72MHz;片上集成32-512KB的Flash存儲器,6-64KB的SRAM存儲器;擁有3個12位的us級的A/D轉換器(16通道):A/D測量范圍:0-3.6V。這些對于本設計來說,資源綽綽有余,但可以極大的方便了以后系統的擴展。由于其自帶的ADC是12位的,數據的處理精度遠大于ADC0832。方案二可以省去一塊ADC的成本,同時也簡化了系統的結構,使系統更加穩定。
2.3 方案選擇經過方案對比,由于方案二設計復雜、成本較高;方案一設計簡單,成本低廉。所以最終選擇方案一作為系統的設計方案。
3 單元模塊設計本節主要介紹系統各單元模塊的具體功能、電路結構、工作原理、以及各個單元模塊之間的聯接關系;同時也對相關電路中的參數計算、元器件選擇、以及核心器件進行必要說明。
3.1 各單元模塊功能介紹及電路設計本系統主要分為6個單元模塊,它們分別是:輔助電源模塊、控制模塊、檢測電路模塊、A/D轉換部分、液晶顯示模塊、LABVIEW上位機模塊。各單元模塊功能及相關電路的具體說明如下。
3.1.1 輔助電源模塊輔助電源是根據需要將電池供給的電壓轉換成我們實際需要的電壓為電路供電。可以直接貼裝在印刷電路板上的電源供應器,其特點是可為專用集成電路(ASIC)、數字信號處理器 (DSP)、微處理器、存儲器、現場可編程門陣列 (FPGA) 及其他數字或模擬負載提供供電。輔助電源位一個線性電源,它是根據需要將所供的直流電源(36V)供給的電壓轉換成我們實際需要的電壓(5V)為電路供電,可以直接貼裝在印刷電路板上的電源供應器。
其中C4、C5是輸入濾波,C6是輸出濾波,D2為指示燈,R7為防止發光二極管燒壞的限流電阻,輔助電源模塊原理圖如圖3.1所示。

圖3.1 輔助電源原理圖3.1.2 控制模塊STC89C51是一種低功耗、高性能CMOS 8位微控制器,具有4K在系統可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規編程器。在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得STC89C51在眾多嵌入式控制應用系統中得到廣泛應用。控制模塊原理圖如圖3.2所示。

圖3.2 控制模塊原理圖STC89C51的特點如下:
- 擁有靈巧的8位CPU和在系統可編程Flash
- 晶片內部具時鐘振蕩器(傳統最高工作頻率可至 12MHz)
- 內部程序存儲器(ROM)為4KB
- 內部數據存儲器(RAM)為 256字節
- 32 個可編程I/O 口線
- 8個中斷向量源
- 兩個16位定時器/計數器
- 三級加密程序存儲器
- 全雙工UART串行通道
- 低功耗空閑和掉電模式
- 掉電后中斷可喚醒
- 看門狗定時器
- 雙數據指針
- 掉電標識符
控制模塊主要由單片機、時鐘電路、復位電路組成。時鐘電路:單片機內部具有一個高增益反相放大器,用于構成振蕩器。通常在引腳XTALl和XTAL2跨接石英晶體和兩個補償電容構成自激振蕩器,原理圖如圖3.3所示,其中X1、C1、C2。可以根據情況選擇6MHz、12MHz或24MHz等頻率的石英晶體,補償電容通常選擇30pF左右的瓷片電容。

圖3.3 時鐘電路原理圖復位電路:單片機小系統常采用上電自動復位和手動按鍵復位兩種方式實現系統的復位操作。上電復位要求接通電源后,自動實現復位操作。手動復位要求在電源接通的條件下,在單片機運行期間,用按鈕開關操作使單片機復位。其原理圖如圖3.4所示。上電自動復位通過電容C3充電來實現。手動按鍵復位是通過按鍵將電阻R1與VCC接通來實現。

圖3.4 復位電路原理圖按鍵電路:本系統設計三個按鍵,通過按不同按鍵,可實現電壓、電流、功率之間顯示的切換。按鍵電路原理圖如圖3.5所示,原理為通過按鍵可改變單片機I/O口所識別的電平,以P2.3為例,VCC→電阻→P2.3提供高電平,當按下按鈕后,斷開的地方接通,P2.3與地接通,獲得低電平,單片機將檢測到低電平后,即執行其對應程序。

圖3.5 按鍵電路原理圖3.1.3 檢測電路模塊 一般檢測電壓為電阻并聯、檢測電流為電阻串聯。因為并聯電路電壓相等、串聯電路電流相等。本模塊就是根據這個原理而設計得到的,檢測電路原理圖如圖3-6所示。R1,R3兩個電阻分壓,通過采集電阻R3的電壓再除上(R3/R1)的比值,就可以得到負載兩端的電壓值。為了反應流過負載的電流大小,同時考慮到電流的大小對于單片機來說不能直接處理,所以本設計采用了間接的方法,即將電流轉化為電壓,采用采樣電阻和負載分壓的方法,通過采集采樣電阻的電壓,然后將得到的電壓值除以采樣電阻的阻值就可以得到流過負載的實際電流值。本設計采用的采樣電阻的阻值只有0.2歐,這對于電源和負載來說都相對比較小,所以由于采樣電阻而引起的壓降完全可以忽略不計,檢測電路原理圖如圖3.6所示。

圖3.6 檢測電路原理圖3.1.4 A/D轉換模塊一般A/D轉換過程包括采樣,保持,量化和編碼等過程。TLC2543是12位ADC,使用開關電容逐次逼近技術,完成AD轉換過程,提供的最大轉換速率為66ksps,供電電流僅需1毫安(典型值)。可以用四種傳輸方法使TLC2542得到全12位分辨率,每次轉換或數據傳輸可以使用12或16個時鐘周期。一個片選(CS)脈沖要插到每次轉換的開始處,或是在轉換時序的開始處變化一次后保持CS為低,直至時序結束。AIN1與電阻并聯,取得模擬信號后,經過模數轉換,再由AIN0輸出數字信號于負載,其中與TLC2543相連的為采樣電路。TLC2543主要特征如下:
1、12位分辯率A/D轉換器;
2、在工作溫度范圍內10μs轉換時間;
3、11個模擬輸入通道;
4、3路內置自測試方式;
5、采樣率為66kbps;
6、線性誤差±1LSBmax;
7、有轉換結束輸出EOC;
8、具有單、雙極性輸出;
9、可編程的MSB或LSB前導;
10、可編程輸出數據長度。
TLC2543時序圖如圖3.7所示。

圖3.7 TLC2543時序圖3.1.5 顯示模塊顯示部分采用的是LCD1602液晶顯示屏,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數字)。市面上字符液晶大多數是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶,顯示模塊原理圖如圖3.8所示。

圖3.8 顯示部分原理圖3.1.6 上位機部分LABVIEW是一種程序開發環境,由美國國家儀器(NI)公司研制開發的,類似于C和BASIC開發環境,但是LABVIEW與其他計算機語言的顯著區別是:其他計算機語言都是采用基于文本的語言產生代碼,而LABVIEW使用的是圖形化編輯語言G編寫程序,產生的程序是框圖的形式。LABVIEW軟件是NI設計平臺的核心,也是開發測量或控制系統的理想選擇。LABVIEW開發環境集成了工程師和科學家快速構建各種應用所需的所有工具,旨在幫助工程師和科學家解決問題、提高生產力和不斷創新與C和BASIC一樣LABVIEW也是通用的編程系統,有一個完成任何編程任務的龐大函數庫。LABVIEW的函數庫包括數據采集、GPIB、串口控制、數據分析、數據顯示及數據存儲,等等。LABVIEW也有傳統的程序調試工具,如設置斷點、以動畫方式顯示數據及其子程序(子VI)的結果、單步執行等等,便于程序的調試。
LABVIEW(Laboratory Virtual Instrument Engineering Workbench)是一種用圖標代替文本行創建應用程序的圖形化編程語言。傳統文本編程語言根據語句和指令的先后順序決定程序執行順序,而LABVIEW則采用數據流編程方式,程序框圖中節點之間的數據流向決定了VI及函數的執行順序。VI指虛擬儀器,是LABVIEW的程序模塊。LABVIEW提供很多外觀與傳統儀器(如示波器、萬用表)類似的控件,可用來方便地創建用戶界面。用戶界面在LABVIEW中被稱為前面板。使用圖標和連線,可以通過編程對前面板上的對象進行控制。這就是圖形化源代碼,又稱G代碼。LABVIEW的圖形化源代碼在某種程度上類似于流程圖,因此又被稱作程序框圖代碼,LABVIEW設計界面如圖3.9所示。

圖3.9 LABVIEW界面圖
4 系統調試本節主要對系統的硬件、軟件分別進行調試。
4.1 硬件調試硬件調試部分主要對系統硬件的焊接,輔助電源的實測,檢測模塊的電壓測量點和電流測量點、液晶顯示等硬件進行測試。
4.1.1 LCD1602顯示調試
4.1.2 硬件系統整體調試
4.2 軟件調試根據模塊的劃分原則,將軟件劃分為初始模塊,A/D轉換子程序和顯示子程序,這四個模塊程序構成了整個系統軟件的主程序。軟件設計采用C語言編程。
軟件設計整體結構圖如圖4.1所示。

圖4.1 系統軟件程序流程圖
4.3 系統測量精度測試本小節主要對系統測量的精度進行測試。用萬用表打出電阻兩端的電壓值即可得到電阻兩端的實際電壓,然后與本系統測量出的電壓進行比較即可得到電壓測量精度;由于所加在電阻負載上的電源為恒壓源,所以只需要得到電壓值與電阻值就可計算出實際電流值,然后與所測量出的電流值進行比較即可得出電流測量精度;用實際電壓與實際電流相乘即可得到實際功率,然后與所測功率進行比較即可得到功率測量精度。
給負載施加五組不同電壓進行測試,選取精度最低的一組作為系統測試精度。測試結果如圖所示4.2所示。

圖4.2 不同輸入電壓情況下測試結果測量精度由式4-1計算所得
(式4-1)
最終五組測試數據、計算結果如表4-1所示。
表4-1 精度測試結果
將五組數據分別進行電壓、電流、功率的精度計算,每種類型的最低精度為系統最低測量精度。最終結果為:電壓精度1.53%,電流精度2.7%,功率精度2.3%。
5 系統功能、指標參數5.1 系統能實現的功能本系統實現的功能為:用外電源給負載供電,將本系統接入負載兩端即可測量負載此時的電壓、電流、功率信號在現場端通過LCD1602顯示,并可以將這些信號顯示于遠程LABVIEWPC機界面上。
5.2 系統功能及指標參數分析經測試,本系統已完成了基本的設計要求,但是也有很多不足的地方。比如:顯示電壓電流的準確度還需要進一步提高,系統的測試穩定度也需要提高,LABVIEW界面還需更加美化。對于準確度的不高,經分析后發現是采集次數較少的原因造成的,改進的地方是可以在程序中增加更多的采集次數,然后求平均值,或者在顯示完成后加上一段延時,這樣就可以消抖,從而保證了顯示數字的準確和穩定。
6 結論本次設計主要是實現發電功率的在線監測,實時反應負載兩端的電壓和電流以及負載功率的測量。該設計整體結構完整,簡潔,但對電路中元件的參數匹配要求比較高。比如采樣電阻和負載都要求能有大的功率,以便能流過大電流。通過查閱資料進行學習對應設計模塊的器件參數,再經過系統調試和測試,得到各模塊電路的指標參數,確保了每一步的順利進行。但是由于電路設計上面存在缺陷,電壓、電流采樣的準確度還需要進一步提高。還有我們用到的電阻不可能是理想的線性電阻。隨著電流的增大,電阻就會發熱,電阻值就會隨溫度的改變而改變。那么我們測到的值和實際值就有一定的偏差,如果用直角坐標系來反應的話,就不會是一條完完全全的直線。所以為了盡量的減小誤差,我們通過實測了多個數據,將這些數據連成線,然后再在程序中將這些數據做了擬合處理,極大的減小了誤差。
這個設計中需要計算的量不是很多,上位機的界面制作不是很復雜,但對單片機的數據的處理和上位機對單片機的數據的處理有一定的要求。雖然通過理論上的計算以及仿真設計達到要求,但在實物調試電路模塊中,相關接口電路中參數的選擇經過一定的變化,都會引起系統一定的誤差。在整個設計過程中,我們仿照了參考書中相應模塊,借鑒了相應的書籍資料數據,進行測試和調節,所測的參數基本穩定,基本滿足設計要求。
7 總結與體會在本次課程設計中,對STC89C51單片機加深了了解,并鞏固了對它的使用方法,對于51單片機的最小系統、TLC2542芯片、輔助電源等有了更深一步理解,為以后的電路分析和設計奠定了一定的基礎。本次綜合設計還提高了實踐動手能力。大學中許多的時間都是在學習理論知識,很少參與實踐中去。綜合設計提供了一個寶貴的機會,理論用語實踐,從設計,仿真,焊電路板,安裝調試,每一步的進行,都會帶來受益非淺的實際操作訓練,許多的實踐經驗是我們在課本上學不到的,必須經過這樣嚴格的自己動手,才會從中體會出設計成果的喜悅。理論知識總是要用于實踐中才得以升華,應該更多的參與實踐,以增強對專業的興趣。同時,作為一名電力系統及其自動化的大三的學生,即將跨入大四,能做這樣的綜合設計是十分有意義。在此次綜合設計中,將課本理論知識與實際應用聯系起來。按照書本的知識、老師講授的方法,首先和同組的同學一起分析研究此次的設計任務和要求,然后按照分析的結果進行實際連接操作,檢測和校正,再進一步完善。在其中遇到一些不解和疑惑的地方,還有出現的一些未知問題,都認真分析討論,然后對討論出的結果進行實際檢測校正,對一些疑難問題也認真向老師詢問請教,和老師一起探討解決。通過此次的綜合設計,加深了對課本知識的認識理解,對電路設計方法和實際電路連接也有了一定的初步認識。綜合設計達到了專業學習的預期目的。在三周左右的課程設計之后,普遍感到不僅實際動手能力有所提高,更重要的是通過對新知識的研究了解和學習,更進一步激發了對專業知識的興趣,并能夠結合實際存在的問題在專業領域內進行更深入的學習。
8 致謝在老師與老師的指導和同學的幫助下我們順利完成了本次的綜合設計。在整個綜合課程設計制作過程中,受到張老師與雷老師很多的幫助。從設計的選題、研制計劃的安排到設計的具體過程,張老師與雷老師都給予了悉心的指導。兩位老師嚴謹的治學態度、開明的學術思想,和寬人律己的高尚品德值得學習。謹向張力老師與雷霞老師致以誠摯的謝意!對他們無私的幫助表示衷心的感謝,更感謝他們為學生營造的濃郁學術氛圍,以及對我在學習上的無私幫助!