一、任务
设计并制作一个宽带直流放大器及所用的直流稳压电源。
二、要求
1.基本要求
(1)电压增益AV≥40dB,输入电压有效值Vi≤20mV。AV可在 0~40dB范围内手动连续调节。
(2)最大输出电压正弦波有效值Vo≥2V,输出信号波形无明显失真。
(3)3dB 通频带 0~5MHz;在 0~4MHz 通频带内增益起伏≤1dB。
(4)放大器的输入电阻≥50Ω,负载电阻(50±2)Ω。
(5)设计并制作满足放大器要求所用的直流稳压电源。
2.发挥部分
(1)最大电压增益AV≥60dB,输入电压有效值Vi≤10 mV。
(2)在AV=60dB时,输出端噪声电压的峰-峰值VONPP≤0.3V。
(3)3dB 通频带 0~10MHz;在 0~9MHz 通频带内增益起伏≤1dB。
(4)最大输出电压正弦波有效值Vo≥10V,输出信号波形无明显失真。
(5)进一步降低输入电压提高放大器的电压增益。
(6)电压增益AV可预置并显示,预置范围为 0~60dB,步距为 5dB(也可以连续调节);放大器的带宽可预置并显示(至少 5MHz、 10MHz 两点)。
(7)降低放大器的制作成本,提高电源效率。
(8)其他(例如改善放大器性能的其它措施等)。
三、说明
1.宽带直流放大器幅频特性示意图如图 1 所示。
2.负载电阻应预留测试用检测口和明显标志,如不符合(50±2)Ω的电阻值要求,则酌情扣除最大输出电压有效值项的所得分数。
3.放大器要留有必要的测试点。建议的测试框图如图 2 所示,可采用信号发生器与示波器/交、直流电压表组合的静态法或扫频仪进行幅频特性测量。
设计一个宽带直流放大器及相应的直流稳压电源。该系统包括以下主要模块:
设计一个增益高于40dB的宽带直流放大器,可以处理输入电压有效值小于20mV的信号,保持3dB带宽在带0~5MHz范围内;0~4MHz范围内增益波动小于1dB,确保放大信号的线性和精确度。滤波模块用于减少噪声,保持信号质量。
信号输入模块:
放大器电路:
直流稳压电源:
滤波器模块:
运算放大器(AD797):
稳压IC(如LM7805或LM317):
以下是使用MCU(如STM32F103)监测放大器输出信号和电压稳定性的重要功能代码片段及介绍:
#include "stm32f1xx.h"
ADC_HandleTypeDef hadc1;
TIM_HandleTypeDef htim1;
UART_HandleTypeDef huart1;
void SystemClock_Config(void);
void MX_GPIO_Init(void);
void MX_ADC1_Init(void);
void MX_TIM1_Init(void);
void MX_USART1_UART_Init(void);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
MX_TIM1_Init();
MX_USART1_UART_Init();
HAL_TIM_Base_Start(&htim1);
HAL_ADC_Start(&hadc1);
uint32_t adcValue = 0;
char buffer[50];
while (1) {
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
adcValue = HAL_ADC_GetValue(&hadc1);
float voltage = ((float)adcValue / 4095) * 3.3;
snprintf(buffer, sizeof(buffer), "Voltage: %.2f V\r\n", voltage);
HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
HAL_Delay(1000);
}
}
void SystemClock_Config(void) {
// 系统时钟配置代码
}
void MX_GPIO_Init(void) {
// GPIO初始化配置
}
void MX_ADC1_Init(void) {
ADC_ChannelConfTypeDef sConfig = {0};
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ContinuousConvMode = ENABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
if (HAL_ADC_Init(&hadc1) != HAL_OK) {
Error_Handler();
}
sConfig.Channel = ADC_CHANNEL_0;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) {
Error_Handler();
}
}
void MX_TIM1_Init(void) {
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
htim1.Instance = TIM1;
htim1.Init.Prescaler = 7999;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 9999;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
if (HAL_TIM_Base_Init(&htim1) != HAL_OK) {
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) {
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) {
Error_Handler();
}
}
void MX_USART1_UART_Init(void) {
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK) {
Error_Handler();
}
}
void Error_Handler(void) {
while (1) {
// 错误处理代码
}
}
通过上述设计方案和实现代码,可有效满足题目提出的系统要求,实现宽带直流放大和稳压功能。
本题考察的主要知识点: