欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

简易特性测试仪实验方案策划

程序员文章站 2022-03-11 20:44:05
一.设计要求:电路特性测试仪输出 1kHz 正弦波信号,自动测量并显示该放大器的输入电阻。输入电阻测量范围 1kΩ~50kΩ,相对误差的绝对值不超过10%电路特性测试仪输出 1kHz 正弦波信号,自动测量并显示该放大器的输出电阻。输出电阻测量范围 500Ω~5kΩ,相对误差的绝对值不超过10%。自动测量并显示该放大器在输入 1kHz 频率时的增益。相对误差的绝对值不超过 10%。自动测量并显示该放大器的频幅特性曲线。显示上限频率值,相对误差的绝对值不超过 25%。二.系统框图详述::按键...

一.设计要求:

  1. 电路特性测试仪输出 1kHz 正弦波信号,自动测量并显示该放大器的输入电阻。输入电阻测量范围 1kΩ~50kΩ,相对误差的绝对值不超过10%
  2. 电路特性测试仪输出 1kHz 正弦波信号,自动测量并显示该放大器的输出电阻。输出电阻测量范围 500Ω~5kΩ,相对误差的绝对值不超过10%。
  3. 自动测量并显示该放大器在输入 1kHz 频率时的增益。相对误差的绝对值不超过 10%。
  4. 自动测量并显示该放大器的频幅特性曲线。显示上限频率值,相对误
    差的绝对值不超过 25%。

二.系统框图详述::

简易特性测试仪实验方案策划

按键控制单片机输出正弦波数组到PCF8591模块产生正弦波,经过比例运放电路放大信号,输入待测电路。

输入电阻测量方法: 使用两个峰值检测模块分别采集待测电路J25(Ui)和J15(Uii)端口电压值 Ri=Uii*R30/(Uii-Ui)

输出电阻测量方法:使用继电器控制模块连接待测电路的J28端口,先空载测的输出电压值Uk,在带负载R19测得输出电压值Uo Ro=R19*(Uk-Uo)/Uo。

电路增益测量方法: A=-Uo/Ui。

频幅特性曲线测量方法:单片机控制正弦波频率从0HZ安照50hz的步进依次增大,并依次测的输出电压Uo。当Uo随频率增大而变小时,该电压对应的频率为上限截止频率。

三.PCF8951DA电路模块详述:

简易特性测试仪实验方案策划

J2端口用于设定PCF8951模块的地址,J4端口用于连接单片机的I2C接口。

功能1:将单片机里的正弦波数组通过I2C接口发送给PCF8951芯片,PCF8951的J6端口会产生正弦波信号。

功能2:将模拟电压值输入J3端口,通过单片机的I2C总线读取J4端口可采集到J3端口的模拟电压值。

仿真结果:

简易特性测试仪实验方案策划

四.比例运算放大模块详述:

简易特性测试仪实验方案策划

此电路为4路输入输出运算放大电路,其中J1和J8为反向输出,J9和J10为同向输出,Jx_IN为输入端口,Jx_OUT为输出端口。

功能:根据虚短虚断反向输出部分的U0=-Rf/R*Ui 调节R7/R5(R8/R6)可调节输出信号的放大倍数,

同向输出部分的U0=(1+Rf/R)*Ui 调节R9/R10(R11/R12)可调节输出信号的放大倍数。

五.待测放大电路模块详述:

简易特性测试仪实验方案策划

J26为正弦信号输入端口,J27为输出端口,J28为带负载和空负载控制端口,J29为VCC和GND的输入端口,其他的为晶体管各级的电阻电容短路和各级断路控制端口,也可用于采集各级电压值。

六.继电器控制电路模块详述:

简易特性测试仪实验方案策划

Q2和K1构成高电平驱动继电器导通电路,Q3和K2构成低电平驱动继电器导通电路,而有常开常闭两种状态。

功能1:当J1中的H_pin引脚接受到单片机产生的高电平时,J2的两个K1_OUT为短路状态,否则为断路状态。

功能2:当J1中的L_pin引脚接受到单片机产生的低电平时,J2的K2_Com和K2_Close为短路状态,K2_Com和K2_Open为断路状态。否者J2的K2_Com和K2_Close为断路状态,K2_Com和K2_Open为短路状态。

七.峰值检测电路模块详述:

简易特性测试仪实验方案策划

上半部分采用AD637芯片实现峰值采集,适用于对精度要求较高的场景,但成本较高,RSM_IN输入正弦信号,RMS_OUT输出正弦信号的有效值。

下半部分采用两个运放实现峰值采集,适用于对精度要求不高的场景,成本较低。

要求较高的场景,但成本较高,RSM_IN输入正弦信号,RMS_OUT输出正弦信号的有效值。

下半部分采用两个运放实现峰值采集,适用于对精度要求不高的场景,成本较低。

八.单片机控制PCF8951产生正弦波程序:

(相关外设驱动代码下方链接自行下载)

// An highlighted block
#include "stm32f10x.h"
#include "SysTick.h"
#include "led.h"
#include "PCF8591.h"
#include "iic.h"
#include "time.h"
#include "key.h"
u8 i=0;
u8 Autoreload_val=31;
u8 sintab[]={
128,152,176,198,217,233,245,252,
255,252,245,233,217,198,176,152,
127,103,79,57,38,22,10,3,
1,3,10,22,38,57,79,103,
};


int main(void)
{  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	SysTick_Init(72);
	LED_Init();	
	PCF8591_Init();
	TIM3_Init(Autoreload_val,71);
	KEY_Init();
	while(1)
	{
		if(KEY_Scan(0)==KEY0_PRESS)
		{
			Autoreload_val++;
			TIM_SetAutoreload(TIM3,Autoreload_val);
		}
			
		if(KEY_Scan(0)==KEY1_PRESS&&Autoreload_val>1)
		{
			Autoreload_val--;
			TIM_SetAutoreload(TIM3,Autoreload_val);
		}	
		
	}
}

/*******************************************************************************
* 函 数 名         : TIM4_IRQHandler
* 函数功能		   : TIM4中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void TIM3_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM3,TIM_IT_Update))
	{
		i++;
		pcf8591_da_write(sintab[i%32]);
	}
	TIM_ClearITPendingBit(TIM3,TIM_IT_Update);	
}


九.相关链接:

链接:https://pan.baidu.com/s/1lBrm5jho1_NQCXTo7b6Lsw
提取码:vewp

本文地址:https://blog.csdn.net/weixin_45907936/article/details/107921276