罗骏
(中国电子科技集团公司第三十四研究所,广西桂林,541004)
运算放大器参数测试及其故障检测对于电子领域特别是功放领域,有着极其重要的作用,能够高效的排查故障,保障运算放大器的使用便捷、有效。
针对上述问题设计实现了一个运算放大器特性测试仪,以STM32单片机为主控芯片,通过DDS产生被测电路的驱动信号,同时构建输入测量和输出测量网络实现被测电路的基本参数的测量以及故障的判别。在故障判别电路中,通过输入端的小信号结合大信号驱动以及输出端加入负载电阻来判断电阻开路和短路故障;通过测量频带外某两点的电压增益实现电容开路以及容值改变的迅速判别,在进度和速度上都有较大提高。
常见的单运放还有场效应管为输入级都是通用型运算放大器,仅仅只有级数不同而已。
下面列出这些通用型放大器的基本参数:
(1)共模输入电阻:这一参数是运算放大器在线性区工作时,输入端的共模电压区间和这个区间内偏置电流的变化量的比值。
(2)直流共模抑制:这一参数主要用于评判运算放大器对两个输入端口的相同直流的抑制能力。
(3)交流共模抑制:主要是用来计算运算放大器对两个输入端口的相同交流电压的抑制力。
图1 设计流程图
1.2.1 DDS信号源
AD9833:频率、相位可编程,低功耗(20Mw/3V)。输出的频率范围一般是0.1~12.5MHz在这一个范围内可以使用软件控制。还可以通过编程是输出信号在正弦波,三角波以及方波中间切换,正常工作时电压2.3V~5.5V之间,通信方式 SPI通信方式,SPI通信速率最高可达到40MHz。
1.2.2 数控放大器
AD8051通用运算放大器芯片,使用反向比例放大功能。
1.2.3 信号源控制原理
ARM控制板通过SPI通信对DDS进行频率、幅度、波形的设置spi通信,片选低有效,16bit通信模式,下降沿采集数据,ARM通信频率,2.5MHz。分别对ad9833内的寄存器进行读写,控制波形、频率以及相位等。
图2 stm32F767核心板
1.2.4 模拟开关控制
ARM控制板通过IO口高低切换控制模拟开关的断开切换,从而达到输入信号500mV和10mV的切换以及输入电阻,输出电阻的切换。
1.2.5 ADC
ARM控制板通过IO口高低切换控制模拟开关的断开切换,从而达到输入信号500mV和10mV的切换以及输入电阻,输出电阻的切换。
主控芯片STM32F767IGT 采用Cortex M7内核,外围flash 1024KB,SARM 512KB。
输入电压2.3-5.5V,以及外围电源滤波电容,外加一个CAP参考电压,通信口接入SPI通讯线与控制板普通IO口相连,在输出端口加入一个SPI协议的数字电位模块,可用来实现在线调控输出波形的功率。
数控放大器模块实际就是一个电位器,可以通过SPI进行时序通讯,并且通过控制命令,可以实现在线调节电压的一个模块。
检波器,主要就是用来提取出波动信号里面的一个有用的特殊的信号一种电路。检波就是从一个不断变化的信号之中提取出一个有用信号的过程,有包络检波和同向检波两种方式进行检波。
图3 AD9833的外围电路
AD8361是一个通过集成的模式来提供均方根(RMS)响应功率的器件的检波器,这个器件可以检出2.5GHz的信号的均方根的值,主要用于于CDMA、QAM等其他复合调制的检波。
(1)输入输出电阻测量原理
输入阻抗的测量可以通过测量输入端短接时被测网络的输出电压有效值Uo,与输入端串接一个电阻Rs时的输出电压有效值Uo’,通过公式Ri=Rs*Uo’/(Uo-Uo’)来计算出输入电阻。同理,测量输出电阻时可以通过输出空接时的输出电压Uo和接入负载电阻时输出电压Uo’,再通过公式Ro=RL*(Uo-Uo’)/Uo’来计算输出阻抗,求得的误差经过算法修正可使得测量值接近真实值。
图4 AD8361真有效值检测电路设计
(2)增益计算
单片机通过控制DDS输出1Khz,10mv的交流电压Ui到被测网络,后级检测被测网络输出电压Uo,利用放大倍数公式Au=Uo/Ui计算出放大倍数,然后利用公式Gu=20lgAu计算出增益。
(3)增益与幅频特性的计算
单片机通过控制DDS输出不同频率下的电压Ui到被测网络,后级检测被测网络输出电压Uo,结合DDS输出频率从而画出幅频特性曲线。
(4)误差分析计算
通过实测得到其真实输入输出电阻Rr,通过测量仪测得的输入输出阻抗为Rt,所以求得其相对误差为(Rt-Rr)/Rr。
平台keil 5,使用hal库,使用C语言编写代码,采用C51译码器生成机器语言,装入寄存器进行执行命令。
图5 流程图
首先将引脚配置为普通IO口使用
图6 AD9833的程序流程图
使用普通io模拟SPI通讯协议,NSS低电平有效,时钟空闲时位低电平,通过查AD9833资料获取寄存器的地址,通过SPI时序的调试,尝试通信,通过读写测试,与其进行数据的交互,进行代码的的封装,固定。通过循环就可以实现扫频输出信号,达到自动测试的理想结果,经过扫频测试,测试通用型运算放大器的基本特性,基本实现要求的功能。最后通过模拟时序对AD9833进行通信。
*函数名:AD9833_Write
*功能说明:向SPI总线发送16个bit数据
图7 数控放大器流程图
与AD9833,通过模拟SPI进行数据交互,由于其寄存器地址不同,所以挂载SPI总线。通过数据的传输使其有不同的阻值切换,改变其电阻值。达到与电位器相同的结果。
图8 ADC电压采集流程图
ADC设置,通过hal库函数,配置ADC参数,其中,包括采样时间,采样速率,和轮询次数,通过多次采集数据,加入简单的滤波,使数据相对稳定。对ADC引脚进行以下配置。
ADC1_Handler.Instance=ADC1;
ADC1_Handler.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4; //4分频,ADCCLK=PCLK2/4=108/4=27MHZ
ADC1_Handler.Init.Resolution=ADC_RESOLUTION_12B;//12位模式
ADC1_Handler.Init.DataAlign=ADC_DATAALIGN_RIGHT;//右对齐
ADC1_Handler.Init.ScanConvMode=DISABLE;//非扫描模式
ADC1_Handler.Init.EOCSelection=DISABLE;//关闭EOC中断
ADC1_Handler.Init.ContinuousConvMode=DISABLE;//关闭连续转换
ADC1_Handler.Init.NbrOfConversion=1;//1个转换在规则序列中 也就是只转换规则序列1
ADC1_Handler.Init.DiscontinuousConvMode=DISABLE;//禁止不连续采样模式
ADC1_Handler.Init.NbrOfDiscConversion=0;//不连续采样通道数为0
ADC1_Handler.Init.ExternalTrigConv=ADC_SOFTWARE_START; ADC1_Handler.Init ExternalTrigConv Edge=ADC_EXTERNALTRIGCONVEDGE_NONE;//使用软件触发
ADC1_Handler.Init.DMAContinuousRequests=DISABLE;//关闭DMA请求
HAL_ADC_Init(&ADC1_Handler); //初始化
DA输出滤去整流输出电压中的纹波的电路有两种方案可以选择,一种是APF,一种是LC滤波器。
选用3.5寸串口屏,通过TTL与控制板的IO口相连,还可以通过USB转TTL与串口屏相连接。
串口屏内部有字库提供,直接使用。字体的显示常用的就两种方法,一是在控件里面直接输入要显示的汉字内容。二是通过控制板发送指令集,调用字库里面的汉字进行显示。在界面设计的时候用到了第一种方法,第二种是在进行自动测试的时候,进行汉字的显示,测量出误差通过串口返回给串口屏控件,进行数据于汉字的显示。
在串口屏上加上背景图片,加入到串口屏之中再进行选择、调整模糊度设置。
在串口屏上加上曲线描点控件,设置描点的方式、方向、速度等等,其次选择表格的类型、格数,要设置背景、表格、画线颜色,预先通过设计软件设计好之后下载到屏幕,描点直接通过串口发送y轴的值,将这些值放在连续的循环函数里面就可以实现不断地循环描点。
printf(“add 2,1,%dxffxffxff”,ch1);向串口屏发送指令,使其不断的进行描点画线。
采用实测与理论数据结合的方式进行测量与测试。以运算放大器的特性参数测量为准,用示波器测量电压幅度值,在和ADC采集的数据进行对比,显示基本平滑。使用频谱仪测量dds的输出功率,和adc采集的值进行对比,发送给串口屏,进行数据的接受和显示,完成数据的描点的画线。通过采集数据统计表明,本模块输入电阻,输出电阻,增益等数据误差不超过10%,得到了一下数据。
表1 实验数据
设计基于stm32放大器测试仪,对单片机程序编写,完成SPI、串口的通信,完成ADC的使用,电路方面主要是检波电路,以及滤波器的设计。完成系统架构要求后,对方案的理论进行模拟与仿真测试。
之后对整体的理论方案软件部分的实现进行程序编写,首先控制板自身的整体框架的实现,后面再加上ADC的功能的实现,和引脚功能的映射,然后实现与DDS信号源的通信,还有数控衰减器的SPI通信。最后通过串口与串口屏进行数据的交互,实现显示功能、控制功能。再加上显示动态Adc值,与故障的检测功能的判定。然后通过串口的的数据发送,在串口屏上进行描点的操作。最终完成了整个软件的编写过程。