基于環(huán)形振蕩器、555定時(shí)器和Arduino的數字方波發(fā)生器設計
了解使用環(huán)形振蕩器、基于555定時(shí)器的振蕩器和Arduino生成的方波振蕩器的數字方波發(fā)生器。
本文引用地址:http://dyxdggzs.com/article/202407/461534.htm之前,我們介紹了設計方波振蕩器的概念,即運算放大器(op-amp)和基于晶體管的非穩態(tài)多諧振蕩器的模擬實(shí)現。在本文中,我們將研究實(shí)現方波振蕩器的數字方法,同時(shí)討論其優(yōu)點(diǎn)和局限性。
在深入探討之前,讓我們注意一下我們將分析三個(gè)例子:
基于555定時(shí)器的振蕩器
Arduino產(chǎn)生方波振蕩器
使用環(huán)形振蕩器的方波發(fā)生器
環(huán)形振蕩器具有相當簡(jiǎn)單的架構,它利用一串反相器,最終輸出饋入第一個(gè)輸入,形成一個(gè)環(huán),如圖1所示。
通用環(huán)形振蕩器架構
圖1。通用環(huán)形振蕩器架構
不僅架構簡(jiǎn)單,電路的操作也很簡(jiǎn)單。啟動(dòng)時(shí),假設INV1從邏輯0變?yōu)檫壿?。隨著(zhù)該逆變器的輸出開(kāi)始上升,一旦達到INV2的觸發(fā)點(diǎn),該輸出將開(kāi)始降至邏輯0。這種連鎖反應持續到最終的逆變器INVN,然后輸出反饋到開(kāi)始以維持反應??偟膩?lái)說(shuō),這種反應會(huì )產(chǎn)生持續的振蕩,假設所有逆變器的上升/下降時(shí)間相同,將產(chǎn)生方波輸出。
為了使電路按所述運行,環(huán)中的逆變器數量(圖1中用N表示)必須是奇數。這一要求是必要的,因為如圖1所示,任何反相器INVX的輸出(其中X是偶數)都將具有與INV1的輸出互補的輸出。如果將該值反饋到INV1,則不會(huì )有變化,因此也不會(huì )有振蕩。雖然在這個(gè)簡(jiǎn)單的例子中,我們只使用反相器,但您可以在整個(gè)電路中使用任何邏輯門(mén)。然而,在這個(gè)環(huán)形例子中,必須有奇數個(gè)反相級才能振蕩。
現在,你可能會(huì )問(wèn):電路的哪些方面決定了工作頻率?基本上,每個(gè)逆變器的固有延遲(td)和級數(N)根據以下方程式?jīng)Q定:
由于td通常很小,并且希望將N最小化,因此頻率通常很高,大約為數百MHz甚至GHz。對于低速應用或精確的頻率控制,用戶(hù)通常必須向每個(gè)逆變器的輸出端添加負載,最簡(jiǎn)單的是通過(guò)RC電路,如圖2所示。
帶RC負載的環(huán)形振蕩器
圖2:帶RC負載的環(huán)形振蕩器
向前看,假設所有逆變器在
其中VDD是電源電壓,振蕩頻率變?yōu)椋?/p>
接下來(lái),假設RC>td,我們可以說(shuō)振蕩頻率完全取決于RC時(shí)間常數和級數。
至于優(yōu)點(diǎn),這種設計的簡(jiǎn)單性使其對高速振蕩器設計具有吸引力;然而,對于較低的頻率,很難控制這些。另一個(gè)缺點(diǎn)是,由于高切換速率,這種架構通常功耗很大。
使用555定時(shí)器作為方波發(fā)生器
接下來(lái),我們將討論使用555定時(shí)器創(chuàng )建方波振蕩器。這種通用IC用于:
各種脈沖產(chǎn)生
延誤
時(shí)間安排
振蕩器應用
555定時(shí)器有很多種,由幾家公司開(kāi)發(fā),但我們將重點(diǎn)介紹德州儀器的LM555。數據表第7.4.2節說(shuō)明了定時(shí)器的不穩定操作,正如我們從上一篇文章中所知,這是我們感興趣的。實(shí)現的示意圖如圖3所示。
LM555定時(shí)器設置,用于非穩定操作模式
圖3。LM555定時(shí)器設置為不穩定操作模式。圖片由德州儀器提供
這里,電容器C由電阻器RA和RB充電。一旦達到上觸發(fā)點(diǎn)(在定時(shí)器的情況下,VCC的?),C就會(huì )通過(guò)RB放電至VCC的85%。此時(shí),電容器再次開(kāi)始充電,這種行為會(huì )無(wú)限期地持續下去。由此,我們可以通過(guò)以下方程獲得充電和放電時(shí)間以及振蕩周期:
在這里,我們可以看到,我們不僅可以控制振蕩頻率,還可以控制輸出占空比。然而,這些不能短于tfall,這意味著(zhù)占空比必須大于50%,但如果RB>RA,則可以接近方波占空比。
這種實(shí)現的優(yōu)點(diǎn)是它簡(jiǎn)單,需要最少的硬件,也是低速振蕩器的穩定可靠的解決方案。至于限制,這種設計不適用于需要小于50%的占空比或需要高速的情況。
基于Arduino UNO R3的方波發(fā)生器
最后,我們將討論通過(guò)Arduino實(shí)現振蕩器。在我們的例子中,我們將看看Arduino UNO R3。該板的引腳如圖4所示。
Arduino UNO R3引腳。
圖4。Arduino UNO R3引腳。圖片由Arduino提供[點(diǎn)擊圖片放大]
對于我們的生成器,我們將使用Arduino UNO的數字I/O引腳之一,特別是D7。實(shí)現此解決方案不需要外部硬件,因為這都可以通過(guò)下面顯示的Arduino程序定義:
在上面的代碼片段中,我們聲明了三個(gè)全局變量,允許用戶(hù)設置頻率和占空比。在這個(gè)例子中,我們可以創(chuàng )建一個(gè)占空比為50%的100 Hz輸出,從而產(chǎn)生方波。然后,我們可以使用“pinMode”函數在void設置塊中初始化數字輸出引腳。接下來(lái),我們可以進(jìn)入一個(gè)連續循環(huán),將D7設置為高,并將輸出保持在該值一段時(shí)間,該時(shí)間等于占空比乘以周期。最后,我們可以將輸出設置為邏輯低電平,并在剩余的時(shí)間段內保持信號不變。因此,一旦Arduino打開(kāi),這個(gè)循環(huán)將無(wú)限期地繼續下去。
正如您所看到的,軟件實(shí)現允許在零外部硬件的情況下具有高度的靈活性。雖然這相當簡(jiǎn)單,但我們僅限于A(yíng)rduino的帶寬,除非我們使用外部振蕩器來(lái)推動(dòng)更高的頻率,如果需要高速振蕩器的話(huà)。
評論