如何使用Arduino开发板制作函数生成器(波形发生器)

对于喜欢偶尔鼓捣电子产品的工程师来说,他们都希望能有自己的实验室。万用表、钳形表、示波器、lcr表、函数发生器、双模电源和自动变压器都是实验室的基本配置。虽然所有这些都可以购买,但我们也可以轻松地自行制作,如函数发生器和双模电源。
在本篇文章中,我们将学习如何使用arduino开发板快速轻松地制作自己的函数生成器。该函数发生器又称波形发生器,可产生频率范围为1hz至2mhz的方波(5v / 0v),波形频率可通过旋钮控制,占空比固定为50%,但在本文中也很容易改变。除此之外,波形发生器还可以通过频率控制产生正弦波。请注意,此波形发生器不是工业级的,不能用于严格的测试。但除此之外,它将为所有业余爱好项目派上用场,您无需等待数周的运输。还有什么比使用我们自己制作的设备更有趣。
所需的材料
● arduino nano开发板
● 字符型图形点阵液晶1602
● 旋转编码器
● 电阻(5.6k,10k)
● 电容(0.1uf)
● 焊接套件
电路原理图
该arduino函数发生器的完整电路图如下所示。正如您所看到的,我们使用arduino nano开发板作为项目的主控,1602 lcd显示当前正在生成的频率值。我们还有一个旋转编码器,可以帮助我们设置频率。
整个设备由arduino自身的usb端口供电。我之前使用过的连接由于某些原因并没有达到要求,我们将在本文后面讨论这些原因。因此,我不得不通过改变引脚顺序来接线。无论如何,你不会有任何问题,因为它全部整理好,只需仔细按照电路知道哪个引脚连接到什么。您还可以参考下表来验证您的连接。
arduino引脚 连接到
d14 连接到lcd的rs
d15 连接到lcd的rn
d4 连接到lcd的d4
d3 连接到lcd的d5
d6 连接到lcd的d6
d7 连接到lcd的d7
d10 连接到旋转编码器的2脚
d11 连接到旋转编码器的3脚
d12 连接到旋转编码器的4脚
d9 输出方波
d2 连接到arduino的d9
d5 输出spwm然后转换为正弦
电路非常简单;我们在引脚d9上产生方波,可以这样使用,该方波的频率由旋转编码器控制。然后为了获得正弦波,我们在引脚d5上产生spwm信号,其频率必须与pwm频率相关,因此我们将这个pwm信号提供给引脚d2作为中断,然后使用isr来控制正弦波的频率。
您可以在面包板上构建电路,也可以制作一个pcb。但我决定将它焊接在perf板上以快速完成工作并使其长期可靠使用。所有连接完成后,我的电路板看起来像这样。
如果您想了解更多关于如何使用arduino生成pwm和正弦波的信息,请阅读以下段落,或者您可以直接向下滚动到编程arduino部分。
产生变频方波
使用arduino的人可能很熟悉arduino只需使用模拟写入函数即可生成pwm信号。但是这个函数仅限于控制pwm信号的占空比而不是信号的频率。但是对于波形发生器,我们需要一个可以控制频率的pwm信号。这可以通过直接控制arduino的定时器并根据它切换gpio引脚来完成。但是有一些预先构建的库可以完全相同并且可以这样使用。我们使用的库是arduino pwm频率库。我们将在代码部分讨论有关此库的更多信息。
这个库也有一些缺点,因为库改变了arduino中默认的timer 1和timer 2设置。因此,您将无法在arduino上再使用伺服库或任何其他与计时器相关的库。引脚9、10、11和13上的模拟写入函数也使用定时器1和定时器2,因此您将无法在这些引脚上产生spwm。
这个库的优点是它不会干扰arduino的定时器0,其比定时器1和定时器2更重要。因此你可以自由地使用延迟函数和millis()函数而没有任何问题。引脚5和6也由定时器0控制,因此我们在这些引脚上使用模拟写或伺服控制操作时不会遇到问题。最初花了一些时间才弄清楚这一点,这就是为什么接线搞砸了。
使用arduino生成正弦波
我们知道微控制器是数字设备,它们不能仅仅通过编码产生正弦波。但是,在从微控制器获得正弦波的两种流行方法中,一种是使用dac,另一种是通过创建spwm。不幸的是,arduino开发板(除了due)没有内置dac来产生正弦波,但你总是可以使用简单的r2r方法构建自己的dac,然后用它来产生正常的正弦波。但是为了减少硬件工作,我决定使用后面的方法,创建spwm信号然后将其转换为正弦波。
什么是spwm信号?
术语spwm代表正弦脉冲宽度调制。该信号与pwm非常相似,但对于spwm信号,以这样的方式控制占空比,以获得与正弦波相似的平均电压。例如,在100%占空比时,平均输出电压为5v,在25%时我们将为1.25v,从而控制占空比,我们可以获得预定义的可变平均电压,这只是一个正弦波。这种技术通常用于逆变器。
在上图中,蓝色信号是spwm信号。请注意,波形的占空比在0%到100%之间变化,然后再回到0%。该曲线图绘制为-1.0至+ 1.0v,但在我们的情况下,由于我们使用的是arduino,因此刻度将为0v至5v。我们将在下面的编程部分学习如何使用arduino生成spwm。
将spwm转换为正弦波
将spwm单个转换为正弦波需要h桥电路,该电路由最少4个电源开关组成。我们不会深入研究它,因为我们不在这里使用它。这些h桥电路通常用于逆变器。它利用两个spwm信号,其中一个信号与另一个相移,并且两个信号都被施加到h桥中的电源开关,以使对角线相对的开关同时打开和关闭。通过这种方式,我们可以获得看起来类似于正弦波的波形,但实际上不会更接近上图中显示的任何波形(绿波)。为了获得纯波形输出,我们必须使用像低通滤波器这样的滤波器,它包括一个电感和电容。
但是在电路中,我们不会使用正弦波来为任何东西供电。我只是想从生成的spwm信号创建该波形,所以我选择了一个简单的rc-filter。您也可以尝试使用lc滤波器以获得更好的结果,但为了简单起见,我选择了rc。我的电阻值为620欧姆,电容为10uf。上图显示了引脚5的spwm信号(黄色)和通过rc滤波器后获得的正弦波(蓝色)。
添加arduino pwm频率库
● arduino pwm频率库
在撰写本文时,arduino pwm频率库v_05是最新版本,它将以zip文件形式供下载。 解压zip文件,然后您将得到一个名为pwm的文件夹。 然后导航到arduino ide的libraries文件夹,对于windows用户,它将位于路径c:\users\user\documents\arduino\libraries中。 将pwm文件夹粘贴到libraries文件夹中。 有时你可能已经有一个pwm文件夹,这时,请确保用这个新文件夹替换旧文件夹。


蒸汽回收机它是如何实现节能环保降本增效的
RLC并联谐振电路仿真分析
PCIe总线的过去、现在和未来
谷歌Pixel4XL渲染图曝光 采用屏下指纹的可能性很高
APS排产排产如何提升企业生产计划效率
如何使用Arduino开发板制作函数生成器(波形发生器)
用空心铜铆钉制作双面印刷线路板的方法,PCB
通用人工智能仍是白日梦
新型超声波束合成ASIC芯片问世
噪音扬尘在线监测系统
电子整流器好坏检测_电子整流器坏了怎么判断
薄壁轴承广泛运用在工业机器人中
微软推出Office应用守护安全功能:可在沙盒中编辑不受信任的文档
亿达科创 | 以大数据为引擎 释放数智生产力
AI时代,LED植物照明成长空间大
红米卢伟冰解释为什么旗舰机都用玻璃机身
由小度智能音箱挑头,“破圈”成为智能音箱行业变革的新方向
雾计算在物联网中的应用
罗克韦尔自动化荣获金桥奖三大类奖项
采用400Hz电机的工业电源的介绍