你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

模拟量在零点有误差

[复制链接]
shidalin123 提问时间:2019-12-18 17:23 /
刚才发的贴子感谢两位大神的帮忙已经好使了,可是又出现了新的问题,麻烦大家再帮忙看一下。由于我检测的是交流电,所以先通过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[j][channel]*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。
有什么办法能消除这种在零点的误差吗?
<
收藏 评论13 发布时间:2019-12-18 17:23

举报

13个回答
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位以上的就没问题了  可以先尝试第一种方案  不行的话  用第二种方案

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

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
别挣扎了,方案问题,精度不够

嗯嗯 好的 谢谢 我挣扎了很久 放弃了 各种滤波 根本就没用
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版