一、任务
设计制作一个简易频谱仪。频谱仪的本振源用锁相环制作。频谱仪的基本结构图如图 1 所示。
二、要求
1. 基本要求
制作一个基于锁相环的本振源:
(1)频率范围 90MHz~110MHz;
(2)频率步进 100kHz;
(3)输出电压幅度 10~100mV,可调;
(4)在整个频率范围内可自动扫描;扫描时间在 1~5s 之间可调;可手动扫描;还可预置在某一特定频率;
(5)显示频率;
(6)制作一个附加电路,用于观测整个锁定过程;
(7)锁定时间小于 1ms。
2. 发挥部分
制作一个 80MHz~100MHz 频谱分析仪:
(1)频率范围 80MHz~100MHz;
(2)分辨率 100kHz;
(3)可在频段内扫描并能显示信号频谱和对应幅度最大的信号频率;
(4)测试在全频段内的杂散频率(大于主频分量幅度的 2%为杂散频率)个数;
(5)其他。
三、说明
在频谱仪滤波器的输出端应有一个测试端子,便于测量。
GPT-4o给出的设计方案:
设计并制作一个简易频谱仪,基于锁相环(PLL)生成本振源,其频率范围在90MHz到110MHz,频率步进为100kHz,并可调节输出电压幅度。频谱仪需具备自动和手动扫描功能,并显示频率和扫描信号的频谱。
信号源输入:
本振源:
混频器:
滤波器:
频率显示与控制模块:
幅度显示:
输出接口:
频率生成与控制:
信号混频与滤波:
频谱分析与显示:
PLL频率合成电路
#include "ADF4351.h"
ADF4351 PLL;
void setup() {
PLL.initialize(10, 4100); // 设置载波频率在90-110MHz范围内
}
void loop() {
for (int freq = 9000; freq <= 11000; freq += 10) {
PLL.setFrequency(freq * 100); // 频率步进100kHz
delay(1000); // 1秒延时
}
}
信号混频与滤波电路
// 中频滤波器设计:对应频率范围内选择适当的带通滤波器参数
void filter_design() {
// 滤波器设计参数
}
控制与显示
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
pinMode(A0, INPUT);
}
void loop() {
int freq = 9000; // 初始频率
while (freq <= 11000) {
// 设置频率
PLL.setFrequency(freq * 100);
// 读取幅度
int amplitude = analogRead(A0);
// 显示频率和幅度
lcd.setCursor(0, 0);
lcd.print("Freq: ");
lcd.print(freq * 100);
lcd.print(" kHz");
lcd.setCursor(0, 1);
lcd.print("Amp: ");
lcd.print(amplitude);
delay(1000);
freq += 10; // 频率步进100kHz
}
}
调试:
验证:
该设计方案确保频谱仪在规定频率范围内具有较高的稳定性和准确度,满足自动和手动扫描功能,并能实时显示频率和信号幅度。
鉴于任务要求,设计一个观察锁定过程的电路,主要涉及到锁相环(PLL)电路和相关监控电路。下面是设计步骤和一个具体实现方案:
PLL电路设计:
锁定指示电路:
频率监控电路:
控制与显示电路:
#include <ADF4351.h>
ADF4351 PLL;
void setup() {
PLL.initialize(10, 10000); // 配置起始频率10MHz到1000MHz
pinMode(LOCK_DETECT_PIN, INPUT); // 锁定检测引脚
}
void loop() {
PLL.setFrequency(100000000); // 设置频率为100MHz
if (digitalRead(LOCK_DETECT_PIN) == HIGH) {
// 锁定成功
digitalWrite(LED_PIN, HIGH); // 点亮LED
} else {
// 未锁定
digitalWrite(LED_PIN, LOW); // 关闭LED
}
delay(1000);
}
PLL_LOCK_DETECT_PIN -- LED -- 电阻 -- GND
#define FREQUENCY_PIN 8 // 频率输入引脚
unsigned long countPulse() {
unsigned long duration = 1000; // 1秒测量
unsigned long pulses = 0;
unsigned long startTime = millis();
while (millis() - startTime < duration) {
if (digitalRead(FREQUENCY_PIN) == HIGH) {
pulses++;
while (digitalRead(FREQUENCY_PIN) == HIGH); // 等待脉冲结束
}
}
return pulses;
}
void setup() {
pinMode(FREQUENCY_PIN, INPUT);
Serial.begin(9600);
}
void loop() {
unsigned long frequency = countPulse();
Serial.print("Frequency: ");
Serial.print(frequency);
Serial.println(" Hz");
delay(1000);
}
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
PLL.initialize(10, 10000);
}
void loop() {
int frequency = 100000000; // 设置频率为100MHz
PLL.setFrequency(frequency);
if (digitalRead(LOCK_DETECT_PIN) == HIGH) {
lcd.setCursor(0, 0);
lcd.print("Locked");
} else {
lcd.setCursor(0, 0);
lcd.print("Unlock");
}
lcd.setCursor(0, 1);
lcd.print("Freq: ");
lcd.print(frequency);
lcd.print(" Hz");
delay(1000);
}
该设计方案可以有效观察PLL的锁定过程,实现对频率锁定状态的实时监控,并通过可视化的方式进行显示。
本题目考察的主要知识点: