打印

DSP采样偏置如何消除?

[复制链接]
1137|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eijielauh|  楼主 | 2016-7-27 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP, dc, ADC, AD, TE
我在启动前,采一个工频周期的数据点然后求和再取平均值。最好在正常运行的时候将采样得到的数据减去平均值。但是这修正却导致输出电压由原来1V左右的偏置变成了5V左右偏置。
启动前修正程序:
  // DC Vin
                    ADC_result_convB0    =    *Flash_ZONE0;
                    SD_TEMP[0]            =    ADC_result_convB0;
                    // DC Iin
                    ADC_result_convB1    =    *Flash_ZONE0;
                    SD_TEMP[1]            =    ADC_result_convB1;
                    // Vo  Voltage of Cap
                    ADC_result_convB2    =    *Flash_ZONE0;
                    SD_TEMP[2]            =    ADC_result_convB2;
                    // Vg  Voltage of Grid or AC Bus
                    ADC_result_convB3    =    *Flash_ZONE0;
                    SD_TEMP[3]            =    ADC_result_convB3;

                    // IL
                    ADC_result_convB4    =    *Flash_ZONE0;
                    SD_TEMP[4]          =    ADC_result_convB4;

                    // Io   Output Current
                    ADC_result_convB5    =    *Flash_ZONE0;
                    SD_TEMP[5]             =    ADC_result_convB5;

                    ADC_result_convB6    =    *Flash_ZONE0;

                    ADC_result_convB7    =    *Flash_ZONE0;

    ADC_Result[0] =  SD_TEMP[0] ;
    ADC_Result[1] =  SD_TEMP[1] ;
    ADC_Result[2] =  SD_TEMP[2] ;
    ADC_Result[3] =  SD_TEMP[3] ;
    ADC_Result[4] =  SD_TEMP[4] ;
    ADC_Result[5] =  SD_TEMP[5] ;


    if(ADC_Result[2]> -500 && ADC_Result[2]< 500 )
    {
        if(SelfDetect_flag[0]<SD_N)
        {
            ADC_offset_iq5[2] =  ADC_offset_iq5[2] + ADC_Result[2] ;

            SelfDetect_flag[0]++;
        }
        else
        {
            SelfDetect_flag[0]=SD_N;
        }
    }

    if(ADC_Result[4]> -500 && ADC_Result[4]< 500)
    {
        if(SelfDetect_flag[1]<SD_N)
        {
            ADC_offset_iq5[4] =  ADC_offset_iq5[4] + ADC_Result[4] ;

            SelfDetect_flag[1]++;
        }
        else
        {
            SelfDetect_flag[1]=SD_N;
        }
    }

    if(ADC_Result[5]> -500 && ADC_Result[5]< 500)
    {
        if(SelfDetect_flag[2]<SD_N)
        {
            ADC_offset_iq5[5] =  ADC_offset_iq5[5] + ADC_Result[5] ;

            SelfDetect_flag[2]++;
        }
        else
        {
            SelfDetect_flag[2]=SD_N;
        }
    }
数据读取修正:
// DC Vin
                ADC_result_convB0    =    *Flash_ZONE0;
                ADC_out[0]            =    ADC_result_convB0*ADC_coefficient[0];
                // DC Iin
                ADC_result_convB1    =    *Flash_ZONE0;
                ADC_out[1]            =    ADC_result_convB1*ADC_coefficient[1];
                // Vo  Voltage of Cap
                ADC_result_convB2    =    *Flash_ZONE0;
                 ADC_out[2]            =    (ADC_result_convB2-ADC_offset_iq5[2])*ADC_coefficient[2];;//(ADC_result_convB2-ADC_offset_iq5[2])*ADC_coefficient[2];
                // Vg  Voltage of Grid or AC Bus
                ADC_result_convB3    =    *Flash_ZONE0;
                ADC_out[3]            =    ADC_result_convB3*ADC_coefficient[3];

                // IL
                ADC_result_convB4    =    *Flash_ZONE0;
                ADC_out[4]          =    (ADC_result_convB4-ADC_offset_iq5[4])*ADC_coefficient[4];//(ADC_result_convB4-ADC_offset_iq5[4])*ADC_coefficient[4];

                // Io   Output Current
                ADC_result_convB5    =    *Flash_ZONE0;
                ADC_out[5]             =    (ADC_result_convB5-ADC_offset_iq5[5])*ADC_coefficient[5];//(ADC_result_convB5-ADC_offset_iq5[5])*ADC_coefficient[5];

                ADC_result_convB6    =    *Flash_ZONE0;
                ADC_out[6]            =    ADC_result_convB6*ADC_coefficient[6];
                ADC_result_convB7    =    *Flash_ZONE0;
                ADC_out[7]            =    ADC_result_convB7*ADC_coefficient[7];

只用Vo、IL、Io

相关帖子

沙发
玄德| | 2016-7-27 16:09 | 只看该作者

没太懂,数值越减反而越大了?


使用特权

评论回复
板凳
eijielauh|  楼主 | 2016-7-27 16:46 | 只看该作者
玄德 发表于 2016-7-27 16:09
没太懂,数值越减反而越大了?

是的呀,我感觉很奇怪。修正前电压对称还可以,但是修正后对称变差了。

使用特权

评论回复
地板
玄德| | 2016-7-27 16:52 | 只看该作者

不知道是用什么芯片采集的,编码如何,
这多半是计算程序有问题。


使用特权

评论回复
5
eijielauh|  楼主 | 2016-7-27 19:41 | 只看该作者
玄德 发表于 2016-7-27 16:52
不知道是用什么芯片采集的,编码如何,
这多半是计算程序有问题。

用AD7606采集,并行读取。

使用特权

评论回复
6
玄德| | 2016-7-27 20:51 | 只看该作者

AD7606,
最高位是1的时候表示负压;
求平均数必须考虑这个问题。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

79

帖子

0

粉丝