如何构建一个简单的信号发生器
扫描二维码
随时随地手机看文章
在本教程中,我们将利用 Arduino Uno R4 WiFi 的内置数模转换器(DAC)和 LED 矩阵来构建一个简单的信号发生器,该发生器能够产生正弦波、方波和三角波。
内置的 DAC(数字-模拟转换器)用于直接从板上生成模拟波形。Arduino Uno R4 WiFi 上的 DAC 具有 12 位分辨率(0 至 4095 个级别),输出范围为 0V 至约 3.3V 的模拟电压,能够实现平滑的波形生成。
采用旋转式编码器来改变输出频率,而按下编码器按钮则可切换不同的波形类型。
当前选定的波形会在 LED 矩阵上以图标形式显示出来,当编码器旋转时,所选的频率值也会随之显示出来,这样您就可以轻松地实时调整信号了。
该项目展示了如何利用 Arduino Uno R4 WiFi 来创建一个紧凑型波形发生器,它结合了数模转换器输出、旋转编码器输入以及板载 LED 矩阵显示屏。
其结果是一个小型的交互式信号发生器,能够生成正弦波、方波和三角波,且频率可调,同时还能在板上直接提供视觉反馈。
注意:该项目利用了 Arduino Uno R4 WiFi 的内置 DAC 和 LED 矩阵,因此仅需一个旋转编码器作为外部硬件即可。
第 1 步:您将需要的物品/材料
•Arduino UNO R4 Wi-Fi
•罗托里旋转编码器
•面包板
•跳线
•示波器(可选,用于查看输出信号)
第 2 步:电路
旋转编码器模块连接端口
•将编码器引脚[CLK]与 Arduino 引脚[3]相连。
•将编码器引脚[DT]与 Arduino 引脚[4]连接起来。
•将编码器引脚[SW]与 Arduino 引脚[2]连接起来。
•将编码器引脚的“+(VCC)”端与 Arduino 引脚的“5V”端连接起来。
•将编码器的接地引脚(GND)与 Arduino 的接地引脚(GND)连接起来。
信号输出连接端口
•将 Arduino 的引脚 [A0] 连接到示波器的信号引脚(探头)上
•将连接插针[GND]与示波器的接地端(探头)相连。
第 3 步:启动 Visuino 软件,并选择 Arduino UNO R4 WiFi 板型。
按照第一张图片所示启动 Visuino。在 Visuino 中点击“Arduino”组件上的“工具”按钮(图 1)。当对话框出现时,如图 2 所示选择“Arduino UNO R4 WiFi”。
第 4 步:在 Visuino 中添加组件
•添加“旋转编码器传感器”组件
•添加“整数转模拟”组件
•添加“正弦模拟发生器”组件
•添加“方形模拟发生器”组件
•添加“三角形模拟生成器”组件
•添加“模拟多路复用器(多通道切换器)”组件
•添加“延时按钮”组件
•添加“计数器”组件
•添加“时钟解复用器(多输出通道切换器)”组件
第 5 步:在 Visuino 设置界面中
•选择“Arduino UNO R4 WiFi”,然后在“属性”菜单下的“模块”>“显示”>“方向”中设置为“向下”。
•选择“Arduino UNO R4 WiFi”,然后在“属性”菜单下的“模块”>“显示”>“元素”中点击三个点,在“元素”窗口中:
•将“填充屏幕”拖至左侧
•将“文本字段”拖至左侧,在属性窗口中选择“元素”,然后点击三个点按钮。在“元素”窗口中将“字体”拖至左侧,并在属性窗口中将“字体”设置为“Adafruit\Picopixel”
•关闭“元素”窗口
然后在主元素窗口中将“绘制位图”拖到左侧,在属性窗口中加载“Sine_wave.png”图片。
•将另一个“绘制位图”拖到左侧,并在属性窗口中加载“Square_wave.png”图片。
将另一个“绘制位图”拖到左侧,并在属性窗口中加载“loadTriangle_wave.png”文件。
第 6 步:在 Visuino 中设置组件
•选择“旋转编码器传感器 1”,然后在属性设置中将“最大值”>“数值”设为 100,并将“翻转”设为“否”。
•选择“旋转编码器传感器 1”,然后在属性设置中将“最小值”>“值”设为 0,并将“翻转溢出”设为“否”。
•选择“SineAnalogGenerator1”,然后在属性设置中选择“频率”,点击引脚图标,再选择“浮点源引脚”
•选择“SquareAnalogGenerator1”,然后在属性设置中选择“频率”,点击引脚图标,再选择“浮点源引脚”
•选择“TriangleAnalogGenerator1”,然后在属性设置中选择“频率”,点击引脚图标,再选择“浮点接收引脚”
•选择“计数器1”,然后在属性设置中将“最大值”>“值”设置为 2 。
•选择“计数器1”,然后在属性设置中将“最小值”>“值”设置为 0 。
•选择“Mux1”,然后在属性窗口中将“输入引脚”设置为 3 。
•选择“MultiSource1”,然后在属性窗口中将“输入引脚”设置为 4 。
选择“ClockDemux1”,然后在属性窗口中将“输入引脚”设置为 3 。
第 7 步:在 Visuino 连接组件中
•将计数器 1 的“输出”引脚与多源 1 的“输入”引脚相连。
•将 MultiSource1 引脚[0]与 Mux1 引脚[选择]相连
•将 MultiSource1 引脚[1]与 Arduino 上的“显示”部分的“填充屏幕1”引脚[时钟]连接起来。
•将 MultiSource1 引脚[2]与 ClockDemux1 引脚[选择]相连。
•将 MultiSource1 的第 3 个引脚连接到 ClockDemux1 的“输入”引脚。
•将 ClockDemux1 的输出引脚[输出 0]与 Arduino 上的“显示”部分的“绘制位图 1”引脚[时钟]相连接。
•将 ClockDemux1 模块的“输出 1”引脚连接到 Arduino 的“显示”部分的“绘制位图 2”引脚(即“时钟”引脚)上。
•将 ClockDemux1 模块的“输出 2”引脚连接到 Arduino 的“显示”部分的“绘制位图 3”引脚(即“时钟”引脚)上。
•将 Mux1 的“输出”引脚与 Arduino 的 DAC 引脚[14]连接起来。
•将旋转编码器传感器 1 的输出引脚(Pin)与 Arduino 的“显示”部分的“填充屏幕”引脚(Pin)连接起来。
•将旋转编码器传感器 1 的输出引脚(Pin)与 Arduino 上的“显示”部分的“文本字段 1”输入引脚相连。
•将旋转编码器传感器 1 的输出引脚(Pin)与整数到模拟转换器 1 的输入引脚(Pin)相连。
•将 Arduino 数字引脚 [3] [输出] 与旋转编码器传感器 1 的引脚 [时钟(A)] 连接起来。
•将 Arduino 数字引脚 [4] [输出] 与旋转编码器传感器 1 的引脚 [方向(B)] 连接起来。
•将 Arduino 数字引脚 [2] [输出] 与按钮 1 引脚 [输入] 连接起来
•将按钮1的“输出”端连接到计数器1的“输入”端。
•将“IntegerToAnalog1”引脚(输出)连接到“SineAnalogGenerator1”引脚(频率)上。
•将“IntegerToAnalog1”引脚(输出)与“SquareAnalogGenerator1”引脚(频率)相连接
•将 IntegerToAnalog1 模块的“输出”端连接到 TriangleAnalogGenerator1 模块的“频率”端。
第 8 步:生成、编译并上传 Arduino 代码
在 Visuino 中,点击底部的“构建”选项卡,确保选择了正确的端口,然后点击“编译/构建并上传”按钮。
本文编译自hackster.io





