shidalin123 发表于 2019-12-18 17:23:19

模拟量在零点有误差

刚才发的贴子感谢两位大神的帮忙已经好使了,可是又出现了新的问题,麻烦大家再帮忙看一下。由于我检测的是交流电,所以先通过1:2000的电流互感器变成小电流,再通过叠加1.65V的直流电把模拟量送进单片机。
模拟量换算部分的程序如下:
float Get_ADC(u32 channel){
        u32 j;
        float temp,Rms,youxiao;
        Rms=0;
        temp = 0;
        youxiao = 0;
        for(j=0;j<SAMPLS_NUM ;j++){               
                youxiao = ADC_SourceData*3.3/4095;//ADC输入量
                temp=(youxiao-1.65)*(youxiao-1.65);//减去1.65V的直流分量
                Rms+=temp;
        }
        Rms=sqrt(Rms/SAMPLS_NUM);
return Rms;               
}

void DMA1_Channel1_IRQHandler(void){
        u32 xxx;
        if(DMA_GetITStatus(DMA1_IT_TC1) != RESET){               
                ADC_Cmd(ADC1, DISABLE);       
                currentA = Get_ADC(1)*2000;//电流换算
                currentB = Get_ADC(2)*2000;
                currentC = Get_ADC(3)*2000;
                ADC_Cmd(ADC1, ENABLE);
        }
        DMA_ClearITPendingBit(DMA1_IT_TC1);
}

在没有外部交流信号输入的时候,模拟量检测的是直流1.65V,但是实际结果显示的是youxiao在1.648--1.651之间波动,导致Rms的结果变成0.002或0.001,再通过2000的比值换算后值就变成了1或2,不为0。
有什么办法能消除这种在零点的误差吗?

wenyangzeng 发表于 2019-12-18 17:52:04

可以使用软件数字滤波来解决

shidalin123 发表于 2019-12-18 17:55:08

wenyangzeng 发表于 2019-12-18 17:52
可以使用软件数字滤波来解决

能说具体一点吗

mylovemcu 发表于 2019-12-19 09:11:26

刚算了一下1.648-1.651转换完的数据是2045-2049之间这个数据就算外部电压是理想的1.65也就差不多是这个精度这算可以的了问题就是单片机的AD精度要想提高精度楼上说的数字滤波是一种思路具体效果啥样不清楚再一个方法就是外挂一个AD转换芯片16位以上的就没问题了可以先尝试第一种方案不行的话用第二种方案

tanic 发表于 2019-12-19 09:20:28

别挣扎了,方案问题,精度不够

tanic 发表于 2019-12-19 09:22:51

首先要明确你们的监测范围,和监测精度,再设计电路,1:2000你觉得能满足你们的需求吗?,不能就设计
1:20:200:2000 单个档位,软件根据实际情况选择一个档位处理

shidalin123 发表于 2019-12-19 16:36:35

tanic 发表于 2019-12-19 09:22
首先要明确你们的监测范围,和监测精度,再设计电路,1:2000你觉得能满足你们的需求吗?,不能就设计
1:20: ...

shidalin123 发表于 2019-12-19 16:37:19

mylovemcu 发表于 2019-12-19 09:11
刚算了一下1.648-1.651转换完的数据是2045-2049之间这个数据就算外部电压是理想的1.65也就差不多是这个 ...

嗯 软件用了试了几种滤波 都没什么效果。

shidalin123 发表于 2019-12-19 16:38:08

tanic 发表于 2019-12-19 09:22
首先要明确你们的监测范围,和监测精度,再设计电路,1:2000你觉得能满足你们的需求吗?,不能就设计
1:20: ...

shidalin123 发表于 2019-12-19 16:38:42

tanic 发表于 2019-12-19 09:20
别挣扎了,方案问题,精度不够

嗯嗯 好的 谢谢 我挣扎了很久 放弃了 各种滤波 根本就没用
页: [1] 2
查看完整版本: 模拟量在零点有误差