一、题目
频率特性测试仪
二、任务
设计并制作一个频率特性测试系统,包含测试信号源、被测网络、检波及显示三部分。
三、要求
1.基本要求
(1)制作幅频特性测试仪
a、频率范围:100Hz~100kHz;
b、频率步进:10Hz;
c、频率稳定度:10-4;
d、测量精度:5% ;
e、能在全频范围和特定频率范围内自动步进测量,可手动预置测量范围及步进频率值;
f、LED 显示,频率显示为 5 位,电压显示为 3 位,并能打印输出。
(2)制作一被测网络
a、 电路型式:阻容双 T 网络;
b、 中心频率:5kHz;
c、 带宽:±50Hz;
d、 计算出网络的幅频和相频特性,并绘制相位曲线;
e、 用所制作的幅频特性测试仪测试自制的被测网络的幅频特性。
2.发挥部分
(1)制作相频特性测试仪
a、 频率范围:500Hz~10kHz;
b、 相位度数显示:相位值显示为三位,另以一位作符号显示;
c、 测量精度:3°。
(2)用示波器显示幅频特性。
(3)在示波器上同时显示幅频和相频特性。
(4)其它。
GPT-4o给出的设计方案:
以下为实现频率调整和LCD显示的简易代码示例:
#include "stm32f4xx_hal.h"
#include <stdio.h>
#include <string.h>
ADC_HandleTypeDef hadc1;
I2C_HandleTypeDef hi2c1;
DAC_HandleTypeDef hdac;
void SystemClock_Config(void);
void UpdateFrequency(uint32_t frequency);
void DisplayFrequency(uint32_t frequency);
void InitDDS(void);
int main(void) {
HAL_Init();
SystemClock_Config();
InitDDS();
uint32_t freq = 100;
while (1) {
// 调整频率(假设通过按键调整)
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET) {
freq += 10; // 每次按下按钮频率步进10Hz
if (freq > 100000) freq = 100; // 回到初始值
UpdateFrequency(freq);
DisplayFrequency(freq);
HAL_Delay(200);
}
}
}
void UpdateFrequency(uint32_t frequency) {
// 更新DDS频率控制字
uint32_t tuningWord = (frequency * 4294967296.0) / 125000000; // 将频率转换为控制字
uint8_t cmd[4] = {tuningWord & 0xFF, (tuningWord >> 8) & 0xFF, (tuningWord >> 16) & 0xFF, (tuningWord >> 24) & 0xFF};
HAL_I2C_Master_Transmit(&hi2c1, DDS_I2C_ADDRESS, cmd, 4, HAL_MAX_DELAY);
}
void DisplayFrequency(uint32_t frequency) {
// 显示频率在LCD上
char buf[16];
sprintf(buf, "Freq: %ld Hz", frequency);
HAL_I2C_Master_Transmit(&hi2c1, LCD_I2C_ADDRESS, (uint8_t*)buf, strlen(buf), HAL_MAX_DELAY);
}
void InitDDS(void) {
// 初始化DDS芯片
}
void SystemClock_Config(void) {
// 系统时钟配置
}
通过设计一个高精度的频率特性测试系统,合理利用DDS信号源、锁相放大器和高分辨率ADC进行频率和相位检测,符合系统的目标要求。使用STM32平台不仅提升了数据处理效率,也简化了用户界面操作,实现了频率特性自动测试和显示,具备广泛的应用前景。
这个题目考察的知识点: