zhenglingo 发表于 2012-11-24 02:06:05

STC12C5A60S2 之AD

想用STC12C5A60S2里内部的AD功能,IO口为P1已经配置好IO口为AD转换功能,配置P1口为开漏或者高阻。请问在没有输入的情况下,IO口是否有电压输出。我配置好了的IO有3.5V电压输出,这不是会影响AD转换吗?有没有遇到类似问题的?试过当输入为0V(用STC12C5A60S2内部的PWM输出。接1K电阻串联1uF电容,在电阻与电容间接P1.0AD转换)时,采集的电压还是3.5V是否该IO口的输出影响了AD采集

lgg88 发表于 2012-11-24 08:06:00

设置为输入的时候,你单片机内部有弱上拉,你把上拉关掉应该就可以

bigeblis 发表于 2012-11-24 09:50:45

我没有这样测试过
不过这个片子的AD我用过,读数和外部电压计算值一致,应该是可信的

sdf159372008 发表于 2012-11-24 17:21:36

这个倒还真没注意。
刚才试了一下 ,用AD的时候,IO什么都不接,是有3。5V左右的电压。之前都没怎么注意。
可能是我用的时候都是使用分压电阻的吧,高于外部基准的电压都需要分压电阻来测了,相当于有下拉电阻了……

zhenglingo 发表于 2012-11-24 21:33:27

lgg88 发表于 2012-11-24 08:06 static/image/common/back.gif
设置为输入的时候,你单片机内部有弱上拉,你把上拉关掉应该就可以

我已经将AD功能的IO分别设置成开漏和高阻测试结果都一样,都是会有电压输出。今天还很奇怪,当PWM输出占空比为0时,AD采集回去的就是ADIO的电压,而在PWM输出占空比大于百分之七十的时候才能比较准确,很晕,检查好几遍都不知道问题在那里,打算改用AD芯片采集试试了

bigeblis 发表于 2012-11-25 22:04:50

你这个结果,会不会电压源的内阻太大了?
我记得开路的话应该是无电压的

zhenglingo 发表于 2012-11-25 23:03:26

bigeblis 发表于 2012-11-25 22:04 static/image/common/back.gif
你这个结果,会不会电压源的内阻太大了?
我记得开路的话应该是无电压的 ...

你指的是万用表的内阻太大吗?

bigeblis 发表于 2012-11-27 00:13:43

不是,就是你要用ADC测量的那个电压源内阻

liber798A 发表于 2012-11-27 09:41:12

这个片子我用过,AD还可以,可设置为8bit或者10bit,我用的10Bit。

zhenglingo 发表于 2012-11-27 10:35:32

liber798A 发表于 2012-11-27 09:41 static/image/common/back.gif
这个片子我用过,AD还可以,可设置为8bit或者10bit,我用的10Bit。

请问你配置的IO口为AD采集时,不加输入的情况下该IO输出是否有电压,具体为多少呢?这是否会影响采集?

zhenglingo 发表于 2012-11-27 10:39:35

bigeblis 发表于 2012-11-27 00:13 static/image/common/back.gif
不是,就是你要用ADC测量的那个电压源内阻

你的意思就是PWM输出了?但是用万用表测量的PWM输出时为0V啊

bigeblis 发表于 2012-11-27 21:19:12

pin设置有问题吧?做ADC输入使用的pin应该配置为输入模式
另外,在程序中,应该避免对ADC输入端进行拉高的操作

zhenglingo 发表于 2012-11-27 22:43:13

bigeblis 发表于 2012-11-27 21:19 static/image/common/back.gif
pin设置有问题吧?做ADC输入使用的pin应该配置为输入模式
另外,在程序中,应该避免对ADC输入端进行拉高的 ...

我把我的原理图贴出来吧
你的意思是PWM_IO 要设置成输入模式(高阻模式),还是AD_IO?(我的AD采集已经设置了高阻)。如果PWM_IO也设置成输入(高阻),这样占空比可调的PWM能输出吗?疑惑了

bigeblis 发表于 2012-11-28 12:05:54

PWM IO设置为推挽模式,AD IO设置为INPUT模式
你这个PWM输出滤波太简单了,电容值也太大。一般是两级RC滤波,电阻10K两个,电容100nF两个(和PWM频率有关,频率高的话电容值还要减小),最好加运放,否则滤波结果和后级负载关系很大。
AD IO设置为INPUT模式后内阻非常大,电容上的电荷不能在PWM IO为0V时及时通过10K电阻释放,所以转换结果就不会为0。不能改电路的话先把电容值改成100nF试试看结果

liber798A 发表于 2012-11-30 17:30:36

zhenglingo 发表于 2012-11-24 21:33 static/image/common/back.gif
我已经将AD功能的IO分别设置成开漏和高阻测试结果都一样,都是会有电压输出。今天还很奇怪,当PWM输出占 ...

我貌似没有注意过这个问题,直接接上就用了。由于是颜色识别,也不会出现AD转换结果为零的时候。

zhenglingo 发表于 2012-12-1 19:27:56

bigeblis 发表于 2012-11-28 12:05 static/image/common/back.gif
PWM IO设置为推挽模式,AD IO设置为INPUT模式
你这个PWM输出滤波太简单了,电容值也太大。一般是两级RC滤波 ...

多谢你的建议   经过这些天的反复检查才知道是STC12内部的AD在没有输入时会有飘动,所以我在IO口上并了200K的电阻到地就解决了现在就一些滤波上的小问题   正在看RC滤波怎么设计   可以加你扣扣吗?很多方面还要和交流啊

zhenglingo 发表于 2012-12-1 19:28:31

liber798A 发表于 2012-11-30 17:30 static/image/common/back.gif
我貌似没有注意过这个问题,直接接上就用了。由于是颜色识别,也不会出现AD转换结果为零的时候。 ...

用AD采集什么?鉴别颜色?

honami520 发表于 2012-12-1 20:35:01

楼主,做AD检测,不需要设置IO为输入的,只需要把P1ASF的对应通道设置为1,对应的IO就不再输出电压了。这个时候就可以量到准确的值。

bigeblis 发表于 2012-12-1 21:48:53

zhenglingo 发表于 2012-12-1 19:27 static/image/common/back.gif
多谢你的建议   经过这些天的反复检查才知道是STC12内部的AD在没有输入时会有飘动,所以我在IO口上并 ...

其实DATASHEET里说的很清楚, AD模式下IO PING要设置为输入模式,该模式下内阻非常大(其实也是ADC输入ping 的基本要求),所以多外部电压源的内阻有一定的要求,不能太大了,否则出来的结果是不准确的。

oktek 发表于 2012-12-1 21:51:29

做AD检测空测话是有一个电压值。有可能是因为内阻太高测到是感应电压,用万用表测试时试着用手摸电路板的地电压值会变化,如果触摸到AD引脚用万用表量测到的电压会变成交流电压

zhenglingo 发表于 2012-12-3 12:24:07

honami520 发表于 2012-12-1 20:35 static/image/common/back.gif
楼主,做AD检测,不需要设置IO为输入的,只需要把P1ASF的对应通道设置为1,对应的IO就不再输出电压了。这个 ...

您好,我设置过了,但是还是有电压输出的,有3.69V的电压。估计是IO的里的内阻太小了,之后我在IO口并了一个200K的电阻,就可以正常测量了

honami520 发表于 2012-12-3 22:39:58

那就不清楚你的情况了。我这边都是很正常的。也许你的外围和一般人的外围有不同之处吧。反正你能够正常工作,这也够了。
页: [1]
查看完整版本: STC12C5A60S2 之AD