打印

pic24 adc 每次读数都不一致,代码如下:

[复制链接]
3555|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doob|  楼主 | 2013-3-28 12:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*************************************************
函数名称:void ad_set(int ch)
输入参数:(int ch)
输出参数:void
功能描述:设置adc 参数
创建日期:2013-02-28
修改日期:2013-02-28
**************************************************/
//AD初始化
void ad_set(int ch)
{
        AD1PCFG = ch;
        AD1CON1=0x80e0;  //开启AD模块,输出整数,自动转换,SAMP置高启动AD
        AD1CON2=0x0002;  //参考电压为电源电压,连续转换21次,16字节位缓冲器        AD1CON3=0X1F02;  //时钟源为系统时钟,自动采样时间位1TAD,转换时钟选择位TCY
        AD1PCFG=0xffff-(1<<ch);  ////单独使能AN9,其他为I/O口
        AD1CON1bits.ADON = 1; // 打开 ADC


}

/*************************************************
函数名称:int ad_read(int ch)
输入参数:(int ch)
输出参数:int adc 值
功能描述:读取adc 数据
创建日期:2013-02-28
修改日期:2013-02-28
**************************************************/
int ad_read(int ch)
{
        AD1CHS = ch; // 选择通道
        AD1CON1bits.SAMP=1;        //启动转换
        while(!AD1CON1bits.DONE);   //等待转换结束
        AD1CON1bits.SAMP = 0;       
        AD1CON1bits.ADON = 0;       
        return ADC1BUF0;  //发送AD值
}

void adc2_test()
{
        unsigned int ADvalue;

        mInitCtrlIO();
        ad_set(2);                // VMEAS
        ADvalue=ad_read(2);
}
有做过ADC的大侠说说,我做了个测试
按一次键就读一次AD值,差别挺大的,不是一点点;
3.01   3.03.。。大概这个 级别;
沙发
yewuyi| | 2013-3-28 13:09 | 只看该作者
你自己先说说,想要实现一个稳定的ADC转换,需要满足那些条件?

使用特权

评论回复
板凳
doob|  楼主 | 2013-3-28 13:31 | 只看该作者
1:稳定的基准源,不知内部基准对AD值影响大不大;我觉得按键应该不会引起电压波动吧;
2:不知道;
3:不知道;
呵呵

使用特权

评论回复
地板
huangxz| | 2013-3-28 13:54 | 只看该作者
doob 发表于 2013-3-28 13:31
1:稳定的基准源,不知内部基准对AD值影响大不大;我觉得按键应该不会引起电压波动吧;
2:不知道;
3:不 ...

0.6%,差不多吧,ADC如果要很高是不太可能的。如果要求精确测量,还是要输入稳定性很高才可以.
pic应该是10bit的ADC,所以标称应该可以达到0.1%

使用特权

评论回复
5
yewuyi| | 2013-3-28 17:09 | 只看该作者
本帖最后由 yewuyi 于 2013-3-29 09:48 编辑
doob 发表于 2013-3-28 13:31
1:稳定的基准源,不知内部基准对AD值影响大不大;我觉得按键应该不会引起电压波动吧;
2:不知道;
3:不 ...


1、基准源要稳定
2、信号频率和采样频率和满足一定的条件
3、ADC的输入阻抗要满足要求
4、转换速度的设置要合适
5、ADC分辨率和绝对精度对采样结果的影响
6、ADC模块的电源对转换结果的影响。
7、。。。
先搞懂前6点就弄基本掌握ADC的使用了。

使用特权

评论回复
6
doob|  楼主 | 2013-3-28 17:35 | 只看该作者
谢谢楼上专家,亲临指导;
ADC  是自己带的AD 10BIT
1:明白;
2:?
3:?
4:?
5:pic24fj64gb002 自带的10bitAD;
6:不是adc模块,是单片机自带的的额;

使用特权

评论回复
7
yewuyi| | 2013-3-29 09:53 | 只看该作者
doob 发表于 2013-3-28 17:35
谢谢楼上专家,亲临指导;
ADC  是自己带的AD 10BIT
1:明白;

1、不明白的可以先百度,如果直接说不明白,别人总不能从最基础的给你讲?别人只能针对你理解不正确的某个点进行讲解,而不可能花大把时间给你就某个事物的整个面进行讲解,论坛是交流的,可不是开道场的哦,别人也没那么时间啊
2、我说的ADC模块意思就是MCU内部集成的ADC电路部分,ADC芯片指MCU外部的独立AD芯片

使用特权

评论回复
8
doob|  楼主 | 2013-3-29 11:55 | 只看该作者
yewuyi 发表于 2013-3-29 09:53
1、不明白的可以先百度,如果直接说不明白,别人总不能从最基础的给你讲?别人只能针对你理解不正确的某 ...

ok,我先把您提的问题我搞明白。。。。。。。。。。。。百度下资料,谢谢点拨;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

165

主题

1113

帖子

3

粉丝