傅仁軒,王慶華
(廣東工貿(mào)職業(yè)技術(shù)學(xué)院機(jī)電工程學(xué)院,廣東廣州 510510)
信號(hào)發(fā)生器是電子電路設(shè)計(jì)、自動(dòng)控制系統(tǒng)和儀表測(cè)量校正調(diào)試中被廣泛使用的一種信號(hào)發(fā)生裝置和信號(hào)源。正弦信號(hào)是頻率成分最為單一的一種常見信號(hào)源,任何復(fù)雜信號(hào)都可以通過傅里葉變換分解為許多頻率不同、幅度不等的正弦信號(hào)的疊加,應(yīng)用領(lǐng)域非常廣泛。在科學(xué)研究、電子技術(shù)實(shí)驗(yàn)、電子工程設(shè)計(jì)實(shí)驗(yàn)中也經(jīng)常需要輸出方波、三角波、鋸齒波、正弦波、任意波形等信號(hào)發(fā)生器,而傳統(tǒng)的信號(hào)源一般價(jià)格昂貴,自動(dòng)調(diào)節(jié)不靈活。參考文獻(xiàn)[1-8]論述的信號(hào)發(fā)生器幅值固定,只能調(diào)節(jié)頻率,但在科學(xué)研究、工業(yè)控制中經(jīng)常需要幅值可變的信號(hào),以虛擬仿真平臺(tái)設(shè)計(jì)的信號(hào)發(fā)生器實(shí)現(xiàn)了頻率與幅值的雙調(diào)節(jié),既可以用于自動(dòng)化工程的模擬量輸出,也可用于單片機(jī)教學(xué)演示。
信號(hào)發(fā)生器的總體結(jié)構(gòu)框圖如圖1 所示,包括單片機(jī)、波形選擇按鍵、波形設(shè)計(jì)模塊、顯示模塊、波形控制模塊、幅值控制模塊。單片機(jī)[9]是信號(hào)發(fā)生器的控制核心。波形的類型、幅值、頻率通過按鍵進(jìn)行選擇,并在顯示模塊上顯示波形的具體參數(shù)。幅值控制模塊通過單片機(jī)內(nèi)的數(shù)字量經(jīng)D/A 轉(zhuǎn)換、信號(hào)放大,輸出幅值為0~10 V 的信號(hào)。頻率控制模塊通過單片機(jī)內(nèi)的數(shù)字量經(jīng)D/A 轉(zhuǎn)換、二級(jí)信號(hào)放大,輸出頻率可調(diào)的波形信號(hào)。
圖1 信號(hào)發(fā)生器的總體結(jié)構(gòu)框圖
文中設(shè)計(jì)了輸出方波、鋸齒波、三角波、正弦波4種波形的信號(hào)發(fā)生器,重點(diǎn)是幅值可調(diào)和頻率可調(diào),幅值調(diào)節(jié)范圍為1~10 V,頻率調(diào)節(jié)范圍為10~100 Hz。對(duì)于波形選擇設(shè)計(jì)了4 個(gè)功能鍵,分別是波形類型選擇、頻率/幅值切換、頻率/幅值遞增、頻率/幅值遞減。系統(tǒng)能用虛擬示波器顯示輸出信號(hào)的實(shí)際波形,液晶顯示模塊顯示輸出波形的當(dāng)前波形類型、幅值、頻率。
波形發(fā)生器的控制核心是單片機(jī),選用的AT89C51RC2[10]具有32 k 閃存、32 位I/O、256 字節(jié)內(nèi)存,附加1 k XRAM。波形發(fā)生器的控制按不同的功能分為按鍵模塊電路、幅值控制模塊電路、頻率控制模塊電路及顯示模塊電路。
按鍵模塊電路選用中斷方式[11],由于輸出波形時(shí),定時(shí)器以微秒為單位產(chǎn)生中斷的次數(shù)比較頻繁,若按鍵采用查詢方式,則響應(yīng)會(huì)延遲。4 個(gè)按鍵KEY1、KEY2、KEY3、KEY4 分別連接單片機(jī)的P3.4、P3.5、P3.6、P3.7,同時(shí)連接到與門74HC21 的一個(gè)輸入端,與門的輸出連接到單片機(jī)的外部中斷INT0,中斷選擇電平觸發(fā)方式,低電平時(shí)會(huì)觸發(fā)中斷,4 個(gè)按鍵中只要有一個(gè)鍵被按下,就會(huì)拉低INT0,從而產(chǎn)生按鍵中斷。
幅值控制模塊電路如圖2 所示,其主要作用是調(diào)節(jié)輸出電壓值的大小,以滿足實(shí)際電路控制的需要。
圖2 幅值控制模塊電路圖
幅值控制模塊電路由D/A 轉(zhuǎn)換器和運(yùn)算放大器組成。由于輸出波形是模擬信號(hào),而單片機(jī)輸出的是數(shù)字量,因此必須經(jīng)過D/A 轉(zhuǎn)換來實(shí)現(xiàn)。D/A 轉(zhuǎn)換芯片選用DAC0832(即U3),它有兩個(gè)數(shù)據(jù)寄存器,8 位分辨率。由于D/A 轉(zhuǎn)換輸出的模擬量幅值較小,需放大后才能在示波器或其他設(shè)備上顯示和應(yīng)用。放大器選用LM358N(即U7),它包括兩個(gè)獨(dú)立、高增益、內(nèi)部頻率補(bǔ)償?shù)碾p運(yùn)算放大器,適合雙電源工作模式和電壓范圍寬的單電源工作模式。
單片機(jī)的P2 口連接U3的輸入DI,U3的輸出連接U7的第一級(jí)放大器的輸入端。U3的工作方式設(shè)置為直通,參考電壓設(shè)置為-5 V。輸出電壓V1的范圍為0~+5 V,數(shù)字量D與模擬量V1的關(guān)系為:
其中,VREF為參考電壓,電壓值為-5 V,D是P2 口的數(shù)字量,取值為0~255。
通過改變單片機(jī)P2 口輸入的數(shù)字量D的大小來調(diào)節(jié)輸出電壓V1的數(shù)值。如果要求輸出電壓V1為0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,則由式(1)可以計(jì)算出與之相對(duì)應(yīng)的數(shù)字量D分別為:26,51,77,102,128,154,179,205,230,255。若給P2 口輸入數(shù)字量D為任意0~255 的數(shù),則可得到輸出0~+5 V 的任意電壓值V1,從而實(shí)現(xiàn)了輸出電壓V1幅值的調(diào)節(jié)。
頻率控制模塊電路由D/A 轉(zhuǎn)換器、二級(jí)運(yùn)算放大器組成,電路連接見圖3(下半部分)。
圖3 頻率控制模塊電路圖
D/A 轉(zhuǎn)換芯片選用DAC0832(即U4)。運(yùn)算放大器的選用考慮的因素有由于需要輸出正弦波,其信號(hào)放大時(shí)必須采用雙電源供電,否則正弦波的負(fù)半周將被削掉,故選擇雙電源的LM358N 運(yùn)算放大器。
顯示模塊電路由74HC573 芯片和液晶模塊LCD12864 組成,電路連接如圖3(上部分)所示。LCD12864 是一種圖形點(diǎn)陣液晶顯示器,可完成圖形顯示,也可以顯示8×4 個(gè)(16×16 點(diǎn)陣)漢字或者顯示16×4 個(gè)(8×16 點(diǎn)陣)ASCII 碼。顯示的內(nèi)容有4 行:波形類型、頻率、幅值、頻率/幅值的加減,顯示效果如圖4 所示。
圖4 液晶顯示效果圖
74HC573 芯片的作用如下:
單片機(jī)的P0 口既要輸出波形信號(hào)的參數(shù),并顯示在LCD12864A上,也要輸出波形信號(hào)的數(shù)據(jù)給D/A轉(zhuǎn)換器,故通過設(shè)計(jì)鎖存器74HC573(即U2)控制其輸出波形信號(hào)的參數(shù),或輸出波形信號(hào)的數(shù)據(jù)。
電路的連接方式如下:
單片機(jī)的P0 口同時(shí)連接U2的輸入端口和DAC0832(即U4)的輸入DI,給LCD 發(fā)送數(shù)據(jù)時(shí),U4鎖存;給U4發(fā)送數(shù)據(jù)時(shí),LCD 鎖存。U4的工作方式設(shè)置為直通,參考電壓設(shè)置為U7輸出的V1,U4的輸出經(jīng)過LM358N(即U8)二級(jí)放大后輸出V2,U8的第二級(jí)放大接反向比例運(yùn)算電路后放大兩倍,則V2的輸出電壓范圍為V1的兩倍。
系統(tǒng)軟件流程如圖5 所示,按照模塊化設(shè)計(jì),包括主程序、初始化、按鍵處理、顯示、波形生成、定時(shí)中斷等模塊。
圖5 系統(tǒng)軟件流程
初始化程序包括頻率、幅值的初始化,液晶顯示模塊的初始化,定時(shí)器的初始化。按鍵處理程序設(shè)計(jì)4 個(gè)功能鍵,按鍵1 是波形選擇,依次在方波、鋸齒波、三角波、正弦波之間切換;按鍵2 是頻率/幅值選擇,在頻率和幅值之間切換;按鍵3 是遞增鍵,每按一次,頻率按10 Hz 的步長遞增或幅值按1 V 的步長遞增;按鍵4 是遞減鍵,每按一次,頻率按10 Hz 的步長遞減或幅值按1 V 的步長遞減。波形生成程序是軟件設(shè)計(jì)中的重要內(nèi)容,通過改變單片機(jī)的D/A 輸出電壓,可以得到各種類型的電壓波形輸出;通過給定時(shí)器T0 設(shè)定不同的初值,可改變輸出波形的頻率;通過改變單片機(jī)D/A 輸出的峰值電壓,可改變輸出波形的幅值。
不論生成哪種類型的波形,首先要確定一個(gè)周期的采樣次數(shù),為了獲得較好的波形,每個(gè)周期設(shè)計(jì)采樣256 次。其次要計(jì)算單片機(jī)輸出D/A 數(shù)字值的最大值,DAC0832 是8 位轉(zhuǎn)換器,最大值為255。因51 單片機(jī)的運(yùn)算速度有限,若在輸出數(shù)據(jù)時(shí)計(jì)算其值,因占用CPU 時(shí)間不能滿足波形的頻率要求,故預(yù)先計(jì)算出256個(gè)采樣點(diǎn)的數(shù)字量,并存入各類波形的數(shù)組中。同時(shí)將各種頻率對(duì)應(yīng)的定時(shí)器T0 的初值計(jì)算出來,保存到頻率數(shù)組中等待調(diào)用。
方波、鋸齒波、三角波生成方法比較簡單,所以下面僅說明產(chǎn)生正弦波形時(shí)D/A的數(shù)據(jù)計(jì)算過程。函數(shù)表達(dá)式:y=sinx,將其幅值擴(kuò)大變?yōu)椋簓=128 sinx,為使y不出現(xiàn)負(fù)值,上移128 后變?yōu)椋簓=128 sinx+128,在2π范圍內(nèi)有256 個(gè)采樣點(diǎn),則采樣點(diǎn)i對(duì)應(yīng)的數(shù)據(jù)為:
當(dāng)i在0~255 變化時(shí)就可以得到256 個(gè)采樣點(diǎn),將得到的256 個(gè)點(diǎn)的數(shù)據(jù)保存到數(shù)組中以供調(diào)用。
定時(shí)器T0 中斷程序?qū)崿F(xiàn)輸出波形的頻率控制,改變定時(shí)器初值即可改變輸出波形的頻率,晶振頻率為12 MHz,單片機(jī)的機(jī)器周期為1 μs,若要輸出10 Hz 的正弦波,則它的周期為1/10 s=100 ms=100 000 μs,一個(gè)周期被分成256 個(gè)點(diǎn),每2 個(gè)采樣點(diǎn)之間的時(shí)間為100 000/256=390 μs,即定時(shí)器T0 每390 μs產(chǎn)生1個(gè)中斷,并輸出1個(gè)數(shù)據(jù)點(diǎn),則輸出256個(gè)采樣點(diǎn)就可以實(shí)現(xiàn)10 Hz 的頻率輸出正弦波。定時(shí)器T0 的初始值預(yù)先可計(jì)算出來并存入數(shù)組,可以節(jié)省CPU 時(shí)間。初值計(jì)算式:65 536-(1 000 000/(10+i*10)/256),i取值為0~9,對(duì)應(yīng)頻率為10~100 Hz。
完成了硬件設(shè)計(jì)和軟件程序編程后,采用Proteus 軟件[12-16]對(duì)波形生成電路和程序進(jìn)行仿真。
系統(tǒng)仿真選用Proteus 軟件,它是一款電路設(shè)計(jì)與仿真軟件,包括ISIS、ARES 等軟件模塊。ISIS 模塊用來完成電路原理的布圖和仿真,既可以對(duì)模擬電路仿真、數(shù)字電路進(jìn)行仿真,也可以對(duì)單片機(jī)及其外圍電路組成的系統(tǒng)仿真。它提供了各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器、電壓表、電流表等。使用Proteus 軟件仿真大大節(jié)省了時(shí)間和開發(fā)費(fèi)用,在軟件仿真通過后再制作印刷電路板進(jìn)行電路實(shí)驗(yàn)。
程序經(jīng)過Keil 編譯器生成執(zhí)行文件,下載到Proteus 軟件的CPU 內(nèi),用虛擬示波器觀察各種信號(hào)波形,虛擬示波器可以同時(shí)觀察4 個(gè)通道輸入信號(hào)的波形,通過按鍵或修改單片機(jī)的輸入值可以得到不同幅值、不同頻率的波形,測(cè)試輸出波形的頻率和幅值。圖6(a)是幅值為2 V,頻率為10 Hz 的正弦波仿真圖;圖6(b)是幅值為2 V,頻率為80 Hz的正弦波仿真圖;圖6(c)是幅值為9 V,頻率為80 Hz的正弦波仿真圖。
圖6 正弦波仿真圖
文中設(shè)計(jì)了幅值和頻率均可調(diào)節(jié)的信號(hào)發(fā)生器,通過Proteus 仿真平臺(tái)的虛擬示波器顯示經(jīng)按鍵選擇的波形,LCD 顯示波形的類型、幅值、頻率,驗(yàn)證了信號(hào)發(fā)生器的電路設(shè)計(jì)合理、生成波形軟件的程序運(yùn)行穩(wěn)定。輸出幅值可調(diào)的信號(hào)在工業(yè)控制中應(yīng)用廣泛,如用于變頻調(diào)速,通過輸出電壓的大小控制變頻器的頻率高低,以達(dá)到調(diào)速的目的。另外,利用Proteus 仿真平臺(tái),在單片機(jī)教學(xué)實(shí)驗(yàn)中大大減少了硬件制作的成本和操作難度,解決了綜合實(shí)驗(yàn)、設(shè)計(jì)實(shí)驗(yàn)及創(chuàng)新實(shí)驗(yàn)中的不足和沒有物理原型就不能實(shí)驗(yàn)的難題。