新聞中心

EEPW首頁(yè) > 元件/連接器 > 設(shè)計(jì)應(yīng)用 > 基于環(huán)形振蕩器、555定時(shí)器和Arduino的數(shù)字方波發(fā)生器設(shè)計(jì)

基于環(huán)形振蕩器、555定時(shí)器和Arduino的數(shù)字方波發(fā)生器設(shè)計(jì)

作者: 時(shí)間:2024-07-31 來(lái)源:EEPW編譯 收藏

了解使用、基于的振蕩器和生成的方波振蕩器的

本文引用地址:http://www.butianyuan.cn/article/202407/461534.htm

之前,我們介紹了設(shè)計(jì)方波振蕩器的概念,即運(yùn)算放大器(op-amp)和基于晶體管的非穩(wěn)態(tài)多諧振蕩器的模擬實(shí)現(xiàn)。在本文中,我們將研究實(shí)現(xiàn)方波振蕩器的數(shù)字方法,同時(shí)討論其優(yōu)點(diǎn)和局限性。

在深入探討之前,讓我們注意一下我們將分析三個(gè)例子:

基于的振蕩器

產(chǎn)生方波振蕩器

使用的方波發(fā)生器

環(huán)形振蕩器具有相當(dāng)簡(jiǎn)單的架構(gòu),它利用一串反相器,最終輸出饋入第一個(gè)輸入,形成一個(gè)環(huán),如圖1所示。

通用環(huán)形振蕩器架構(gòu)

1.png

圖1。通用環(huán)形振蕩器架構(gòu)

不僅架構(gòu)簡(jiǎn)單,電路的操作也很簡(jiǎn)單。啟動(dòng)時(shí),假設(shè)INV1從邏輯0變?yōu)檫壿?。隨著該逆變器的輸出開(kāi)始上升,一旦達(dá)到INV2的觸發(fā)點(diǎn),該輸出將開(kāi)始降至邏輯0。這種連鎖反應(yīng)持續(xù)到最終的逆變器INVN,然后輸出反饋到開(kāi)始以維持反應(yīng)??偟膩?lái)說(shuō),這種反應(yīng)會(huì)產(chǎn)生持續(xù)的振蕩,假設(shè)所有逆變器的上升/下降時(shí)間相同,將產(chǎn)生方波輸出。

為了使電路按所述運(yùn)行,環(huán)中的逆變器數(shù)量(圖1中用N表示)必須是奇數(shù)。這一要求是必要的,因?yàn)槿鐖D1所示,任何反相器INVX的輸出(其中X是偶數(shù))都將具有與INV1的輸出互補(bǔ)的輸出。如果將該值反饋到INV1,則不會(huì)有變化,因此也不會(huì)有振蕩。雖然在這個(gè)簡(jiǎn)單的例子中,我們只使用反相器,但您可以在整個(gè)電路中使用任何邏輯門(mén)。然而,在這個(gè)環(huán)形例子中,必須有奇數(shù)個(gè)反相級(jí)才能振蕩。

現(xiàn)在,你可能會(huì)問(wèn):電路的哪些方面決定了工作頻率?基本上,每個(gè)逆變器的固有延遲(td)和級(jí)數(shù)(N)根據(jù)以下方程式?jīng)Q定:

 2.png

由于td通常很小,并且希望將N最小化,因此頻率通常很高,大約為數(shù)百M(fèi)Hz甚至GHz。對(duì)于低速應(yīng)用或精確的頻率控制,用戶通常必須向每個(gè)逆變器的輸出端添加負(fù)載,最簡(jiǎn)單的是通過(guò)RC電路,如圖2所示。

帶RC負(fù)載的環(huán)形振蕩器

 3.png

圖2:帶RC負(fù)載的環(huán)形振蕩器

向前看,假設(shè)所有逆變器在

 4.png

其中VDD是電源電壓,振蕩頻率變?yōu)椋?/p>

 5.png

接下來(lái),假設(shè)RC>td,我們可以說(shuō)振蕩頻率完全取決于RC時(shí)間常數(shù)和級(jí)數(shù)。

至于優(yōu)點(diǎn),這種設(shè)計(jì)的簡(jiǎn)單性使其對(duì)高速振蕩器設(shè)計(jì)具有吸引力;然而,對(duì)于較低的頻率,很難控制這些。另一個(gè)缺點(diǎn)是,由于高切換速率,這種架構(gòu)通常功耗很大。

使用作為方波發(fā)生器

接下來(lái),我們將討論使用555定時(shí)器創(chuàng)建方波振蕩器。這種通用IC用于:

各種脈沖產(chǎn)生

延誤

時(shí)間安排

振蕩器應(yīng)用

555定時(shí)器有很多種,由幾家公司開(kāi)發(fā),但我們將重點(diǎn)介紹德州儀器的LM555。數(shù)據(jù)表第7.4.2節(jié)說(shuō)明了定時(shí)器的不穩(wěn)定操作,正如我們從上一篇文章中所知,這是我們感興趣的。實(shí)現(xiàn)的示意圖如圖3所示。

LM555定時(shí)器設(shè)置,用于非穩(wěn)定操作模式

 6.png

圖3。LM555定時(shí)器設(shè)置為不穩(wěn)定操作模式。圖片由德州儀器提供

這里,電容器C由電阻器RA和RB充電。一旦達(dá)到上觸發(fā)點(diǎn)(在定時(shí)器的情況下,VCC的?),C就會(huì)通過(guò)RB放電至VCC的85%。此時(shí),電容器再次開(kāi)始充電,這種行為會(huì)無(wú)限期地持續(xù)下去。由此,我們可以通過(guò)以下方程獲得充電和放電時(shí)間以及振蕩周期:

 7.png

在這里,我們可以看到,我們不僅可以控制振蕩頻率,還可以控制輸出占空比。然而,這些不能短于tfall,這意味著占空比必須大于50%,但如果RB>RA,則可以接近方波占空比。

這種實(shí)現(xiàn)的優(yōu)點(diǎn)是它簡(jiǎn)單,需要最少的硬件,也是低速振蕩器的穩(wěn)定可靠的解決方案。至于限制,這種設(shè)計(jì)不適用于需要小于50%的占空比或需要高速的情況。

基于 UNO R3的方波發(fā)生器

最后,我們將討論通過(guò)Arduino實(shí)現(xiàn)振蕩器。在我們的例子中,我們將看看Arduino UNO R3。該板的引腳如圖4所示。

Arduino UNO R3引腳。

 8.png

圖4。Arduino UNO R3引腳。圖片由Arduino提供[點(diǎn)擊圖片放大]

對(duì)于我們的生成器,我們將使用Arduino UNO的數(shù)字I/O引腳之一,特別是D7。實(shí)現(xiàn)此解決方案不需要外部硬件,因?yàn)檫@都可以通過(guò)下面顯示的Arduino程序定義:

 9.png

在上面的代碼片段中,我們聲明了三個(gè)全局變量,允許用戶設(shè)置頻率和占空比。在這個(gè)例子中,我們可以創(chuàng)建一個(gè)占空比為50%的100 Hz輸出,從而產(chǎn)生方波。然后,我們可以使用“pinMode”函數(shù)在void設(shè)置塊中初始化數(shù)字輸出引腳。接下來(lái),我們可以進(jìn)入一個(gè)連續(xù)循環(huán),將D7設(shè)置為高,并將輸出保持在該值一段時(shí)間,該時(shí)間等于占空比乘以周期。最后,我們可以將輸出設(shè)置為邏輯低電平,并在剩余的時(shí)間段內(nèi)保持信號(hào)不變。因此,一旦Arduino打開(kāi),這個(gè)循環(huán)將無(wú)限期地繼續(xù)下去。

正如您所看到的,軟件實(shí)現(xiàn)允許在零外部硬件的情況下具有高度的靈活性。雖然這相當(dāng)簡(jiǎn)單,但我們僅限于Arduino的帶寬,除非我們使用外部振蕩器來(lái)推動(dòng)更高的頻率,如果需要高速振蕩器的話。




評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉