基于DSP的跟踪频率变化的交流有样技术
D11、D12,D21、D22为运放输入限幅保护电路;C11、R14,C21、R23为互感器相移补偿电路。因采样时只要保证一个周波采样N点,什么时候开始并不重要,所可以省去相移补偿电路。
R11,R12、R13,R21、R22的值可以通过以上给出的电流、电压值计算出来:R11=100V/2mA,R12+R13=R21+R22=3.5V/2mA。运放的输出端可以接一电容进行滤波。
运放的输出可以再接一级电压跟随器(如图2的U1A)起缓冲、隔离、提高带载能力的作用。
(2)过零触发电路
具体电路如图2所示。U1A构成的电压跟随器的作用如上所述,它的正端输入来自互感器电路的输出。U2A构成一个过零比较电路,D2稳压二极管使比较器的输出为0~5V,将模拟信号转换成数字信号送入DSP的捕获器输入端CAP1和不可屏蔽中断端NMI。
(3)A/D转换器和DSP的接口电路
电路原理如图3所示。ADC芯片采样14位的MAX125。TMS320F240的定时比较器输出端T3CMP接MAX125的启动转换器CONVST;MAX125转换结束产生中断,通过INT脚接DSP的XINT1脚向DSP申请中断,DSP在中断程序中读取转换结果。DSP对MAX125的操作是通过端口访问完成的,MAX125的片选端CS4接译码器的一个输出端,译码器的输入和使能端由DSP的地址线和I/O信号LS控制。
每隔一个采样周期(T/N)T3CMP端输出一个下降沿脉冲,启动MAX125进行一次A/D转换。采样间隔会根据电网频率的变化自动调整。
4 软件设计
下面给出几个程序函数。具体数据处理的函数因系统功能不同而异,限于篇幅这里不作讨论。
(1)定时器、捕获器初始化程序:
void init_TimerCapturet()
{*T2CNT=0; /*计数寄存器初始化*/
*T3CNT=0;
*T3CMP=1000;
*T2PER=30000;
T3PER=4000; /T2PER、T3PER会在NMI中断程序中根据电量频率的变化作出相应的调整*/
*CAPCON=0XBC55; /*设置捕获器*/
*GPTCON=0X186A;
*T2CON=0X17CA; /*方式2,分频系数为128*/
*T3CON=0X10CA; /*方式2,分频系数为1*/
*NMI_CR=0X64; /*设置不可屏蔽中断*/
}javascript:window.open(this.src);" style="cursor:pointer;"/>
(2)ADC转换结束中断响应程序
void c_int1()
{int i;/*其余为全局或静态变量*/
/*程序中读取ADC的转换结果*/
if(AChanel= =1) /*读A组3路的转换结果*/
{ outport(0x01,0x03);/*输出MAX125的控制字*/
inport(0x01,&ADC_Data[0]);
inport(0x01,&ADC_Data[1]);
inport(0x01,&ADC_Data[2]);
AChanel=0;
}
else
{/*如上读取B组3路的转换结果*/
}
/*将14位的结果转换为16位的(初码存放)*/
for(i=1;i<6;i++)
ADC_Data=ADC_Data<<2/4;
}
(3)不可屏蔽中断的中断程序
void c_int7() {
asm("SETC INTM");/*禁止中断*/
*T2CNT=0;/*作捕获器的时在,一个周波开始时其值为0*/
*T3PER=*FIFO1;/*T3的计数周期是一个周波周期的1/128*/
asm("CLRC INTM");/*使能中断*/
}
本文充分利用了TM320F240的片内资源,巧妙地实现了动态跟踪频率变化的交流采样,希望对使用该系列DSP进行测控领域开发的技术人员有所启发。