基于环形振荡器、555定时器和Arduino的数字方波发生器设计

时间:2024-07-31来源:EEPW编译

了解使用环形振荡器、基于555定时器的振荡器和Arduino生成的方波振荡器的数字方波发生器。

之前,我们介绍了设计方波振荡器的概念,即运算放大器(op-amp)和基于晶体管的非稳态多谐振荡器的模拟实现。在本文中,我们将研究实现方波振荡器的数字方法,同时讨论其优点和局限性。

在深入探讨之前,让我们注意一下我们将分析三个例子:

环形振荡器

基于555定时器的振荡器

Arduino产生方波振荡器

使用环形振荡器的方波发生器

环形振荡器具有相当简单的架构,它利用一串反相器,最终输出馈入第一个输入,形成一个环,如图1所示。

通用环形振荡器架构

1.png

图1。通用环形振荡器架构

不仅架构简单,电路的操作也很简单。启动时,假设INV1从逻辑0变为逻辑1。随着该逆变器的输出开始上升,一旦达到INV2的触发点,该输出将开始降至逻辑0。这种连锁反应持续到最终的逆变器INVN,然后输出反馈到开始以维持反应。总的来说,这种反应会产生持续的振荡,假设所有逆变器的上升/下降时间相同,将产生方波输出。

为了使电路按所述运行,环中的逆变器数量(图1中用N表示)必须是奇数。这一要求是必要的,因为如图1所示,任何反相器INVX的输出(其中X是偶数)都将具有与INV1的输出互补的输出。如果将该值反馈到INV1,则不会有变化,因此也不会有振荡。虽然在这个简单的例子中,我们只使用反相器,但您可以在整个电路中使用任何逻辑门。然而,在这个环形例子中,必须有奇数个反相级才能振荡。

现在,你可能会问:电路的哪些方面决定了工作频率?基本上,每个逆变器的固有延迟(td)和级数(N)根据以下方程式决定:

 2.png

由于td通常很小,并且希望将N最小化,因此频率通常很高,大约为数百MHz甚至GHz。对于低速应用或精确的频率控制,用户通常必须向每个逆变器的输出端添加负载,最简单的是通过RC电路,如图2所示。

带RC负载的环形振荡器

 3.png

图2:带RC负载的环形振荡器

向前看,假设所有逆变器在

 4.png

其中VDD是电源电压,振荡频率变为:

 5.png

接下来,假设RC>td,我们可以说振荡频率完全取决于RC时间常数和级数。

至于优点,这种设计的简单性使其对高速振荡器设计具有吸引力;然而,对于较低的频率,很难控制这些。另一个缺点是,由于高切换速率,这种架构通常功耗很大。

使用555定时器作为方波发生器

接下来,我们将讨论使用555定时器创建方波振荡器。这种通用IC用于:

各种脉冲产生

延误

时间安排

振荡器应用

555定时器有很多种,由几家公司开发,但我们将重点介绍德州仪器的LM555。数据表第7.4.2节说明了定时器的不稳定操作,正如我们从上一篇文章中所知,这是我们感兴趣的。实现的示意图如图3所示。

LM555定时器设置,用于非稳定操作模式

 6.png

图3。LM555定时器设置为不稳定操作模式。图片由德州仪器提供

这里,电容器C由电阻器RA和RB充电。一旦达到上触发点(在定时器的情况下,VCC的⅔),C就会通过RB放电至VCC的85%。此时,电容器再次开始充电,这种行为会无限期地持续下去。由此,我们可以通过以下方程获得充电和放电时间以及振荡周期:

 7.png

在这里,我们可以看到,我们不仅可以控制振荡频率,还可以控制输出占空比。然而,这些不能短于tfall,这意味着占空比必须大于50%,但如果RB>RA,则可以接近方波占空比。

这种实现的优点是它简单,需要最少的硬件,也是低速振荡器的稳定可靠的解决方案。至于限制,这种设计不适用于需要小于50%的占空比或需要高速的情况。

基于Arduino UNO R3的方波发生器

最后,我们将讨论通过Arduino实现振荡器。在我们的例子中,我们将看看Arduino UNO R3。该板的引脚如图4所示。

Arduino UNO R3引脚。

 8.png

图4。Arduino UNO R3引脚。图片由Arduino提供[点击图片放大]

对于我们的生成器,我们将使用Arduino UNO的数字I/O引脚之一,特别是D7。实现此解决方案不需要外部硬件,因为这都可以通过下面显示的Arduino程序定义:

 9.png

在上面的代码片段中,我们声明了三个全局变量,允许用户设置频率和占空比。在这个例子中,我们可以创建一个占空比为50%的100 Hz输出,从而产生方波。然后,我们可以使用“pinMode”函数在void设置块中初始化数字输出引脚。接下来,我们可以进入一个连续循环,将D7设置为高,并将输出保持在该值一段时间,该时间等于占空比乘以周期。最后,我们可以将输出设置为逻辑低电平,并在剩余的时间段内保持信号不变。因此,一旦Arduino打开,这个循环将无限期地继续下去。

正如您所看到的,软件实现允许在零外部硬件的情况下具有高度的灵活性。虽然这相当简单,但我们仅限于Arduino的带宽,除非我们使用外部振荡器来推动更高的频率,如果需要高速振荡器的话。


关键词: 环形振荡器 555定时器 Arduino 数字方波发生器

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版