《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于單片機的模擬開關時序設計與仿真
基于單片機的模擬開關時序設計與仿真
來源:微型機與應用2011年第2期
郭海霞, 左月明
(山西農(nóng)業(yè)大學 工學院, 山西 太谷 030801)
摘要: 為了有效解決微電容測量電路中的電荷注入效應,基于單片機設計合理的開關時序電路,并采用Proteus和Keil軟件進行仿真,結果證明了整個系統(tǒng)的程序設計與外圍電路的正確性,提高了調(diào)試效率。
Abstract:
Key words :

摘  要: 為了有效解決微電容測量電路中的電荷注入效應,基于單片機設計合理的開關時序電路,并采用Proteus和Keil軟件進行仿真,結果證明了整個系統(tǒng)的程序設計與外圍電路的正確性,提高了調(diào)試效率。
關鍵詞: 單片機; 電子開關; 電荷注入效應; 時序設計仿真

    隨著現(xiàn)代工業(yè)的飛速發(fā)展,對工況參數(shù)的實時監(jiān)測越來越重要。參數(shù)的監(jiān)測分為電量和非電量兩大類,對于非電量參數(shù)的測量,測量成功與否主要取決于傳感器的質(zhì)量和對信號的提取。由于電容傳感器具有結構簡單、功耗低、測量范圍大、穩(wěn)定性好、靈敏度高、使用壽命長及可以進行非接觸測量等特點,非常適合在高潮濕、高塵埃、強輻射及超低溫等惡劣環(huán)境下長期使用[1,2],因此,對于某些變化緩慢或微小物理,比較適宜采用電容傳感器進行測量。
    目前用于測量微電容的方法主要是交流法,其測量原理是通過激勵信號對被測電容連續(xù)充放電,形成與被測電容成比例的電壓或電流信號,從而測得被測電容值。采用此方法測量的信號中具有脈動噪聲,需要通過濾波器濾除其脈動成分,但濾波器的引入將降低測量電路信號采集的速度。所以,本文設計了一種基于電荷放大原理的微電容測量電路,該電路中使用的模擬開關存在電荷注入效應,此效應影響電路的分辨率。為了解決該問題,本文從微電容測量電路中的電荷注入效應入手,對模擬開關的電荷注入效應進行分析,結合單片機對開關時序進行設計,并基于Proteus和Keil軟件設計的電路進行仿真,進而檢驗設計的合理性。
1微電容測量電路中的電荷注入效應
    基于電荷放大原理的微電容測量電路如圖1所示。

    圖中Vin為充放電的激勵電壓源,CX為傳感器兩極板之間的電容即待測電容;S1~S5為模擬開關;運放A1、電容Cf、電阻Rf和開關S3構成電荷放大器;開關S4和S5及運放A2和A3構成兩個采樣保持器,A4為儀表放大器。模擬開關基本上由一個NMOS管和一個PMOS管并聯(lián)而成,是一種三穩(wěn)態(tài)電路,它可以根據(jù)選通端的電平?jīng)Q定輸人端與輸出端的狀態(tài)。當選通端處在選通狀態(tài)時,輸出端的狀態(tài)取決于輸入端的狀態(tài);當選通端處于截止狀態(tài)時,則不管輸入端電平如何,輸出端都呈高阻狀態(tài)。
    模擬開關的電荷注入效應是影響該電路分辨率的主要因素。電荷注入效應機理主要有兩方面:一是由溝道電荷造成的,如圖2(a)所示,根據(jù)MOS器件的原理,當一個MOS管處于導通狀態(tài)時,SiO2-Si界面的反型層存儲一定電荷量,當開關斷開時,電荷通過源端和漏端流出,流入測量電路;二是由柵源間和柵漏間的寄生電容存儲的電荷釋放流入測量電路造成的[3-4], 如圖2(b)所示。由電荷注入效應引起的誤差遠大于被測量CX的值,引起電荷注入效應。

2 開關的電荷注入效應分析
    電子開關控制時序設計圖如圖3所示。

    首先斷開S3,電路只受S3的電荷注入效應影響。當開關S3斷開時,由于電荷注入效應,電荷將流向A1的輸出端和反相輸入端,流向A1輸出端的電荷產(chǎn)生的影響很小,僅引起輸出波形的瞬時微小失真,而流向A1反相輸入端的電荷對測量結果產(chǎn)生影響,但A4采用差動式設計較好地解決了這部分的影響。
    對開關S1與S2的電荷注入效應。由圖3可知S2關斷時間晚于S3,S1關斷時間晚于S2。S2斷開時的電荷注入效應引起V1點較小的波形失真,關閉S1,盡管有S2的電荷注入效應,但V1被置為輸入電壓Vin,因此,被測電容Cx上的電壓不受S2的電荷注入效應影響;S1斷開時的注入電荷,會沿著已閉合的開關S2流向地,S1不會對被測電容Cx產(chǎn)生影響。所以,S1和S2對輸出基本不產(chǎn)生影響。
 對開關S4與S5的電荷注入效應。S4與S5在斷開時,產(chǎn)生的電荷注入效應會使A2和A3的輸出波形有微小失真,但相對于輸出值較小,可以忽略,而且A4采用差動式結構輸入會使S4與S5的電荷注入效應相互抵消,故S4與S5的電荷注入效應不會對最終的輸出Vo產(chǎn)生影響。
    由以上分析可知,通過合理設計模擬開關控制時序,解決了其關斷時引入的電荷注入效應。
3 實現(xiàn)開關時序的相關軟件
3.1 Keil C51簡介

 Keil是德國Keil公司開發(fā)的單片機編譯器。Keil C51是目前最流行的51單片機開發(fā)工具,現(xiàn)在Keil公司的編譯器有支持經(jīng)典80C51和80C51派生產(chǎn)品的版本。新版本μVision2把μVision1用的模擬調(diào)試器dScope與集成開發(fā)環(huán)境無縫地結合起來,界面更友好,使用更方便,支持的單片機品質(zhì)更多。對于使用C語言進行單片機開發(fā)的用戶,Keil C51已成為必備的開發(fā)工具。
    Keil C51軟件是眾多單片機應用開發(fā)的優(yōu)秀軟件之一,Keil C51提供了一個集成開發(fā)環(huán)境IDE(Intergrated Development Environment)?滋Vision,包括C51編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器,支持匯編、PLM語言和C語言的程序設計,界面友好,易學易用。在開發(fā)應用軟件的過程中,編輯、編譯、匯編、連接、調(diào)試等各階段都集成在一個環(huán)境中,先用編輯器編寫程序,再調(diào)用編譯器進行編譯,連接后即可直接運行[5,6]。
    本軟件采用Keil C51進行開發(fā),程序可讀性強。
3.2 Proteus簡介
    Proteus嵌入式系統(tǒng)仿真與開發(fā)平臺是由英國Labcenter Electronics公司開發(fā)的,是目前世界上最先進、最完整的嵌入式系統(tǒng)設計與仿真平臺,是目前唯一能夠?qū)Ω鞣N微處理器進行實時仿真、調(diào)試與測試的EDA工具。Proteus除了具有和其他EDA工具一樣的原理布圖、PCB自動或人工布線及電路仿真的功能外,最大的特點在于其電路仿真是互動的,針對微處理器的應用還可以直接在基于原理圖的虛擬原型上編程,真正實現(xiàn)了沒有硬件目標原形的情況下對系統(tǒng)的調(diào)試、測試、驗證,并實現(xiàn)軟件源碼級的實時調(diào)試,如有顯示及輸出,還能看到運行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等,建立了一個完備的電子設計開發(fā)環(huán)境。Proteus產(chǎn)品系列可以對基于微控制器的設計連同所有的外圍電子器件儀器仿真,用戶甚至可以實時采用諸如LED/LCD、鍵盤、RS232終端等動態(tài)外設模型來對設計進行交互仿真。
    Proteus是一款電路分析與實物仿真軟件,運行于Windows操作系統(tǒng)上,具有實驗資源豐富、實驗周期短、硬件投入少、實驗過程損耗小、與實際設計接近程度大等特點[7-9]。
4 開關時序的設計與仿真
    開關時序設計原理圖如圖4所示,圖中采用80C51芯片,其中管腳XTAL1、XTAL2接時鐘控制器,RST端上電,5個輸出管腳P1.0~P1.4分別控制開關S1、S2、S3、S4和S5,電源VCC為+5 V的直流電源。

4.1 程序設計
    在Keil平臺進行如圖5所示的程序編譯。
    程序代碼如下:
    #include<reg51.h>
    #define uchar unsigned char
    #define uint unsigned  int
    sbit s1=P1^0;                            //控制開關1
    sbit s2=P1^1;                            //控制開關2
    sbit s3=P1^2;                            //控制開關3
    sbit s4=P1^3;                            //控制開關4
    sbit s5=P1^4;                            //控制開關5
    bit flag,flag1,flag2,flag3;
    uchar ds,ds1,ds2,ds3;
    uint jishi;
    void Initialization()                        //初始化函數(shù)
        {
        EA=1;
        ET0=1;
    TMOD=0X02;                    //定時器工作方式為2
    TH0=0x06;                                //定時250 ?滋s
    TL0=0x06;
        TR0=1;
    s1=0;
    s2=1;
    s3=1;
    s4=1;
    s5=1;
    flag1=1;flag2=0;flag3=0;
        }
        void inte() interrupt 1 using 3    //1s中斷處理函數(shù)
         {
         if(++jishi==40)         //時間間隔4000×250 ?滋s=1 s
         {
    jishi=0;
    if(flag1){ds1++;}
    if(flag2){ds2++;}
    if(flag3){ds3++;}
             }
         }
         void main ()
         {
    Initialization();
    while(1)
         {
          if(flag1)
             {
    if(ds1==4){s3=0;}
    if(ds1==11){s5=0;}
    if(ds1==12){s2=0;}
    if(ds1==13){s1=1;}
    if(ds1==20){s4=0;flag1=0;flag2=1;}        
             }
  if(flag2)
             {
    if(ds2==1){s3=1;}
    if(ds2==2){s5=1;}
    if(ds2==9){s2=1;}
    if(ds2==10){s1=0;}
    if(ds2==17){s4=1;flag2=0;flag3=1;ds2=0;}        
             }
          if(flag3)
             {
    if(ds3==7){s3=0;}
    if(ds3==14){s5=0;}
    if(ds3==15){s2=0;}
    if(ds3==16){s1=1;}
    if(ds3==23){s4=0;flag2=1;flag3=0;ds3=0;}        
             }
         }
     }
4.2 仿真
    編寫好程序代碼后將該程序文件加載到當前項目中進行編譯,編譯通過后進行仿真。單擊Debug菜單下的Go菜單項連續(xù)運行程序,再切換至Proteus界面,可看到電路開始仿真運行,結果如圖6所示,實現(xiàn)了預期功能。

    通過對仿真結果和LED實時動作情況的分析,驗證了整個系統(tǒng)的程序與外圍電路設計的正確性,提高了調(diào)試效率。采用該仿真設計方法可以大大簡化硬件電路測試和系統(tǒng)調(diào)試過程,而且使用該方法進行系統(tǒng)虛擬開發(fā)成功后再進行實際制作,可以提高開發(fā)效率,降低開發(fā)成本,提升開發(fā)速度。
參考文獻
[1] 白國花.電容傳感器測量電路的研究與研究[D].太原:中北大學,2005.
[2] 邱桂萍.ECT系統(tǒng)測量電路仿真及其數(shù)據(jù)采集系統(tǒng)設計[D].哈爾濱:哈爾濱理工大學,2007.
[3] 周麗麗. MEMS電容式微加速度計檢測電路研究[D].合肥:中國科學技術大學,2008.
[4] 王雷,王保良,冀海峰,等. 電容傳感器新型微弱電容測量電路[J].傳感技術學報,2002(4):273-277.
[5] 牛昱光.單片機原理與接口技術[M].北京:電子工業(yè)出版社,2008.
[6] 簡獻衷,虞菁,熊曉君,等.基于80C51和KEIL C51的LED點陣顯示系統(tǒng)[J].儀器儀表學報,2005,26(8)增刊:
315-316.
[7] 伍馮潔,謝陳躍,謝斌.Proteus與Keil在單片機開放性實驗中的應用[J].電子測量技術,2008,31(6): 100-104.
[8] 劉映群. Proteus與Keil整合構建單片機虛擬實驗室[J].中國現(xiàn)代教育裝備,2005(8):11-13.
[9] 曹建樹,曾林春,夏云生.基于Proteus和Keil接口的虛擬波形發(fā)生器仿真[J].北京石油化工學院學報,2008,16(3):9-11.


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。