三天前一個(gè)同學(xué)在微信公眾號(hào)提了關(guān)于在?模擬課程中的問題[1]?,即要求設(shè)計(jì)一個(gè)系統(tǒng),輸入一個(gè)正弦波,可以輸出一個(gè)二倍頻的三角波。三角波的幅值、占空比(上升沿、下降沿的時(shí)間)可以被改變。
在前天給出了一個(gè)?信號(hào)轉(zhuǎn)換的解題思路[2]?,并在昨天?對前面的思路進(jìn)行了物理仿真?驗(yàn)證,結(jié)果可以看到這個(gè)簡單的思路還存在著不少的問題。
?
▲ 正弦波轉(zhuǎn)換成倍頻三角波,并且占空比、幅值可以調(diào)節(jié)
?
這些問題歸納起來主要有以下幾條:
- 控制量之間的耦合,特別是頻率,占空比對輸出信號(hào)幅值的影響;頻率對于占空比的影響雖然經(jīng)過改進(jìn)之后有所解耦,還是會(huì)有部分的影響;輸出三角波存在失真。這主要是最后一級從方波到三角波轉(zhuǎn)換的過程中,對于信號(hào)的直流分量的變化與波形失真之間的關(guān)系;最后一點(diǎn),也是最重要的一點(diǎn),就是電路非常復(fù)雜。
- ?
?
▲ 三角波的占空比獨(dú)立可調(diào)整
?
估計(jì)這兩天看過推文的同學(xué)開始嘀咕,這個(gè)問題,如果使用數(shù)字電路,特別是使用一個(gè)單片機(jī)就可以輕輕松松的搞定。的確這也反映出使用數(shù)字電路和模擬電路在對待同樣的問題上的迥然差別。
在模擬電子中,信號(hào)都是看做是在時(shí)間和幅值的連續(xù)變化的模擬量,對于信號(hào)處理的手段大多是進(jìn)行倍乘、積分、微分、比較整形等方法。另外,系統(tǒng)必須滿足因果關(guān)系。在此過程中,信號(hào)的幅值、頻譜寬度等會(huì)受到電子線路中器件的限制。
▲ 三角波的幅度獨(dú)立可以調(diào)整
?
當(dāng)然,還有非常重要的一個(gè)方面就是方案會(huì)受到器件的非線性、溫度漂移、以及無處不在的干擾的影響。這就使得方案在精度、穩(wěn)定性參數(shù)變化范圍等方面受到影響。
那么改成數(shù)字電路,特別是使用 MCU,DSP,FPGA 等可編程器件,就會(huì)在改進(jìn)很多。
比如使用一款 STC 的單片機(jī) STC8G1K08,價(jià)格僅僅只有 1.3 塊人民幣,包括有眾多的電路外設(shè)。其中的模擬比較器可以將輸入正弦波變成方波,并進(jìn)一步測對應(yīng)的信號(hào)的周期。雖然它沒有 DA 輸出,但高速的 PWM 輸出功能通過濾波也可以形成所需要的信號(hào)。
▲ 使用 STC8G1K08 單片機(jī)實(shí)現(xiàn)相同的功能
?
使用數(shù)字器件完成同樣的信號(hào)轉(zhuǎn)換問題,是將信號(hào)分解成等時(shí)間間隔的脈沖信號(hào)(也就是對信號(hào)進(jìn)行采樣),為了能夠使用有限位數(shù)的數(shù)字表示這些采樣,還需要對信號(hào)的幅值進(jìn)行量化(離散化)。只要保證時(shí)間和幅值的離散化足夠小,就可以逼近模擬信號(hào)。
將輸入的參考正弦波送入到單片機(jī)的比較器管腳,內(nèi)部完成過零比較中斷,測量得到對應(yīng)正弦信號(hào)的半周期。然后在根據(jù)設(shè)定的三角波的占空比以及幅值,生成對應(yīng)三角波輸出 DA 轉(zhuǎn)換的數(shù)據(jù)。
▲?利用 STC8G1K 內(nèi)部比較器將輸入的正弦波轉(zhuǎn)換成方波
?
通過定時(shí)器,按照一定速率(5kHz)將三角波的波形數(shù)據(jù)送到 PWM 定時(shí)器,外部在配合一個(gè)簡單的 RC 低通濾波器,便可以獲得對應(yīng)的二倍頻三角波形了。
在本文前面的的動(dòng)圖就是這個(gè)單片機(jī)將輸入正弦波信號(hào)進(jìn)行轉(zhuǎn)換后的波形。該方案中,三角波信號(hào)的頻率、占空比、幅值之間的調(diào)節(jié)就不在有任何耦合,可以獨(dú)立的進(jìn)行調(diào)節(jié)。
▲ 模擬方案與單片機(jī)方案
?
由于受到單片機(jī)本身 RAM 容量、CPU 頻率、PWM 分辨率的影響,這個(gè)方案對于信號(hào)轉(zhuǎn)換有一定的限制:
- 三角波的占空比從 0~100%,分成 100 個(gè)等級進(jìn)行調(diào)節(jié);三角波的幅值從 0~255,分成 256 個(gè)等級進(jìn)行調(diào)節(jié);三角波的頻率從 5.6Hz~250Hz。
過低的頻率則需要內(nèi)部有更大的 RAM 來存儲(chǔ)輸出波形的數(shù)據(jù);更高的頻率則要求內(nèi)部 PWM,CPU 的頻率要更高才行。
比如,下圖顯示了三角波的頻率達(dá)到 500Hz 時(shí),輸出波形中就包含了明顯變形失真。這是因?yàn)樵谝粋€(gè)周期內(nèi)之后十幾個(gè)采樣點(diǎn)輸出。
▲ 高頻下對應(yīng)的輸出三角波的形狀
?
在現(xiàn)代的一些電子線路中,除了微弱信號(hào)、強(qiáng)功率信號(hào)、超高頻信號(hào)以及與人的感知交互的等場合,還需要模擬電路設(shè)計(jì)。越來越多的領(lǐng)域則逐步轉(zhuǎn)向數(shù)字可編程電子線路來完成對信號(hào)的處理。
當(dāng)然了,設(shè)計(jì)一個(gè)可以沿著黑線行進(jìn)的智能車,如果只允許使用模擬電路的方案,不允許使用 MCU,你覺得可能嗎?
如果你想不到答案的話,也許下面這個(gè)黑板上的電路你可以仔細(xì)看一下了。這是只使用模擬器件就可以完成巡線機(jī)器人的電路。最后就只剩下一個(gè)問題,這種使用模擬電路搭建的自主巡線車模還能被稱為智能車嗎?
▲ 只是用一個(gè)模擬器件便可以讓車模沿著線行進(jìn)
?
本文中所涉及到的 STC 單片機(jī)進(jìn)行信號(hào)轉(zhuǎn)換的硬軟件文件可以從以下鏈接下載:
- 實(shí)驗(yàn) AD 設(shè)計(jì)文件和 C51 程序[3]
參考資料
[1]模擬課程中的問題:?https://zhuoqing.blog.csdn.net/article/details/106240267
[2]信號(hào)轉(zhuǎn)換的解題思路:?https://zhuoqing.blog.csdn.net/article/details/106293296
[3]實(shí)驗(yàn) AD 設(shè)計(jì)文件和 C51 程序:?https://download.csdn.net/download/zhuoqingjoking97298/12453886