李龍洲,周碧英,張 鵬
(1.渭南師范學院數理學院,陜西渭南714099;2.渭南師范學院網絡安全與信息化學院,陜西渭南714099)
信號發生器用于產生被測電路所需特定參數的電測試信號[1-3]。在測試、研究或調整電子電路及設備時,為測定電路的一些電參量,如測量頻率響應、噪聲系數,為電壓表定度等,都要求提供符合所定技術條件的電信號,以模擬在實際工作中使用的待測設備的激勵信號。低頻信號發生器在工業自動化生產、交通、水文監測及國防等領域都有廣泛的應用[4-6]。低頻信號的產生有多種方法[7-13],如采用分立元件構成的多諧振蕩器,然后根據具體需要加入積分電路等構成正弦波、矩形波、三角波等波形發生器,也可以使用直接數字合成DDS芯片來產生低頻信號。此外,隨著現代數字集成技術的發展,微型計算機應運而生,具有大容量存儲及可編寫的單片機的出現,打破了傳統硬件設計中數據處理速度慢、可兼容性不強的局限性,使信號產生更加方便。
傳統信號源由分立元件實現的多諧振蕩器及積分電路等構成[14-16],設計電路復雜,頻率精度調節很難控制,并且所使用的芯片價格昂貴、操作復雜。采用AT89C52作為數據存儲單元和控制核心,利用D/A轉換器作為數據的處理單元,再結合單片機軟件編程和硬件電路設計,可以實現對數字信號的轉化和任意波形信號的輸出。操作外接鍵盤的不同按鍵可以實現波形和頻率大小的自由調節,其間波形及頻率可在液晶屏上觀測,并最終在示波器輸出波形。經D/A轉換器轉化得到波形信號受硬件電路影響小,且易于控制。
傳統信號源當需要某一種信號時,需要專門設計相對應的模擬電路及積分等轉換環節,其輸出信號種類有限,且電路復雜,成本高。輸出信號頻率及幅值調節需要借助電位器,當需要某一特定頻率或幅值要求的信號時,不易控制。運用單片機不需要專門設計各種信號發生電路和轉換電路,只需將各種信號的數據存入單片機的存儲器中,當有信號需要的請求時,按下相對應的按鍵,即可得到相對應的輸出信號,并且輸出信號的頻率及幅值直接由程序進行控制,操作簡單。
AT89C52是一種低功耗高性能的CMOS 8位單片機。低頻信號發生器以AT89C52單片機作為核心控制單元。由AT89C52構成的單片機最小系統可以存儲數據及控制程序,并且還可以采集和分析數據首先建立單片機最小系統,其中包括晶振電路及復位電路的選擇,然后運用單片機C語言將多種波形數據存入數據存儲器中,并對其波形種類及頻率進行中斷編程,以便于在需要時選擇相應的信號,此外輸出信號還需經過D/A轉換器、運算放大器等環節的處理。

圖1 系統框圖
圖1為系統框圖。當系統工作時,晶振電路為系統提供正確的工作的時鐘脈沖信號,由按鍵發送需要產生波形的請求,當某一個按鍵按下時,單片機通過程序語言識別按鍵的類型,然后再控制相應的中斷程序開啟,存儲器中存儲的信息或編輯下載的信息經過D/A轉換器形成模擬電流量,電流量再經過一個運算放大器調整得到模擬電壓量,最終輸出可靠的波形信號。當按鍵動作時會立即觸發系統中斷程序,即波形種類的切換或者改變波形的頻率時,均可在顯示屏上顯示。整個工作過程可在顯示屏上進行實時操作與監測。
當工作狀態處于故障狀態時,可通過復位電路的復位按鈕將系統恢復到正常的工作狀態下,即對系統的初始化處理。另一方面,系統的初始化處理也使得某些測量場合下大大節約了時間。
AT89C52是片內有ROM/EPROM的單片機。其整體相當于一個微型計算機系統,具有各種高精度運算及數據存儲單元。AT89C52不僅可以在其存儲器中存入大量數據,而且可對其進行特定的C語言編程,經過微處理器的處理,編程的語言被處理為各種控制信號,進而完成各種指定的操作。AT89C52并非單獨存在進行工作,而是需要加上晶振電路和復位電路才能正常工作。即在單片機最小系統的運行下系統才能正常運行。最小系統中,晶振為AT89C52工作提供可靠的脈沖,復位電路可對AT89C52進行復位操作,從而保證系統可靠的運行。使用AT89C52構成單片機最小系統時,需將其RST引腳及XTAL1/XTAL2引腳分別接上復位電路和晶振電路。復位電路用于對單片機系統的初始化操作,晶振電路為單片機提供正常工作脈沖。
晶振,又名晶體振蕩器,在單片機工作時提供時鐘脈沖,用來表征單片機工作的快慢。晶振中負載電容的取值大小與晶振的諧振頻率密不可分,若要得到較為精準的諧振頻率,只需使并聯在負載電容兩端的電容值與負載電容數值相等即可。一般選15 pF或12.5 pF的電容作為晶振的負載電容,若要再考慮等效輸入電容及裕度等因素,22 pF的電容就能滿足要求。
晶振的負載電容為:

式中:Cd、Cg為晶振兩腳上的等效對地電容,且Cd=Cg;Cic為集成電路內部電容;ΔC為PCB電容。
其中,Cic+ΔC的依經驗取值為4 pF,負載電容為15 pF,所以有:

石英晶振一般選用11.069 2 MHz,是因為波特率一般為整數,這個數值方便取整。由于晶振與單片機的腳XTAL1和腳XTAL2構成的振蕩電路中會產生諧波,為了減弱電路的不穩定因素,即考慮裕度等因素,在晶振的XTAL1/XTAL2引腳處分別接入兩個30 pF的電容接地即可滿足。
系統通上電源后,VCC從0 V緩慢上升到5 V,C1的兩極板間電位差變大,電場增強,從而使更多的電子到達下極板。電路中,電壓在電流方向電位依次降低,當電流流過R1時,將在R1兩端形成一個大于0的電位。隨著時間的增加,電容逐漸飽和,電流會隨之減小,電位也會逐漸減小。從某種意義上來說,該系統能否準確無誤復位,與該電位的大小和持續的時間密切相關。對于AT89C52而言,當RST加高電平的持續時間超過單片機的兩個機器周期,系統就會被復位。
系統復位的時間應大于2個機器周期,即:

由AT89C52的直流特性可知,當RST上的電壓超過0.7Vcc時RST就會認為是高電平。當0.7Vcc的電平持續時間大于2 μs時,系統就會復位。復位電路電源電壓一般選為5 V。RST內電流在該系統內可忽略,所以復位電路可看作是一階RC電路。電容兩端暫態UI關系式如下:

因為uc(∞ )=5 V,uc(0+)=0 V,可得

若RST電壓為uR(t),則

當uR(t)=3.4 V時,t=0.357RC
當且僅當t=0.357RC≥2 μs,系統復位,求解得:

因此復位電路參數R可選用1 kΩ,C可選用22 μF 。
D/A轉換器是把輸入的數字量轉換為與之成正相關的模擬量的器件,輸入為一位一位的二進制數組成的數字量,輸出為模擬量。D/A轉換的目的就是將每一位數字量轉換成相應的模擬量,然后把所有的模擬量迭加起來,得到與數字量一一對應總的模擬量的輸出。
若輸入為D,輸出Vo,就有

其中VREF為基準電壓。
假設數字量輸入已知,則關系如下

D/A轉換器內部有T型解碼網絡。網絡中有R和2R兩種電阻,數字量的多少與支路相關且相等,每個支路由一個R和2R電阻組成,通過電子開關控制。

圖2 T型解碼網絡
圖2為T型解碼網絡。從右往左看,節點n-1、n-2、L、1、0對地等效電阻均為R,兩邊等效電阻都是2R,基準電壓VREF從右往左流經每個節點時,電流都會減小一半。流向運算放大器的反向端的總電流I為分代碼為1的各支路電流之和,即:

整理可得

運放電路的作用是將電流量轉換成電壓量,圖3為運算放大器電路。圖中運算放大器的同向端通過一個小阻值電阻接地,電壓可視為0 V。根據虛短虛斷原則中的虛短,反相端也為0 V,反向輸入端輸入電阻阻值很大,R1和R2相當于串聯,根據串聯電路的特點可知,流過R1的電流與流過R2的電流相等。
流過R1的電流:

流過R2的電流:

圖3 運算放大器電路

根據虛短、虛斷可知:

聯立上述代數方程解得:

上式為運算放大器的輸入輸出關系,括號中部分表示放大器的增益。
運算放大器選用反相放大的方法,R1和R2在這里選用不超過100 kΩ的電阻,R1選用10 kΩ電阻,R2選用10~20 kΩ的可變電阻,該放大器放大倍數為:

即運算放大器增益的取值范圍為:

輸出幅度取值范圍為:

理想運算放大器,當不加輸入信號時,其輸出一定為零。但實際中,若輸入信號為零,輸出并不為零,而是輸出的偏置電壓。當偏置電壓隨時間和溫度變化時,將會使放大器工作發生零飄,影響系統運行的準確性。為此,需要在運算放大器的正相端串聯阻值為100 Ω的電阻R,從而降低零點飄移。
波形與頻率的顯示通過液晶1602實現,LCD1602的正常工作必須借助單片機的控制。首先,LCD1602的數據端需要與單片機的P1口建立連接,使能端RS、RW、E也需與單片機連接,建立連接后,通過運行單片機中下載的程序可以控制液晶屏波形的種類以及波形的頻率的顯示。
液晶顯示LCD1602內部由控制器、驅動器和顯示裝備3部分組成。HD44780作為顯示器的控制核心,設計中用于對波形種類及頻率的顯示。LCD1602在使用之前,一般需要先進行初始化操作,初始化完成后即可進行內容的顯示。顯示時,應先選擇顯示的DDRAM的地址,再選擇顯示的內容。若需要顯示第二行內容,則可繼續設置第二行顯示緩沖區DDRAM的地址,再寫入顯示內容。
根據硬件電路的搭建及測試,可以明顯觀測到利用硬件電路可以輸出預期波形,但輸出的波形不夠平滑,帶有許多的毛刺狀雜波。在電路中,當某一種信號頻率達到其截止頻率時這種信號將會被攔截,即不能再繼續傳遞。為此,需要在運算放大器末端接一個低通濾波裝置來消除毛刺,使得到的波形更加平滑,更加穩定。
低通濾波裝置就是采用這種原理構成的,其截止頻率在-3 db位置由公式20Inx計算得出,其中x為本設計中信號的真實幅值。計算截止頻率f為17 kHz,推算后R6選為100Ω,由公式

可以計算得出電容C3=104 μF
經改進后,輸出波形明顯得到改善,毛刺基本消失。
主程序流程圖如圖4所示。首先將波形的數字量值數組存儲在單片機的一個存儲器中,經復位電路對系統進行初始化處理,當有按鍵進行操作時,按鍵掃描程序被啟動并將對按鍵類型進行判別,當判別為某一功能操作時,相應的中斷服務程序被調用,完成指定命令。一方面,單片機讀取數組中的值并進行各類中斷程序的調用,當允許信號選通時再將數字量送到D/A轉換器中進行處理和加工;另一方面,信號類型及頻率大小在LCD1602液晶顯示屏顯示。
D/A轉換是一個將輸入到轉換器中的數字量數組進行計算,轉換成模擬電流量進而輸出的過程,輸出的電流量無法在示波器上顯示,需經過運算放大電路調整為電壓量。波形的產生是建立在單片機的基礎之上,單片機在控制信號的作用下將存儲的各類波形數據(0xAB)送入D/A轉換器中,其中A和B的取值可能為0~9、a~f。當按鍵被按下后并判斷為頻率加減按鍵后,相應的中斷程序被觸發,即當頻率增加鍵被按下時,每按一次,頻率便會以每次10%的變化增加,相同地,當頻率減小鍵被按下時,每按一次,頻率便會以每次10%的變化減小。直到增加或減小到設定值。液晶顯示器LCD1602是2×16字符型液晶顯示模塊,可以顯示兩行,每行16個字符。LCD1602的數據口與單片機I/O端口直接連接,并通過下載到單片機中的中斷程序直接控制顯示內容。當功能按鍵被操作時,顯示屏中斷程序會被啟動,并伴隨對應按鍵顯示相應的內容,如當對波形信號進行切換時,對應顯示內容也將做出相應切換,整個過程均與按鍵選項保持一致。

圖4 主程序流程
對所設計低頻信號發生器進行測試,外接示波器。表1為各波形測量峰值。調節電位器的大小,取值范圍為1~10 V,隨機取 3 V、5 V、7 V。

表1 各波形測量峰值
當調節時,峰值的波動會有所變化。顯然,當電位器的數值為3 V或7 V時,各個波形輸出峰值的波動較大;當取值為5 V時,波動最小。由此可以得出,系統在電位器取值為5 V時,輸出信號質量最好。

圖5 輸出特性曲線
圖5為輸出特性曲線。峰值的大小與頻率無關,以三角波為例,當頻率增大或者減小的過程中,三角波的峰值不隨其發生變化。當電位器的位置改變時,峰值會隨著發生改變。
圖6~8分別為低頻信號發生器實測輸出鋸齒波、梯形波和三角波形圖。

圖6 鋸齒波輸出波形圖

圖7 梯形波輸出波形圖

圖8 三角波輸出波形圖
以AT89C52單片機為主控核心,設計一種低頻信號發生器的硬件電路和軟件部分。系統通過鍵盤和顯示屏可以選擇不同種類及頻率的波形,波形信號由數字信號轉化得到,可以輸出方波、三角波、正弦波、鋸齒波等多種波形,當需要其它種類的波形時,只需將波形數據下載到單片機中即可,并且頻率易于調節。對系統進行了參數測試,結果表明所設計的低頻信號裝置輸出波形質量好,可靠性高,且波形切換和頻率調節易于控制,具有較高的實用價值。