Arduino Due 任意波形发生器:多频率、跨平台、高精度信号源
核心元件
| 元件 | 数量 |
|---|---|
| Arduino Due (核心控制器) | 1 |
无需额外电路即可运行,仅需 Arduino Due 一块板卡。可选添加输出保护电路,防止误接 ±30V 电压损坏主控。
项目概述
这是一个双部分项目:
- Arduino Due 固件 - 运行在 Due 上,生成波形
- PC 端控制器 GUI - Windows/Linux 通用,通过 USB 连接 Due,支持任意波形绘制、编辑、保存/加载、上传
Due 也可脱机运行,通过电位器、开关、LED 直接操作。GUI 自带详尽帮助文档。
核心规格
模拟波形 (DAC0 输出)
- 分辨率:12 位,最多 4096 路径点
- 频率范围:0.05 mHz (20,000 秒周期) ~ 100 kHz
- 采样率:>1kHz 时最高 1.6 MHz (DMA);≤1kHz 时 400 kHz;Exact Mode 下任意频率 400 kHz
- 最小脉宽:0% 占空比约 350 ns;0.01% 占空比 2.5~25 μs (视频率与模式而定)
方波输出 (引脚 7)
- 频率范围:0.05 mHz ~ 42 MHz
- 同步模式 (0.05 mHz~100 kHz):0% 占空比 48 ns;0.01% 占空比 2.5~25 μs
- 非同步模式 (PWM/中断):1.3 kHz~42 MHz 可达 12 ns 脉宽;<163 Hz 用中断,0% 占空比 96 ns,0.01% 占空比 5 μs
- 占空比可调 0%~100%,或固定脉宽模式
高级功能
- 阶跃波特性:可在波形中插入任意数量的单采样点尖峰
- 预设波形:正弦波、三角波/锯齿波一键切换
- 双波形独立/同步:方波可与模拟波同步或完全独立
- Exact Mode:消除 DDS 固有的“频率阶跃”,实现更精准的频率设定 (输出不再是时钟频率的整除)
- 对数扫频:支持单路或双路频率扫描
- 定时器:可设定正/负极性 Arduino 输出触发
- 多种控制方式:PC 键盘/键盘面板直接输入、滑块微调、串口监视器 (115200 波特率)、硬件电位器/开关
安装与使用
PC 端 GUI (免安装绿色版)
- Windows:解压
DueAWGController-Win64.zip(64位) 或DueAWGController-Win32.zip(32位,含嵌入式 Java 更稳) → 建立快捷方式运行.exe - Linux:解压
DueAWGController-LinuxXX.zip→ 双击DueAWGControllerLinux或加入系统菜单
需预装 OpenJDK 8:sudo apt-get install openjdk-8-jre(新版本可能不兼容)
USB 权限:sudo usermod -a -G dialout $USER(重新登录生效) - 附带两个 ARM 版本 (树莓派等),未测试,欢迎反馈
Arduino 端固件
- 无需额外库,标准 Arduino IDE 即可编译上传
- 上传成功后,GUI 启动时自动识别并连接 Due (无需手动选 COM 口),也可手动指定
Arbitrary Waves文件夹内附示例波形文件- 也可用 Arduino 串口监视器 (115200) 直接控制,输入
?查看帮助 - 硬件控制模式:固件开头列出引脚映射 (电位器、开关、LED)
输出引脚连接
- 方波输出:引脚 7
- 模拟波输出:DAC0
- 建议将引脚 3 与 7 短接 (或串联 47~100Ω 电阻) 作为同步基准
可选输出保护电路
虽非必需,但推荐加装以保护 Due 免受误接高压损害。电路包含快恢复二极管 (D2、D3,肖特基二极管太慢)、自恢复保险丝 (F1、F2)。原理图见下图:

源代码与资源
GitHub 仓库:Bruce-Evans/ArduinoDueArbitraryWaveformGeneratorAndController
注意:请点击 "Read More" 下载完整文件,不要点 "Download as zip"(仅下载 README)。
制造工艺
- DIY 蓝牙控制 Arduino 间谍小车
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- Arduino Due 触摸屏井字棋游戏 — 人机对战
- JX 波形发生器 – 基于 Arduino 的 DDS 振荡器,带 OLED 显示屏
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
- 从零构建智能 Arduino 四足机器人:完整指南
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- 利用 Arduino Nano R3 自制全功能 CNC 雕刻机