【随记】K64+MQX ADC交流采样方式对相位的影响总结

1、周波64点连续采样,8通道循环,采用如下方式、、、、

/***************************************************/
//PIT0中断服务程序: 3200Hz 片上ADC采样 每个通道采一次  WSX 2018-12-27
/****************************************************/
static void pit0_kernel_isr(void)
{
  _bsp_int_disable(INT_PIT0);
  _qpit_clear_int(0, 0);   
  
  
  //反转IO口测量一次转换需要多长时间   =5us
  if (_lwadc_wait_next(&handle_Ref125) )
  {
    _lwadc_read_raw(&handle_Ref125, &raw125);
  }
  if (_lwadc_wait_next(&handle_ACIa) )
  {
    _lwadc_read_raw(&handle_ACIa, &raw);
    ACSampling_Buff[3][SampleCounter] = SampledRawDataDiffCal(raw,raw125);   
  }
  if (_lwadc_wait_next(&handle_ACIb) )
  {
    _lwadc_read_raw(&handle_ACIb, &raw);
    ACSampling_Buff[4][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
  }

  if (_lwadc_wait_next(&handle_ACIc) )
  {
    _lwadc_read_raw(&handle_ACIc, &raw);
    ACSampling_Buff[5][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
  }

  if (_lwadc_wait_next(&handle_ACIz) )
  {
    _lwadc_read_raw(&handle_ACIz, &raw);
    ACSampling_Buff[6][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
  }

  
  
  if (_lwadc_wait_next(&handle_ACUa) )
  {
    _lwadc_read_raw(&handle_ACUa, &raw);
    ACSampling_Buff[0][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
  }

  if (_lwadc_wait_next(&handle_ACUb) )
  {
    _lwadc_read_raw(&handle_ACUb, &raw);
    ACSampling_Buff[1][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
  }

  if (_lwadc_wait_next(&handle_ACUc) )
  {
    _lwadc_read_raw(&handle_ACUc, &raw);
    ACSampling_Buff[2][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
  }
 

  
  SampleCounter++;
  
  if(SampleCounter >= (SAMPLING_POINTTS*2))//连续采集64点存储一次
  {  
    SampleCounter = 0;
   
    NewSampData_Flag = 1;        //是否还需要?
    fnGetFrequency();   
    //每采一周波重新设定中断频率,由测频得  
    _qpit_init_freq(0 , 0,  /*The Timer, The Channel*/
            sFreqency.UpdataIntFrequency, BSP_BUS_CLOCK, FALSE); 

  }
  
  _bsp_int_enable(INT_PIT0);
  _qpit_unmask_int(0, 0);
  
  return;
}

若采用上述方法将无法保证角差的稳定性,即校准后也无法稳定,原因在于转换时间无法保证(_lwadc_wait_next)。

2、改良后采集方法

首先用一个PIT保证采样频率,该服务函数内仅启动采样不读取数据,另一个PIT给转换时间留有一定余量,判COCO标志后直接读取数值,这样可以保证每个通道的采样间隔相同,即相角差稳定,可以校准使其归一。

另外,PDB的BacktoBack方式,在本质上也不能保证转换时间的稳定,它在上一个转换结束后立刻启动下一个,不能解决。

 

总结一下,在电能质量采集方面,需要保证相角的稳定性,不能容许ADC采样转换时间不稳,所以必须有稳定的触发信号,稳定的对各个通道进行触发,不能依赖转换时间的结束。这个触发可以是中断,可以是其它外部触发。

你可能感兴趣的:(Mqx,K60,ADC)