Note
2025年全国大学生电子设计竞赛 G题 - 电路模型探究装置
基于STM32F407微控制器的电路模型分析系统,具备已知电路控制和未知电路学习建模功能。
- 根据目标输出频率(100Hz-3kHz)和电压(1-2V)反算输入电压
- 通过传递函数H(s)精确控制DDS输出
- 输出相对误差小于5%
- 自动扫频(1kHz-500kHz)获取电路幅频响应
- 基于LM算法识别滤波器类型(低通/高通/带通/带阻)
- 提取关键参数(k, f0, Q)
- 数字IIR滤波器模拟电路响应,相对误差小于10%
- 主控: STM32F407ZGT6
- 信号源: AD9910 DDS模块
- 采样: STM32板载ADC (12位,最高2.4MSPS)
- 输出: STM32板载DAC + 精密运放电路
- 模拟电路: 已知模型二阶低通滤波器(Sallen-Key结构)
- 传递函数反算算法
- Levenberg-Marquardt参数拟合
- 数字IIR滤波器实现
- 自动扫频控制
| 参数 | 指标 |
|---|---|
| 频率范围 | 0.23Hz - 2MHz |
| 频率分辨率 | 0.23Hz |
| 输出电压 | 峰峰值≥3V |
| ADC精度 | 12位 |
| 学习时间 | ≤40秒 |
| 控制精度 | 相对误差≤5% |
| 模拟精度 | 相对误差≤10% |
ModelProbe-25G/
├── App/ # 应用层代码
│ ├── Expert_fitter/ # 专家拟合系统
│ ├── lm_fitter/ # LM算法拟合
│ ├── IIRDesigner/ # IIR滤波器设计
│ ├── System_IDentify/ # 系统辨识
│ ├── RealTimeFilter/ # 实时滤波
│ ├── Sample/ # 采样控制
│ ├── DAC_Out_Decay/ # DAC输出衰减
│ ├── FFT/ # 频域分析
│ └── utils/ # 工具函数
├── Core/ # STM32HAL核心文件
│ ├── Inc/ # 核心头文件
│ └── Src/ # 核心源文件
├── Lib/ # 外设库
│ ├── AD9910/ # DDS模块驱动
│ └── Visual_TFT/ # 显示屏驱动
├── Drivers/ # STM32驱动库
│ ├── CMSIS/ # ARM CMSIS库
│ └── STM32F4xx_HAL_Driver/ # HAL驱动
├── Data/ # 测试数据与分析脚本
│ ├── *.csv # 采样数据文件
│ ├── *.m # MATLAB分析脚本
│ └── *.xlsx # 测试记录
├── Middlewares/ # 中间件
├── build/ # 编译输出目录
└── cmake/ # CMake配置文件
Important
- 开发工具: VS Code + CMake
- 编译器: STM32CubeCLT (包含ARM GCC工具链)
- 调试器: OpenOCD + SEGGER Ozone
- 库文件: STM32HAL库
Warning
确保供电电压正确(±12V, ±5V),避免损坏器件
-
开发环境配置:
- 安装VS Code及C/C++扩展
- 安装STM32CubeCLT工具链
- 配置OpenOCD/Ozone调试环境
-
编译项目:
mkdir build && cd build cmake .. make -j4
-
下载调试: 使用OpenOCD或Ozone进行程序下载和调试
-
功能使用:
- 已知模型模式: 设置目标频率和电压,系统自动计算并输出
- 学习模式: 连接待测电路,启动学习,系统自动扫频建模
- 模拟模式: 输入信号,系统输出对应的模拟响应
- 频率范围: 100Hz-3kHz
- 电压范围: 1V-2V,步进0.1V
- 相对误差: ≤4.7%
- 学习时间: 40秒内完成
- 模拟输出相对误差: ≤10%
- 支持四种滤波器类型识别
ZJAxxx - 浙江大学信息与电子工程学院信电16组
本项目仅用于学术和竞赛目的。