1. 引言
信號發生器在教學、試驗、測控等各個領域有十分廣泛的應用,其輸出信號的頻率范圍覆蓋了各個頻段,從甚低頻到甚高頻,操作方式也從手動旋鈕到程控,產生的波形從傳統的正(余)弦波和脈沖波形,發展到現在能產生各種任意波形。以前的信號發生器往往獨占一個機箱,而現在的一些應用中,它只是一塊插在計算機中的擴展卡,還有一些信號發生器設計成一個獨立的小模塊,通過RS-232C或RS-422,RS-485等串行總線和計算機連接。
其實,在許多固定的控制應用中,只要求信號發生器產生單一波形,或可數的幾個波形。如果僅僅要求產生單一的正(余)弦波或者脈沖波形,可以利用傳統的振蕩器電路。當信號頻率有所選擇時,問題仍然比較簡單。但若產生的信號波形比較復雜時,電路的設計也同樣變得很復雜。加之傳統振蕩器電路由于有較大的溫度漂移,需要較長的預熱時間,為達到較高的頻率精度,需仔細調節電路各個參數。
數字頻率合成技術的采用,大大簡化了信號發生器的設計。但在某些特定情況,需要的僅僅是幾個單獨的波形,這時我們可以使用單片機和DAC芯片,用十分簡單的電路產生所需要的波形。
2. 電路設計及編程考慮
單片機簡易信號發生器電路框圖如圖1,僅由一片AT89C2051單片機,一片DAC0832和由運放組成的低通濾波器組成。AT89C2051內部有 2KB的FLASH存儲器,可以保存運行程序和波形參數,128字節的RAM可以用于存放波形參數。由于采用了數字合成技術,可以產生各種簡單或復雜的波形。
工作過程說明如下;(1)決定產生的信號波形;通電穩定工作以后,單片機首先讀取P3.0和P3.1引腳信號,決定程序應跳轉的地址。每個跳轉地址有一個輸出波形。(2)將保存在FLASH中的樣本數據送往DAC0832,供其轉換成模擬電壓。
首先應將波形參數轉換成樣本數據。假若每周期有N個樣本數據,則第K個樣本數據的計算方法為:
DK=127(1+SIN(2πK/N) K=0,1,2,……N-1
由于在實際產生波形的過程中,數據由運行程序逐個取得送出,在產生周期波時是一個循環過程。因此必須考慮程序取數、送數、循環等操作的時間開銷。對于 MCS51系列單片機,在晶振頻率為12MHz時,每條指令的執行時間為1~2μs。為了使波形足夠光滑,每周期的點數應盡可能多,這樣要求單片機發送樣本數據的速率盡量快。由于送數周期的限制,在增加樣本點數時,輸出信號頻率會降低。同時從程序存儲器空間取數時需要較長的時間,當樣本數據的個數不多時,可以把樣本數據先移到RAM中,程序執行時直接從RAM中取數送往DAC,就能增加發送樣本數據的速率。
下面以產生單一4800Hz正弦波為例,說明程序設計過程。參數N的計算見后面的說明。
ORG 0000H
MOV R0,#0
MOV R1,#4
MOV R2,#124
MOV DPTR,#200H
MOV A,#0
MOVD: MOVC A,@A+DPTR ;將樣本數據從FLASH
MOV @R1,A ;移到內部RAM中,
INC R0 ;可以減少送數時間
INC R1
MOV A,R0
DJNZ R2,MOVD
MOV R0,#04
DOUT: MOV A,@R0 ;輪流送數到DAC
MOV P1,A
INC R0
CJNE R0,#128,DOUT
MOV P1,#128 ;從起點開始重新送樣本數據
MOV R0,#04 ;
SJMP DOUT ;送數循環結束
;
ORG 0200H ;樣本數據表
DB 0147
DB 165
……
以上程序中,DOUT標號開始的一段循環程序送樣本數據。該段循環程序指令經過精心選擇,N個樣本數據共用4條指令,執行時間為5μs。但對4800 Hz的信號頻率,信號周期為208.3333μs,計算得到樣本數據的個數N=208.3333/5=41.6667。由于樣本數據的個數不能為小數,可以考慮采用4舍5入,以得到最接近的信號頻率。因此取樣本個數為42,但信號周期變為210μs,信號頻率為4762Hz,頻率誤差很大,達不到使用要求。
為此,可采用多周期綜合技術。多周期綜合的方法就是在計算樣本數據時,將M個周期一并考慮。即N個樣本數據代表了M個信號周期的波形,使每個周期的樣本數與要求值最接近。計算公式如下:
DK=127(1+SIN(2лMK/N) K=0,1,2,3……N-1
為此,需合理確定N和M的值。
M的值可如下確定;取單周期樣本數據個數的小數部分,除1的結果既為M。對f0=4800Hz,可知M恰好等于3。
下面計算N;已知每個樣本數據需要5μs,樣本周期數為3,信號頻率為4800 Hz,則
N=3/4800*1000000/5=125
由此可知樣本數據的計算公式:
DK=127(1+SIN(6л/125)) K=0,1,2……124
實用中,用該信號源產生了4800Hz正弦波,400Hz正弦波、480Hz正弦波和1000Hz方波四種波形。400Hz、480Hz正弦波和1000Hz方波的波形參數計算此處略。實測表明四種信號的頻率誤差都小于0.5Hz。
如果信號頻率比較低,樣本數據很多,就不需要把樣本數據先移到RAM中,而直接從FLASH中取得樣本數據送往DAC。對正弦波來說,當每周期有20個以上的樣本數據時,就有比較好的波形。對于矩形波來說,每周期只需要2個樣本數據。
3. 小結
以上電路雖然簡單,但有比較精確的波形。由于波形參數完全由軟件預先設定,除了產生正弦波、方波以外,還能產生梯形波或sin(x)/x等形狀復雜的波形。可以將電路設計成嵌入式結構,從而在一些工業生產現場得到應用。
參考文獻
1 余永權.ATMEL89系列(MCS-51兼容)FLASH單片機原理及應用.電子工業出版社.1997年
2 蔣煥文,孫續.電子測量.中國計量出版社.1988年
上一篇:單片機外中斷使用方面的問題及解決方法
下一篇:單片機軟件尋址技術介紹
推薦閱讀
史海拾趣
對不起,我無法提供有關ADDtek公司發展的故事。
在電子行業的發展過程中,Bogen Communications Inc公司意識到單打獨斗難以取得長久的成功。因此,公司積極尋求與其他企業和機構的合作,共同開發新技術、新產品。通過與合作伙伴的緊密合作,公司不僅獲得了更多的資源和技術支持,還成功地將產品推向了更廣闊的市場。
為了降低生產成本、提高生產效率,Delus Corp公司不斷優化供應鏈管理。公司建立了完善的供應鏈管理系統,實現了從原材料采購、生產制造到產品銷售的全程監控和管理。同時,公司還與供應商建立了長期穩定的合作關系,確保原材料的穩定供應和質量的可靠性。這些措施的實施,使得公司的運營成本得到了有效降低,生產效率得到了顯著提升。
Blue Giga的創立可以追溯到芬蘭埃斯波的一個科技孵化器。創始人看到了物聯網和短距離無線連接技術的巨大潛力,決定成立一家公司專注于這一領域。初期,Blue Giga面臨著資金緊張、市場認知度低等諸多挑戰,但憑借其卓越的技術和不懈的努力,逐漸在行業中嶄露頭角。
隨著智能家居市場的不斷發展,某智能家居企業面臨著如何將各種智能設備無縫連接、實現高效協同的挑戰。通過引入DFX的設計理念,該企業成功實現了智能家居產品的標準化、模塊化和可擴展性設計。這種設計方式使得不同設備之間可以方便地進行連接和通信,提高了系統的整體性能和用戶體驗。同時,該企業還通過優化生產流程和加強質量控制等手段,確保了產品的穩定性和可靠性。
這些故事雖然基于虛構的情境,但融入了電子行業中常見的實際問題和發展趨勢。通過引入DFX的設計理念,這些企業成功解決了面臨的挑戰,提升了產品競爭力并贏得了市場的認可。
近年來,電子行業正經歷著深刻的變革,傳統半導體市場逐漸飽和,新興領域如物聯網、人工智能等蓬勃發展。面對這一行業變革,AE&ST公司果斷進行轉型升級。公司調整戰略方向,加大在新興領域的研發投入,同時優化生產流程,降低成本。通過一系列的改革措施,AE&ST公司成功實現了從傳統半導體制造商向新興技術領域的轉型。
HELLODSP在廣大網友的支持下,新增如下QQ群,希望大家多多交流,能夠愛惜資源,不要重復加入HELLODSP的群,謝謝! HELLODSP-2808 15877265 HELLODSP-280X 7391152 HELLODSP-C5000-3 65460181 HELLODSP-DM6 ...… 查看全部問答∨ |
|
電路板系統的互連包括:芯片到電路板、PCB板內互連以及PCB與外部器件之間的三類互連。在RF設計中,互連點處的電磁特性是工程設計面臨的主要問題之一,本文介紹上述三類互連設計的各種技巧,內容涉及器件安裝方法、布線的隔離以及減少引線電感的措施 ...… 查看全部問答∨ |
代碼如下。 void uart2Init(void){ SysCtlPeriEnable(SYSCTL_PERIPH_GPIOG); /* 使能UART0所在的GPIOA端口 & ...… 查看全部問答∨ |
之前看過資料,說Mplayer可移植到非X86上,并且Mplayer發行包中包含了對ARM平臺的支持,其源代碼中有針對ARM處理器的優化代碼,本人也Google出很多將Mplayer移植到ARM開發平臺的例子。 現在實驗室中有一臺DSP處理器TMS320DM642,不知道能不能在上 ...… 查看全部問答∨ |
|
這周筆者忙著落實客戶詢問ST,TI 的物料,還有跟進安防監控客戶。遇到了幾個比較有意思的事情和大家分享一下。 一個客戶詢問FLI18532 的芯片,還要求有完整的技術資料,從芯 ...… 查看全部問答∨ |