本設計詳細介紹了一種基于單片機的數字式電容測量儀設計方案及實現方法。設計的主要方法是采用555芯片構成單穩態觸發器,將電容容量轉換為脈沖寬度。通過單片機的計時器測量脈寬, 根據已知的R值,通過單片機的運算功能,計算出電容容量,最后,再通過單片機的普通I/O口控制液晶屏顯示出電容容量的計算結果。系統的測量范圍為10pF~ 500uF, 具有多個量程,可根據用戶需要由用戶選擇,與用戶的交互是通過鍵盤實現,不同量程的實現是通過單片機的I/O口控制繼電器的吸合與斷開來選擇不同的R值,從而實現不同的量程。同時,本設計注重設計方法及流程,首先根據原理設計電路,再通過protues仿真,利用keil編程,進而借助altium designer 制作PCB,最后到焊接元器件,調試直至成功。
1 系統方案設計
1.1 設計說明及要求
1.1.1 設計說明框圖中的外接電容是定時電路中的一部分。當外接電容的容量不同時,與定時電路所對應的時間也有所不同,即C=f(t),而時間與脈沖數目成正比,脈沖數目可以通過計數譯碼獲得。  1.1.2 設計要求(1)基本要求 ① 自制穩壓電源。 ② 被測電容的容量在10pF至10000μF范圍內 ③ 設計四個的測量量程。 ④ 顯示測量結果,測量誤差小于2.5%。 數字顯示:顯示分辨率:每檔滿量程的0.1%; 電容測量:電壓可選擇5V,25V,50V; 為實現該設計,達到相應的設計要求,本次設計中考慮了三種設計方案,三種設計方案中主要區別在于硬件電路和軟件設計的不同,對于本設計,三種方案均能夠實現,最后根據設計要求、可行性和設計成本的考慮選擇了基于STC89C52單片機和555芯片構成的單穩態觸發電路測量電容的方案。 現在一一介紹論證如下。 1.3方案Ⅱ根據積分電路原理可得C=Ui*dt/R*Uo,將經過RC充電電路后,輸出的與電容對應的電壓值輸入到ADC0809中,經過處理后,將相應的數值傳到單片機里,再通過公式運算,求得相應的電容C值,在LCD上顯示。 
圖1-2 方案Ⅱ電容測量框圖
1.5 三種方案作簡單的比較比較上述三種方案可知,方案Ⅰ和ⅠⅠ采用了A/D轉換器,價格比較昂貴;而且根據公式可知,再換算電壓與電容值時,時間參數t起著至關重要的作用,對t的計算要精確,不然誤差值會很大,所以調試起來有一定難度;方案Ⅲ電路簡單,原理清晰,易于實現,易于控制,本設計就是基于方案Ⅲ展開的。 2.2 硬件電路設計
2.2.1 單片機電路設計為使單片機正常工作,除電源供電部分外,還需提供晶振電路和復位電路。具體電路如下: 
圖2-3 單片機工作電路 由圖2-3可知,9腳外接的是按鍵復位電路,18,19腳外接的是晶振電路,這樣,就構成了單片機正常工作的必備電路。同時,為使P0口正常工作,并增加其帶負載能力,P0口需接了上拉電阻(在圖中未畫出)。 2.2.2 555時鐘芯片與單片機連接圖2-4是555時鐘芯片構成的單穩態觸發電路,6腳和7腳接在一起,R2和C4構成商店復位電路,2腳用于接收單片機P3.7口產生的低脈沖,3腳接于P3.2腳,用于門控制計時器0的啟動與停止。從而將電容容量轉為脈沖寬度。 
圖2-4 555芯片與單片機的連接 2.2.3 低脈沖產生電路如圖2-5所示,按鍵接于P3.3口,即外部中斷1接口,因此低脈沖是利用中斷實現的,P3.7口產生低脈沖,可在軟件中的外部中斷1函數中實現,整個過程為,需要測量時,按鍵,產生外部中斷,利用外部中斷,用軟件再在P3.7口產生一個低脈沖,之所以利用中斷實現該功能,是為了增加產品的可靠性,因為按鍵的時間是比較長的,直接用按鍵產生低脈沖可能導致T1 > Tw ,導致測量錯誤。而利用中斷,可以直接在中斷函數中產生一個固定時間的低脈沖,保證了測量條件,避免發生錯誤。 
圖2-5 按鍵產生低脈沖電路 2.2.4 鍵盤電路如圖2-6所示鍵盤電路主要用于與用戶進行交互,如用戶需要選擇量程時,就必須交互。鍵盤分為獨立鍵盤和矩陣鍵盤,這里只需要實現量程的選擇,共四個量程,故無需矩陣鍵盤,4個獨立按鍵就完全夠用了。 
圖2-6 鍵盤電路 2.2.5 指示燈電路如圖2-7所示,指示燈主要用于給用戶以提示,如當前量程提示,超量程提示等等。 D2用于超量程提示,D6用于電源提示。 
圖2-7 指示燈電路
2.2.6 量程選擇電路在圖2-4中可以看到,在RC充電回路中,R值是固定的,不可變的,那么量程也顯然是不可變的,因此,需要在此加入可調節充電回路電阻的電路部分,這里,利用繼電器可以簡單實現。具體電路如圖2-8所示,利用繼電器時需特別注意,由于單片機輸出電流是很小的,不足以驅動繼電器吸合,因此要加驅動電路,在這里,選擇ULN2003芯片來實現。當然,也可以利用典型的三極管驅動來實現,雖然選擇的是芯片實現驅動,在這里也將典型的三極管驅動電路列于此。如圖2-9所示。 
圖2-8 實現量程選擇電路

圖2-9 利用三極管的驅動電路 2.2.7 液晶顯示電路 如圖2-10所示,lcd接與P1口,用于顯示電容值以及一些相應的測量信息。 
圖2-10 lcd顯示電路 至此,整個電容測量儀的硬件設計部分就設計好了,接下來,需要的就是與之相匹配的軟件支持了。 2.3 軟件設計軟件編程平臺選擇最常用的keil軟件。由于該程序并未涉及到底層的驅動問題,因此選擇方便快捷的C語言編程。在編程中,將該程序分為三個模塊:延時模塊,1602顯示模塊及主函數模塊。方便調試與理解。具體程序見附錄二?傮w程序較長,但并不復雜,可根據需要重點看主函數,與硬件電路結合起來,注重程序后緊跟的注釋,理解起來是比較容易的,在此就不再一一詳細分析。 2.4 量程范圍設置由于量程的選擇是非常重要的一個環節,在這里單獨討論量程的選擇。 系統采用單片機片內16 位的定時器測量TW 的寬度, 標準計數脈沖的周期為1 微秒時, 為確保計數器不發生溢出, 要求TW < 65 毫秒。同時, 為減小量化誤差對結果的影響, 要求TW > 1 微秒。當TW >100 微秒以上時, 可忽略量化誤差的影響。為滿足10pF ~ 500uF 的測量范圍, 可通過設置不同充電電阻R 的阻值來實現。理論計算的電阻R 阻值、理論量程范圍以及系統選擇的量程范圍如表2-1 所示。系統分為四個量程, 可測量10pF ~ 500uF 的電容。 表2-1 R值與量程范圍的關系
2.5 altium designer 原理圖設計及PCB制作
2.4.1 原理圖設計
圖2-11 原理圖設計 2.4.2 PCB制作
圖2-12 PCB設計 在此并沒有布雙層板,紅色的線僅僅只是為了標志出跳線。 2.4.3 設計結果
圖2-13 設計結果實物圖 各個按鍵功能如圖中文字說明。 3系統測試由于該作品需實現的功能僅為測電容,在此不列出其他的測試。
3.1 測量100pf的電容在此以100pf電容測試為例,演示整個測試過程。測試標稱值為101的電容,即測量電容值為100pf的電容。104的電容實物如圖2-14所示。測試結果如圖2-15所示。若量程選擇錯誤,測試結果如圖2-16所示。
圖2-14 100nf的電容實物

圖2-15 2nf電容正常測試 
圖2-16 量程錯誤情況下的測試 3.2 測量4.7uf的電容再以測試4.7uf電容為例,測試結果如圖2-18所示。 
圖2-18 測試4.7uf的電容 3.3 測試結果將測量的一系列電容的電容值與標準值比較。比較結果如表3-1。
表3-1 測量值與標準值比較
由表3-1中數據可知,平均誤差是0.5%,低于設計擴展要求的2.5%,測量范圍是10pf~500uf,基本滿足設計要求的10pf~10000uf。測量結果由液晶直觀顯示。綜合以上分析,該設計滿足整體設計要求。
3.1 誤差分析由于產生的0.5%左右的誤差,在這里簡要分析一下誤差產生的原因。 電容測量的誤差主要由NE555 定時器構成的單穩態觸發電路的非線性誤差T 、計數器的量化誤差􀀁N 和標準計數脈沖的頻率偏移TC 產生[2] [ 3] 。因此有: 
系統采用的標準計數脈沖來自單片機內核時鐘, 由片外的高精度晶振與片內電路自激振蕩產生,頻率非常穩定, 可以忽略其頻偏對測量結果的影響。量化誤差􀀁N 是數字電路的特有誤差, 最壞的情況下等于 1。如采用12M 的晶振, 可獲得1MHz 的標準計數脈沖, 量化產生的最大誤差為1 微秒。通過設置充電電阻R 的阻值, 使TW 達到毫秒級時, 量化誤差的影響非常小, 可以忽略。非線性誤差是由器件的非線性特性產生的, 可通過硬件參數修正和軟件算法補償來減小。
4 結論與心得體會 經過本次歷經4周的實習,使得我又進一步對單片機系統,尤其測量電容的電路系統有了深一步認識。在做前期準備工作時,老師不希望我們用555芯片做這個實驗,因為如果是555芯片震蕩電路來測量的話,雖然制作原理簡單,但測量值會很不穩定,測范圍也不夠廣?沙鲇趫孕呕睘楹喌男拍,在沒做過實物的情況下,我們還是硬著頭皮還是想驗證下事實是不是如此(如果不成功再改換方案)。 起初查閱了很多資料,比如伏安法中的自由軸法制作測量電容電路,LC震蕩側電容電路等,老師也推薦了方案二中的積分法測量電路,但因為在進行理論計算時,因為積分測容法中C=Ui*dt/Uo*R,而我們無法精確確定ADC在輸出口的傳輸時間(哪怕是幾十us),所以有種無法掌控誤差的感覺,再加上出于成本考慮,所以沒有首選這種方法。而對于利用555芯片單穩態觸發這種法案的分析,我則很相信,這個電路是可以實現測量功能的,并且只要輸出穩定,我就可以做相應補償。 在經過一系列的仿真,實物制造和調整后,最初做出來的板子并不能運行的,后面反復徹查后,才發現原來自己的設計出現了差漏,少連或錯連了一些關鍵線路,于是又重新修整過。經過修正后的電路中終于可以開始進行測量了,起初的測量只有在nf檔和10uf以下檔位下,測量值是基本滿足要求的,而PF襠和100uf以上的檔位并不滿足已要求的,甚至不夠穩定,所以我開始將擋位縮小,將10pf~10000uf的要求,縮減為100Pf~500uf,果然修正后的電路,測量穩定了。再經過軟件補償后,最終獲得了在精度上可以滿足要求的方案。(Ps:因為最初設計的時候只選擇了4個擋位,而手上電容最大才470uf,出于“最穩定測量”的考慮,所以才改的100pf~500uf擋位。即:本方案也可能可以測量500uf以上的電容,只要將其中的100歐姆電阻改小即可。)
完整的Word格式文檔51黑下載地址(內含源碼):
基于51單片機的數字電容測量儀.doc
(2.04 MB, 下載次數: 460)
2018-6-27 11:36 上傳
點擊文件名下載附件
數字電容 下載積分: 黑幣 -5
|