欢迎光临散文网 会员登陆 & 注册

ADC 使用相关注意事项以及常见问题

2023-06-21 10:01 作者:赛元MCU平台  | 我要投稿

       赛元的大部分芯片都具有 ADC 功能,其中 92F 系列大部分芯片的 ADC 有两个基准电 压可以选择,VDD 和内部 2.4V,内部 2.4V 要求的芯片供电电压为 2.9V 以上,低于 2.9V 内 部 2.4V 无 法 保 证 稳 定 ; 95F 系 列 芯 片 的 ADC 有 三 个 基 准 电 压 可 以 选 择 , VDD/2.048V/1.024V,内部 2.048V 要求芯片供电电压在 2.7V 以上,内部 1.024V 要求芯片 供电电压在 2.4V 以上,低于供电电压限制,内部参考电压的值会无法保证稳定;SC92F859X 系列芯片的 ADC 基准电压与 95F 系列芯片一致。 

       此文档主要对 ADC 使用过程中常见的问题以及相关注意事项进行说明,包含以下几个内容:

1、ADC 采样电路注意事项; 

2、ADC 多通道转换注意事项; 

3、怎样改善 ADC 的采样误差; 

4、如何使用 ADC 检测电源电压; 

5、加入 ADC 检测功能之后,出现程序跑死的现象是什么原因; 

6、ADC 采样值如何计算; 

7、ADC 测量电压的范围是多少。 

以下为具体内容: 

1、ADC 采样电路注意事项 

       ADC 采样口需要在靠近管脚处加 103 电容,ADC 转换需要让电源电压稳定,所以在使用 ADC 功能时,请在靠近 IC 的 VCC 和 GND 处加 104 电容,以保证转换结果准确。 

2、ADC 多通道转换注意事项 

       赛元芯片大多数型号拥有多路 ADC 通道,但每次转换只能转换一个通道,若想实现多路 通道的ADC信号的采集,需要在一路ADC通道转换完毕后将转换口切换至另一路ADC, 如此反复以实现多通道的 ADC 转换。若在 ADC 通道切换后马上进行 AD 转换,通道口 线上的电压可能存在不稳定的现象,在切换通道后转换的第一个值可能会存在异常,建议 用户对某个通道做连续的多次采集和转换后,将切换通道后转换的第一个值或几个值去 除,或将最大值及最小值去除,再将剩余的 AD 转换值求平均值得到采集结果。 

使用示例如下: 

unsigned int ADC_Value0,ADC_Value1,ADC_Value2; 

unsigned int ADC_Convert(void) 

unsigned int Tad=0,MinAd=0x0fff,MaxAd=0x0000,TempAdd=0; 

unsigned char t=0; 

for(t=0;t<10;t++) 

ADCCON |= 0X40;                     //开始 ADC 转换 

while(!(ADCCON&0x20));          //等待 ADC 转换完成,具体转换完成标志位请参照规格。

 ADCCON&=~(0X20);               //清中断标志位 

Tad = ((unsigned int)ADCVH<<4)+(ADCVL>>4);          //取得一次转换值 

if (Tad>MaxAd) 

MaxAd=Tad;                              //获得当前的最大值 

if (Tad<MinAd)

MinAd=Tad;                                //获得当前的最小值 

TempAdd+=Tad;                         //转换值累加 

TempAdd-=MinAd;                      //去掉最小值 

TempAdd-=MaxAd;                    //去掉最大值 

TempAdd>>=3;                         //求平均值 

return(TempAdd); 

void ADC_channel(unsigned char channel) 

ADCCON = ADCCON &0xE0| channel;          //ADC 输入选择为 ADCchannel 口  

void ADC_Multichannel() 

ADCCFG0 = 0x07;            //设置 AIN0、AIN1、AIN2 设置为 ADC 口,并自动将上拉电阻移除。 

ADCCON |= 0X80;            //开启 ADC 模块电源 

ADC_channel(0);              //ADC 入口切换至 AIN0 口 

ADC_Value1 = ADC_Convert();           //启动 ADC 转换,获得转换值 

ADC_channel(1);               //ADC 入口切换至 AIN1 口 

ADC_Value1 = ADC_Convert();             //启动 ADC 转换,获得转换值 

ADC_channel(2);                                   //ADC 入口切换至 AIN2 

ADC_Value2 = ADC_Convert();             //启动 ADC 转换,获得转换值

3、怎样改善 ADC 的采样误差 

使用 ADC 采样实际值和理论值达到几百甚至上千个值,可以从以下几个方面进行检查: 

1) 查看 ADC 初始化是否正确,ADC 电源是否提前打开,AD 口的选择除了需要设置 选择 ADC 采样通道以外,还要有 ADC 端口设置寄存器需要将 ADC 采样口所在的 IO 口设置为 ADC 输入口,检查 ADC 采样口选择是否正确; 

2) ADC 转换完成标志位判断错误,或者是 bit 位搞错,导致启动 ADC 转换后没有等 待转换完成就进行了 ADC 值的读取,赛元各系列芯片的 ADC 转换完成的标志位 不是全部都在同一个 bit 位的,需要注意,大多数集中在 ADCCON 寄存器的 bit4 和 bit5,具体需要查看规格书;

3) ADC 检测需要将对应的 IO 口设置为输入模式,同时需要设置为 ADC 输入口,设 为输出模式的话在进行 AD 口切换时有可能导致 ADC 值偏差。 

使用 ADC 采样实际值和理论值相差几十到一两百个值时,可以从以下几个方面进行检查: 

1) 是否有切换 ADC 通道或者是参考电压,建议切换后延时一下等待电路稳定后再进 行 ADC 转换; 

2) 输入电压或者是芯片供电电压不稳定,可以实验一下看切为内部参考电压 ADC 采 样值是否有改善; 

3) 分压电阻太大,导致 ADC 采样值和理论值有偏差,可以减小分压电阻实验是否有 改善,分压电阻超过 1MΩ 就会有影响; 

4) VDD 做参考时,VDD 电压有较大波动,或者是输入电压有较大波动,或者是 VDD 电压和输入电压波动的频率不一样,都会导致 ADC 采样值不准,可以将芯片电源 管脚上的 104 电容尽量靠近芯片管脚摆放,或将 ADC 采用管脚上的电容值减小, 使电源电压的波动与采样电压的波形频率与幅度尽量保持一致。 

4、如何使用 ADC 检测电源电压 

赛元芯片的 ADC 通道选择中提供了测量 1/4VDD 的通道用于测量电源电压,将 ADC 采 样通道设置为测量 1/4VDD 的通道,92F 系列芯片选择内部 2.4V 参考电压,95F 系列芯 片选择内部 2.048V 或 1.024V 参考电压,获取的 ADC 采样值就是 1/4VDD 的采样值,所 得到的的 ADC 采样值通过反算可以得到电源电压的 1/4,再乘以 4 就可以得到电源电压, 具体的 ADC 采样通道设置可查看对应芯片的规格书。 

5、加入 ADC 检测功能之后,出现程序跑死的现象是什么原因 

不同型号的芯片,ADC 转换完成的标志可能不同,有的在 ADCCON 寄存器的 bit4,有的 在 ADCCON 寄存器的 bit5,请检查 ADC 转换完成标志位是否操作有误,程序中一直在 等待转换完成的标志,导致出现程序跑死的现象。 

6、ADC 采样值如何计算 

ADC 采样值的计算方式为:(被采样电压/参考电压)*满偏值,其中被采样电压为 ADC 通 道检测的实际电压值,参考电压为用户所设置的参考电压值,92F 系列芯片的参考电压可 选 VDD 或内部 2.4V,95F 系列的参考电压可以选择 VDD,内部 2.048V 和内部 1.024V, 满偏值为 ADC 采样值能达到的最大值,例如 12 位的 ADC 满偏值是 4095,假如使用 12bit 的 ADC,选择内部 2.4V 为参考电压,ADC 采样通道上的电压值为 2V,那么得到 的采样值为:(2/2.4)*4096=3413。 

7、ADC 测量电压的范围是多少 

赛元芯片使用 ADC 功能可以检测的电压范围与所选择的 ADC 基准电压有关,电压检测 范围为 0V 到参考电压,不同系列的芯片,ADC 参考电压不同,用户需要根据被测量电压 的电压值范围选择合适的参考电压: 

1) 92F 系列芯片的 ADC 有两个基准电压可以选择,VDD 和内部 2.4V,内部 2.4V 要 求的芯片供电电压为 2.9 以上,低于 2.9V 内部 2.4V 无法保证稳定的 2.4V; 

2) 95F 系列芯片的 ADC 有三个基准电压可以选择 VDD/2.048V/1.024V,内部 2.048V 要求芯片供电电压在 2.7V 以上,内部 1.024V 要求芯片供电电压在 2.4V 以上,低 于供电电压限制内部参考电压的值会无法保证稳定; 

3) 目前赛元的芯片还不能选择外部电压做 ADC 基准电压。


ADC 使用相关注意事项以及常见问题的评论 (共 条)

分享到微博请遵守国家法律