找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5516|回复: 7
收起左侧

STC8A8K单片机双通道ADC结果一样的问题!

[复制链接]
ID:581932 发表于 2019-7-10 21:29 | 显示全部楼层 |阅读模式
单通道ADC结果没有问题,现在需要“同时”采集两路ADC,发现结果总是惊人的一致!甚至一个通道加电压,另一个通道不加电压,两者得到的结果都是一样的!
在论坛中发现一个类似的帖子:http://www.51hei.com/bbs/dpj-153743-1.html
该网友提到“把原通道清零”可以解决,但是我没太懂,请哪位高人指点一下~

这是初始化和ADC函数:我使用的是P0.4和P0.5两通道。
uchar ADCch_dz=0x0C; //P0.4
uchar ADCch_gd=0x0D; //P0.5


微信截图_20190710212222.png
这是在主函数中调用的ADC函数,这里执行完,DZ_Data和GD_Data结果保持一致。
500ms查询一次。
微信截图_20190710212403.png



回复

使用道具 举报

ID:123289 发表于 2019-7-11 09:49 | 显示全部楼层
ADC采样时,为了防止“弹动”,会用一只电容采样输入的电压。
当你下达起动命令后,电容就与输入分离,这样电容上的电压就不再受输入影响了(弹动),再对电容上的电压进行对分处理。
这个电容在ADC内部。
多路采样时,多路切换开关在电容的前端,当你切换之后,需要保持一段时间,因为电容上的电压是不能跃变的!否则电容上的电压就与上一次的一样!
明白这个道理正确的做法如下:
1、起动本次采样,等待采样结束(这期间去做其它事,不要呆等浪费CPU时间)。
2、采样结束了,立即切换到下个通道(不要急于分析处理数据),这样最节省采样时间。
3、处理分析本次采样到的数据。
4、估计切换有了一段时间了(自己按实际情况评估这段时间的长短),再起动采样测量下个通道的电压,这时电压采样也OK了(采样电容有了足够的充电时间)。
这样你的问题就解决了,而且数据稳定!
不是高手注意不到这个细节,也不一定明白其中的道理。
回复

使用道具 举报

ID:123289 发表于 2019-7-11 09:51 | 显示全部楼层
这个书上有(需要看原理图),但你不一定注意到。你的师傅也未必能讲透,师傅也未必注意到。
回复

使用道具 举报

ID:581932 发表于 2019-7-11 09:56 | 显示全部楼层
解决了!
uint GetADCresults(uchar adcch)
{
        ADC_RES   = 0;
        ADC_RESL  = 0;
        ADC_CONTR = ADC_POWER|ADC_START|adcch;
        Delay(10);
        while(!(ADC_CONTR & ADC_FLAG));             //等待ADC完成
        ADC_CONTR &= ~ADC_FLAG;                     //清零ADC_FLAG
        ADC_CONTR &= ~ADC_START;                    //关闭ADC
       
        return (ADC_RES<<8 | ADC_RESL);
}

最重要的是这一句。初始化的时候不要上电。在采样函数中每切换一次通道就上一次电就可以了。
ADC_CONTR = ADC_POWER|ADC_START|adcch;
回复

使用道具 举报

ID:613800 发表于 2019-12-12 20:34 | 显示全部楼层
echowilson 发表于 2019-7-11 09:56
解决了!
uint GetADCresults(uchar adcch)
{

这等与开启ad电源,转换第一个端口ad值,然后再次开启电源,转换下一个端口ad值???
回复

使用道具 举报

ID:826405 发表于 2020-10-6 22:59 | 显示全部楼层
能分享下编程么,小白学习下,谢谢
回复

使用道具 举报

ID:883810 发表于 2023-12-6 22:17 | 显示全部楼层
echowilson 发表于 2019-7-11 09:56
解决了!
uint GetADCresults(uchar adcch)
{

谢谢
回复

使用道具 举报

ID:1034262 发表于 2023-12-7 00:27 | 显示全部楼层
用STC官方的例程一试就好。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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