打印

MCU检测RC充电时间的误差问题

[复制链接]
4070|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
ShakaLeo| | 2010-4-20 16:55 | 只看该作者
用什么方法测量的?最好上个图

使用特权

评论回复
板凳
szshawn2010|  楼主 | 2010-4-20 17:07 | 只看该作者
如图:

100R电阻的 I/O :先为输出方向,输出低电平,延时,对电容放电(此时,其他I/O均为输入方向)。然后 100R的I/O转为输入方向,清零计数器。同时,其他I/O中的一个需要测量的I/O转入 输出方向,输出高电平。判 100R的I/O为高电平时,计录时间。为充电时间

1.JPG (89.48 KB )

1.JPG

使用特权

评论回复
地板
szshawn2010|  楼主 | 2010-4-20 17:10 | 只看该作者
使用这个方法,例如:对 PIN 1脚上的2K电阻,反复充电测试。每次的数值差别都是较大的。
已经确定了,电容放电完全。

使用特权

评论回复
5
ayb_ice| | 2010-4-20 17:30 | 只看该作者
rc常数设大点

使用特权

评论回复
6
szshawn2010|  楼主 | 2010-4-20 21:32 | 只看该作者
5# ayb_ice

太大了,8位的寄存器放不下啊。有更好的办法没?

使用特权

评论回复
7
ayb_ice| | 2010-4-21 09:06 | 只看该作者
<<太大了,8位的寄存器放不下啊。有更好的办法没?>>
放不下可以软件处理

使用特权

评论回复
8
yiwusuoyou| | 2010-4-21 15:59 | 只看该作者
RC常数放大点应该是有效果的,再做个滑动平均处理吧。C最好用钽电容

使用特权

评论回复
9
szshawn2010|  楼主 | 2010-4-21 22:45 | 只看该作者
8# yiwusuoyou

兄弟,你的 “滑动处理” 的意思是不是说,当检测I/O检测到高电平时,做个延时处理,然后再检测,如果还是高电平,则意味着充电完全?

如果是这样的话,那么延时多少时间为佳?10us够吗?

使用特权

评论回复
10
awey| | 2010-4-22 00:44 | 只看该作者
1、RC时间常数取大一些,计数频率减慢一些、
2、电容器选用无电荷存储效应的薄膜电容。

使用特权

评论回复
11
szshawn2010|  楼主 | 2010-4-22 10:09 | 只看该作者
10# awey

我以为频率快些会准确一些呢。

使用特权

评论回复
12
yiwusuoyou| | 2010-4-23 16:26 | 只看该作者
呵呵,做平均只是为了测量准确些(采样数据可能会变化比较大,不做简单滤波处理,数据跳动就大),频率应该是高些比较好的,精度就会高点的,我做过交流供电的,低温区比较准确,高温区误差略大。

使用特权

评论回复
13
szshawn2010|  楼主 | 2010-4-23 22:38 | 只看该作者
本帖最后由 szshawn2010 于 2010-4-23 22:40 编辑

13# yiwusuoyou

其实很多东西,理论上都是很简单的,但是当实际动手做时,就会有这样或那样的问题。

既然兄弟你做过这类的东东。那我就把我的情况再详细说一说,恳请你不吝赐教:


1.我的MCU只有一个定时器。这个定时器要为开启工作电路时刻准备着。溢出数值为256,因为需要,就赋了初值205。即每50个周期,会有一次定时中断。

2.同时,又开启了外部中断;

3.当需要对电容充电计时,每发生一次定时中断,则对寄存器R1加上数值50,此时R1有进位标志发生,则对R2加上数值1。

理论上,充电时间= R2{R1+(TIMO-TIMO初)}
           备注:草稿程序中,将TIMO这部分给省略掉了。即“R2R1”组成一个16位的
                   二进制寄存器。

4.实验结果是,电阻越大,计量的时间误差就越大。而且每次数据差距都很大。
           备注:在检测充电是否完全时,已经做了一次延时处理,大约为6个机器周期,约6us。


----------------
实践表明,若定时器仅为电容充电工作的话,测量效果还是很好的。但是却无法开启样板的主功能了。

在定时中断子程序中,外部中断子程序中,指令时间大约为30-60个机器周期。

使用特权

评论回复
14
awey| | 2010-4-23 23:31 | 只看该作者
电容器有电荷存储效应,通俗的比方就是:用木桶装水,会倒不干净。所以用于对充放电有精度要求的场合,最好用存储效应小的薄膜电容器。
速度慢一些,可以让电容充分放电,同时,放宽对软件处理及时性的要求。因为直接用IO口做为比较,对电源的纹波要求很高,如果电源不干净,将会带来很大的误差。

使用特权

评论回复
15
szshawn2010|  楼主 | 2010-4-24 01:02 | 只看该作者
本帖最后由 szshawn2010 于 2010-4-24 01:03 编辑

15# awey

感谢解答!我用的是瓷片电容 1UF。因精度要求不是很高,所以也懒得去找电容样品了。

实践中,定时器仅为电容充电计数的话,那么 计数值为 197时,误差为正负3。再大一些计数值为2000时,误差也在接受范围内。

当定时器,除了计数,还要处理其他任务时,计数值就不靠谱了。有时的大的很离谱。

使用特权

评论回复
16
QuakeGod| | 2010-4-24 02:15 | 只看该作者
瓷片电容 最要不得,不是精度的问题,而是温漂太大,随便吹口气,数值就差好多,
这个电容是最重要的电容,直接影响系统精度,应该用高精度的校正电容。
另外,让RC时间常数变大的目的就是减小定时误差造成的影响。

使用特权

评论回复
17
工控秀才| | 2010-4-24 11:37 | 只看该作者
带AD的MCU已经很便宜了.何必这么麻烦.

使用特权

评论回复
18
yangyicheng| | 2010-5-28 15:30 | 只看该作者
你是要计算R4的阻值,除法比较,即使有些误差,也没有关系啊,比值计算后就可以消除啊!通用的测温电路。

使用特权

评论回复
19
yslf1985| | 2010-8-10 16:17 | 只看该作者
学习一下~~

使用特权

评论回复
20
dzchb| | 2010-8-10 17:42 | 只看该作者
认真学习下

使用特权

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

本版积分规则

92

主题

636

帖子

1

粉丝