逯久鑫,彭 旋,樊軍慶
(海南大學(xué)機(jī)電學(xué)院 海南 儋州 571737)
單片機(jī)是在20世紀(jì)70年代中期發(fā)展起來(lái)的一種大規(guī)模集成電路芯片,是由中央處理器(CPU)芯片、ROM芯片、RAM芯片和I/O接口以及其他外圍電路等通過(guò)印刷電路板上總線連接成一體的完整的計(jì)算機(jī)系統(tǒng)。具有成本低、體積小、性能穩(wěn)定等特點(diǎn)。信號(hào)發(fā)生器是一種在生產(chǎn)實(shí)踐和科技領(lǐng)域中都有著廣泛應(yīng)用的一種信號(hào)源。傳統(tǒng)的正弦信號(hào)源根據(jù)實(shí)際需要一般價(jià)格昂貴,低頻輸出時(shí)性能不好且不便于自動(dòng)調(diào)節(jié),工程實(shí)用性較差。現(xiàn)利用單片機(jī)的優(yōu)越特性制作一種體積小,使用方便的低頻信號(hào)發(fā)生器。以AT89C51單片機(jī)為核心結(jié)合低速D/A,通過(guò)設(shè)計(jì)與編程實(shí)現(xiàn)了鋸齒波、方波、正弦波的產(chǎn)生及其自由切換以及實(shí)現(xiàn)頻率、相位的可調(diào)與多相波的同時(shí)輸出。
設(shè)計(jì)電路如圖1所示,由波形的控制端口控制何種波形的輸出并使連接在P0口的相應(yīng)指示燈亮。信號(hào)數(shù)據(jù)由P0口輸出,經(jīng)低速D/A、放大電路、濾波電路最后輸出。頻率的調(diào)整信號(hào)由P2口輸入,經(jīng)過(guò)改變相應(yīng)的延時(shí)子程序改變輸出波的頻率,相位的調(diào)整信號(hào)由P2口輸入。而信號(hào)的幅值是通過(guò)改變連接在D/A上的滑動(dòng)變阻器而改變D/A的參考電壓來(lái)實(shí)現(xiàn)的[2]。
圖1 電路圖Fig.1 Circuit diagram
由D/A的模擬輸出公式 Vout=B×VR(VR為常數(shù),由參考電壓 VREF=Vref+-Vref-決定;B 為數(shù)字量,常為一個(gè)二進(jìn)制數(shù),由單片機(jī)輸出給D/A)可知:當(dāng)改變數(shù)字量B時(shí),D/A產(chǎn)生一個(gè)相應(yīng)的Vout。如果單片機(jī)輸出給D/A的B1值由延時(shí)子程序保持一段時(shí)間(如1/2周期T)后再突變?yōu)榱硪粋€(gè)數(shù)值B2并保持相同一段時(shí)間之后再變回B1,循環(huán)上述程序即可產(chǎn)生一個(gè)方波;當(dāng)B3在00H~0FFH線性變化為B4時(shí)(如以 00H開始,每相隔一定的時(shí)間用“INC”指令加1,直至等于B4=0FFH)再突變回B3,此時(shí)Vout也產(chǎn)生一個(gè)線性值,同樣循環(huán)上述程序便可產(chǎn)生鋸齒波;同理,如果將正弦波對(duì)應(yīng)的二進(jìn)制碼放在單片機(jī)的存儲(chǔ)區(qū),通過(guò)“MOVC A,@A+DPTR”不斷取數(shù)據(jù)送P0端口,則在濾波輸出端可得到正弦波信號(hào)[3]。此時(shí)由D/A轉(zhuǎn)換出的波形信號(hào)是一種離散信號(hào)。既所獲得的信號(hào)不是連續(xù)的模擬信號(hào),而是由一個(gè)個(gè)離散的點(diǎn)組成的離散信號(hào)。所以,為了使輸出的波形信號(hào)盡量減少失真,必須要獲得準(zhǔn)確的波形數(shù)據(jù)。為此,需要對(duì)模擬信號(hào)進(jìn)行離散化處理[4]。這里以正弦信號(hào)為例進(jìn)行說(shuō)明。如圖2所示,正弦信號(hào)是由D1,D2,D3……DN這種的點(diǎn)組合成的離散信號(hào)。為了減小輸出信號(hào)的失真度,必須保證組成信號(hào)離散點(diǎn)的個(gè)數(shù),使其盡可能的接近正弦波以滿足失真度滿足使用要求。根據(jù)不同的采樣的多少計(jì)算出相應(yīng)的失真度如表1所示。由表1可知,采樣點(diǎn)越多,失真度越小[5]。離散時(shí)取得的采樣點(diǎn)越多,數(shù)值量化的位數(shù)越多,則用DAC復(fù)現(xiàn)的波形精度越高。但是這時(shí)由于選取的點(diǎn)過(guò)多的話會(huì)影響單片機(jī)的輸出速度(會(huì)直接影響得到的波形的頻率)。由于離散點(diǎn)的原始數(shù)據(jù)存在于程序的表格中,離散點(diǎn)取的過(guò)多會(huì)使表格占用單片機(jī)內(nèi)存過(guò)多。
圖2 正弦波形的離散化Fig.2 Sine wave discretization
表1 采樣點(diǎn)與失真度之間的關(guān)系Tab.1 Relationship between sampling points and the distortion degree
由圖2所示,由于得到的信號(hào)[6]是由一個(gè)個(gè)的離散點(diǎn)組成的離散信號(hào)。此時(shí),一個(gè)點(diǎn)與另一個(gè)點(diǎn)之間的時(shí)間間隔△t1主要是由延時(shí)子程序(其中也包括單片機(jī)執(zhí)行每個(gè)命令所使用的時(shí)間)所控制的。以取256個(gè)點(diǎn)為例,正弦波的周期T=256×△t1當(dāng)延時(shí)子程序所控制的時(shí)間間隔△t1正弦波周期T也就有相應(yīng)的時(shí)間變化。所以基于上述原理,通過(guò)在單片機(jī)的P2.0與P2.1兩端口設(shè)兩個(gè)獨(dú)立按鍵來(lái)實(shí)現(xiàn)延時(shí)子程序所控制的時(shí)間間隔△t1的增大與減少進(jìn)而實(shí)現(xiàn)波形頻率的可調(diào)。以正弦波為例,當(dāng)需要改變波形的初始相位時(shí)即改變波形在t=0時(shí)刻的值。由圖2所示,可看出初始設(shè)定的正弦波在t=0時(shí)刻的值為零。這時(shí)單片機(jī)從查表程序中取出的是以零對(duì)應(yīng)的表中數(shù)據(jù),然后依次向外輸送之后表中的數(shù)據(jù),由此推知,如果在t=0時(shí)輸出與圖2中D1的值所對(duì)應(yīng)的程序表中的數(shù)據(jù),這時(shí)在t=0時(shí)刻的值就由0變?yōu)榱薉1,也就可以看出,正弦波形向左移動(dòng)了一個(gè)單位。
由D/A的模擬輸出公式Vout=B×VR。當(dāng)Vout與B為常量時(shí),改變VR的大小可以相應(yīng)改變Vout,即改變波形的幅值。由電路圖1可以看出,Vref是由外部電源提供一個(gè)+5 V的電壓,這里通過(guò)串聯(lián)一個(gè)滑動(dòng)變阻器R1。通過(guò)改變滑動(dòng)變阻器R1的大小改變VR,當(dāng)VR線性變化時(shí)也就實(shí)現(xiàn)了波形幅值的連續(xù)可調(diào)。
實(shí)際使用過(guò)程中通常會(huì)遇到要使用多波同時(shí)輸出,為了實(shí)現(xiàn)這種功能可以使用3塊低速D/A轉(zhuǎn)換器(包括其后的放大電路與低通濾波電路)連接在同一單片機(jī)上。雖然一塊單片機(jī)不能同時(shí)向3塊D/A輸出其所需要的數(shù)據(jù),但可以通過(guò)單片機(jī)向D/A的控制端口輸送不同的控制信號(hào),是其中的一塊D/A工作另兩塊不工作,并向其中的工作的D/A輸送數(shù)據(jù),然后關(guān)閉第一塊D/A開放第二塊,以此進(jìn)行循環(huán)。三波的幅值是由各D/A的參考電壓Vref決定,參照1.3中敘述的方法,可以改變各自的幅值。這里筆者通過(guò)單片機(jī)給通過(guò)P3.0,P3.1,P3.2 3接口連接相應(yīng)3塊D/A的控制端口。由程序控制P3.0,P3.1,P3.2 端口,依次使 P3.0,P3.1,P3.2 處于低電平,另外兩個(gè)端口處于高電平(連接高電平端口的D/A處于不工作狀態(tài))。使單片機(jī)向3塊D/A逐個(gè)輸送數(shù)據(jù)便可實(shí)現(xiàn)3波同時(shí)輸出。但由于單片機(jī)的主頻限制,這時(shí)會(huì)使輸出波的頻率大大下降。
D/A轉(zhuǎn)換部分選用的是DAC0832。DAC0832是CMOS工藝制造的8位單片D/A轉(zhuǎn)換器,屬于R-2RT型電阻網(wǎng)絡(luò)的8位D/A轉(zhuǎn)換器,建立時(shí)間150 ms,為電流輸出型,并且片內(nèi)帶輸入數(shù)字鎖存器[7]。DAC0832與8031接成的是直通方式。由單片機(jī)的P0口直接把信號(hào)送達(dá) “八位DAC寄存器”,ILE接+5 V,XFER、WR2接地以及 WR1與 CS分別接單片機(jī)的WR與P3.0(當(dāng)使用多片D//A產(chǎn)生3相信號(hào)時(shí),另外兩個(gè)與P3.1與P3.2相接)相接。為提高波形質(zhì)量和負(fù)載能力,后級(jí)處理采用低通濾波器和功率放大電路。濾波電路采用一階低通濾波器,其阻帶特性衰減太慢,一般為-20 dB/10,所以這種電路適用于對(duì)低頻信號(hào)濾波特性要求不高的場(chǎng)合。
主程序的流程圖如圖3所示。子程序流程圖如圖4所示。
圖3 主程序流程圖Fig.3 Flow chart of main program
圖4 子程序流程圖Fig.4 Subroutines flowchart
在Protues繪制電路圖,加載單片機(jī)程序,有如下仿真。
1)不同波形的仿真,如圖5所示。
圖5 不同的波形仿真Fig.5 Different waveform simulation
2)不同頻率的波形,以正弦波為例,如圖6所示。
圖6 不同頻率的波形Fig.6 Waveforms of different frequency
3)改變滑動(dòng)變阻器來(lái)改變波形的幅值以正弦波為例,如圖7所示。
圖7 不同幅值的波形Fig.7 Waveform of different amplitude
4)三相正弦波波同時(shí)輸出以正弦波為例,如圖8所示。
圖8 三相正弦波Fig.8 Three-phase sine wave
由以上仿真結(jié)果可以表明,以單片機(jī)為核心制作的小型低頻的信號(hào)發(fā)生器[8]不僅成功的產(chǎn)生了方波、鋸齒波、正弦波以及多鐘波型的共同產(chǎn)生,并且實(shí)現(xiàn)了頻率與相位的可調(diào),而且波形并無(wú)明顯失真現(xiàn)象。
不足之處就是筆者以12 MHz的晶振進(jìn)行仿真,得到的信號(hào)頻率很低。理論上提高晶振的頻率或是使用更高速的單片機(jī)可以改善低頻的現(xiàn)象。
[1]李道霖,韓緒鵬,肖春芳.正弦信號(hào)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2010,18(12):165-169.
LI Dao-lin,HAN Xu-peng,XIAO Chun-fang.Design and implementation of sinusoidal signal generator[J].Electronic Design Engineering, 2010,18(12):165-169.
[2]胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2004.
[3]雷發(fā)禹,賓淼林,李永枧,等.基于單片機(jī)的信號(hào)發(fā)生器設(shè)計(jì)與仿真[J].邵陽(yáng)學(xué)院學(xué)報(bào):自然科學(xué)版,2009,6(3):39-43.
LEI Fa-yu, BIN Miao-lin, LI Yong-jian,et al.The design and simulation of signal generator based on MCU[J].Journal of Shaoyang University:Natural Science Edition,2009,6(3):39-43.
[4]徐愛鈞.智能化測(cè)量控制儀表原理與設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2004.
[5]徐陽(yáng),鐘寶榮.基于單片機(jī)的低頻信號(hào)發(fā)生器設(shè)計(jì)[J].長(zhǎng)江大學(xué)學(xué)報(bào):自然科學(xué)版,2008,5(3):71-73.
XU Yang,ZHONG Bao-rong.Design of a microcontrollerbased low frequency signal generator[J].Journal of Yangtze University:Natural Science Edition, 2008,5(3):71-73.
[6]李婷婷.絕緣子放電聲信號(hào)研究及污穢度預(yù)測(cè)[J].陜西電力,2010,38(3):38-41.
LI Ting-ting.Study on acoustic emission signal of insulator and ESDD forecasting[J].Shaanxi Electric Power,2010,38(3):38-41.
[7]唐麗麗,何剛,文小森.基于89C51的信號(hào)發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2007(2):76-78.
TANG Li-li,HE Gang,WEN Xiao-sen.Design and implement of signal generator based on 89C51[J].Instrument Technique and Sensor,2007(2):76-78.
[8]安平花,薛安成,畢天姝.調(diào)速系統(tǒng)引入遠(yuǎn)方信號(hào)抑制區(qū)域低頻振蕩可行性研究[J].陜西電力,2009,37(4):1-5.
AN Ping-hua,XUE An-cheng,BI Tian-shu.Feasibility study on governor-side damping controller for inter-area low frequency oscillation of power system with remote signal[J].Shaanxi Electric Power,2009,37(4):1-5.