找回密码
 立即注册
楼主: 梁工

实际精度13位, 真12位ADC过采样到16位分辨率,完整方案

 火 [复制链接]

83

主题

8318

回帖

1万

积分

超级版主

积分
17938
 楼主| 发表于 2026-7-15 14:59:31 | 显示全部楼层
ckhz*** 发表于 2026-7-15 12:58
想用pt100和k型采集温度,都使用过采样的方案,14位分辨率好还是16位分辨率好 ...

看你的调理电路和要求的温度分辨率,才能确定。
回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
发表于 2026-7-15 22:34:49 | 显示全部楼层
梁*** 发表于 2026-7-15 14:59
看你的调理电路和要求的温度分辨率,才能确定。

好的,谢谢梁工,我还有一个问题,就是pt100电路中,运放A3的反向输入端A,是否有必要加一个跟随器,来确保精度
截图202607152241115413.jpg

点评

增加运放可能因为运放的失调电压引起更大误差。 PT100的导线电阻一般不超过1欧姆,100K电阻是10万欧姆,电阻引起的误差是1/10万,你的运放精度都远没这么高。 20多年来,PT100我基本不用这种电路了,都是用双路ADC  详情 回复 发表于 2026-7-16 10:31
回复

使用道具 举报 送花

83

主题

8318

回帖

1万

积分

超级版主

积分
17938
 楼主| 发表于 2026-7-16 10:31:35 | 显示全部楼层
ckhz*** 发表于 2026-7-15 22:34
好的,谢谢梁工,我还有一个问题,就是pt100电路中,运放A3的反向输入端A,是否有必要加一个跟随器,来确 ...

增加运放可能因为运放的失调电压引起更大误差。
PT100的导线电阻一般不超过1欧姆,100K电阻是10万欧姆,电阻引起的误差是1/10万,你的运放精度都远没这么高。

20多年来,PT100我基本不用这种电路了,都是用双路ADC比如TM7705(AD7705),不需要恒流源,不需要调整。
回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
发表于 2026-7-16 22:15:05 | 显示全部楼层
梁*** 发表于 2026-7-16 10:31
增加运放可能因为运放的失调电压引起更大误差。
PT100的导线电阻一般不超过1欧姆,100K电阻是10万欧姆, ...

谢谢梁工
回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
发表于 2026-7-18 14:06:32 | 显示全部楼层
梁*** 发表于 2026-7-16 10:31
增加运放可能因为运放的失调电压引起更大误差。
PT100的导线电阻一般不超过1欧姆,100K电阻是10万欧姆, ...

梁工,我想再请教一下,如果使用单片机内部基准电压1.19v来反推ad参考电压,对通道15的adc采样值,有必要使用过采样方法吗?

点评

过采样可以得到平均值滤波的效果,有必要使用过采样。  详情 回复 发表于 2026-7-18 16:03
回复

使用道具 举报 送花

83

主题

8318

回帖

1万

积分

超级版主

积分
17938
 楼主| 发表于 2026-7-18 16:03:58 | 显示全部楼层
ckhz*** 发表于 2026-7-18 14:06
梁工,我想再请教一下,如果使用单片机内部基准电压1.19v来反推ad参考电压,对通道15的adc采样值,有必要 ...

过采样可以得到平均值滤波的效果,有必要使用过采样。
回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
发表于 2026-7-18 16:24:15 | 显示全部楼层
梁*** 发表于 2026-7-18 16:03
过采样可以得到平均值滤波的效果,有必要使用过采样。

好的,梁工
回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
发表于 2026-8-2 21:37:19 | 显示全部楼层
梁工,我再请教一下,我想采集2路温度和1路内部基准电压(用来反推cpu供电电压),1)如果采用定时器触发adc转换,不采用12.8k,采用6.4k,这样3路ad转换的话,需要定时器的频率为6.4K*3=19.2k,每个通道采样256次,使用过采样方法,需要40ms,这样也是可以抵消掉工频干扰吧  2)本来计划采用例子中的12.8k频率,但是12.8k*3=38.4k,周期为26.04us,但是我定义#define ADC_SPEED    3  ,一个adc转换周期计算下来要12us,余量不是很大,这样的想法是否正确呢,3)最后想请教一下,需要考虑过采样和抵消工频干扰,那么3个通道采集温度,比较好的方案是什么,您是推荐采用38.4k还是19.2k

点评

不是的,不管多少路ADC,使用6.4KHz触发,定时器就是6.4KHz中断率,使用PWM硬件触发更好。使用一个adc_index做索引。假设ADC输入为P1.0(0通道) P1.1(1通道) 初始化ADC时,ADC时钟设置为3MHz,采样时间20(7us),ADC  详情 回复 发表于 2026-8-3 10:53
回复

使用道具 举报 送花

83

主题

8318

回帖

1万

积分

超级版主

积分
17938
 楼主| 发表于 2026-8-3 10:53:53 | 显示全部楼层
ckhz*** 发表于 2026-8-2 21:37
梁工,我再请教一下,我想采集2路温度和1路内部基准电压(用来反推cpu供电电压),1)如果采用定时器触发ad ...

不是的,不管多少路ADC,使用6.4KHz触发,定时器就是6.4KHz中断率,使用PWM硬件触发更好。使用一个adc_index做索引。假设ADC输入为P1.0(0通道) P1.1(1通道)
初始化ADC时,ADC时钟设置为3MHz,采样时间20(7us),ADC转换时间大约12us。ADC中断优先级最高。
定时器中断操作:
adc_index=0;  //0通道
ADC_CONTR = 0x80+0x40+0;  //从0通道开始

在ADC中断里:
adc[adc_index] = ((u16)ADC_RES <<8) + ADC_RESL;  //保存结果
if(adc_index == 0)
{
     adc_index=1;  //1通道
     ADC_CONTR = 0x80+0x40+1;  //1通道
}
else if(adc_index == 1)
{
     adc_index=2;  //1通道
     ADC_CONTR = 0x80+0x40+15;  //15通道
}
else
{
     adc_index=0;  //0通道
     ADC_CONTR = 0x80+0;  //0通道
    B_ADC_ok = 1;  //标志ADC已完成
}
回复

使用道具 举报 送花

已绑定手机

5

主题

34

回帖

341

积分

中级会员

积分
341
发表于 2026-8-3 13:04:40 | 显示全部楼层
我可能没有表达清楚,如果用定时器触发adc,3个通道,为了确保是工频的整数倍,定时器选择6.4k,定时器每次中断只能触发一个通道的转换,由adc_ch_sel来控制,依次转换ch0,ch1,ch2,这样的话通道0需要等3个周期才能转换1次,频率就是6.4k/3 ,所以想把tim3的频率设置为6.4*3=19.2k
void Timer3_Isr() interrupt 19
{
        if(adc_busy == 1)
                return;
        adc_busy = 1;
        if(adc_ch_sel == 0)
        {
                ADC_RES  = 0; //清空转换结果
                ADC_RESL = 0;
                ADC_CONTR &= 0xF0;
                ADC_CONTR |= ADC_START | ADC_CH_1;        //启动ADC CH1
        }
        else if(adc_ch_sel == 1)
        {
                ADC_RES  = 0; //清空转换结果
                ADC_RESL = 0;
                ADC_CONTR &= 0xF0;
                ADC_CONTR |= ADC_START | ADC_CH_2;        //启动ADC CH2
        }
        else if(adc_ch_sel == 2)
        {
                ADC_RES  = 0; //清空转换结果
                ADC_RESL = 0;
                ADC_CONTR &= 0xF0;
                ADC_CONTR |= ADC_START | ADC_CH_3;        //启动ADC CH3
        }
}


点评

你要分时采样的原因是什么? 我的采样就是工频的整数倍。  详情 回复 发表于 2026-8-3 15:32
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-10 03:17 , Processed in 0.075669 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表