打印

请教使用单片机GPIO+ADC(时间常数法)粗略检测电容值的问题

[复制链接]
1843|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sioca|  楼主 | 2014-12-25 14:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

系统电池供电,电压2V5左右可变,期望使用一个GPIO给 电容//电阻 的组合充电,然后GPIO突然变成高阻态,使用ADC来检测电容电阻的放电时间,GPIO翻转的时候检测一下电容电压,然后不停检测ADC,待电容电压下降到63%,经过的时间T就是RC时间常数,从而计算出电容值。由于单片机工作频率和待测电容范围的原因,放电电阻只能限制在1K~10K之间,目前使用1K。
电路如下图,GPIO拉灌电流能力不足,Q1用来快速给C充电。又由于ADC的输入电阻大致为1K欧数量级,直接接在C上会影响放电的等效电阻,因此拟增加一级射极跟随器Q2电路,将ADC的影响最小化。

但是问题来了,经过两级三极管,本来不高的系统电压2V5已经降低到2V左右,三极管Q2没有正确的工作点,无法完整跟随C的放电曲线(②点和①点的曲线不同,②点才放电到0.7V的时候,①点已经由于Q2不导通变成0V了)。 请问各位大侠有什么低成本的解决方法?


蓝色为1K//1uF正常放电曲线,黄色为射极跟随器后畸变曲线。


相关帖子

沙发
sioca|  楼主 | 2014-12-25 15:22 | 只看该作者
现在初步计划增加一个高输入阻抗的比较器来工作,首先用ADC采集放电前电容满电压的值(与ADC输入电阻大小无关),然后ADC关闭,端口高阻态,再使用DAC输出一个63%的电压给比较器1端(高阻),放电时将电容接在比较器2端(高阻),用比较器来比较阀值。但是廉价单片机又没有DAC。苦恼……

使用特权

评论回复
板凳
maychang| | 2014-12-25 17:25 | 只看该作者
没有DAC,使用固定基准电压好了。
你知道“放电前电容满电压的值”(测量出来的),知道放电到基准电压的时间(测量出来的),还知道基准电压值和放电电阻,又有单片机,就可以计算出电容量。
甚至“放电前电容满电压的值”都不必测量,直接由基准电压控制即可(例如采用基准电压的二倍)。

使用特权

评论回复
地板
maychang| | 2014-12-25 17:27 | 只看该作者
如果“放电前电容满电压的值”固定,那么仅需要测量放电时间,单片机的工作也变得很简单:用查表法即可得知电容量。

使用特权

评论回复
5
sioca|  楼主 | 2014-12-25 18:08 | 只看该作者
maychang 发表于 2014-12-25 17:27
如果“放电前电容满电压的值”固定,那么仅需要测量放电时间,单片机的工作也变得很简单:用查表法即可得知 ...

您是说不管放电时ADC增加的等效R值是多少,电路有多少非线性元素,只要电路固定、可重复,最后成型后用软件标定一下即可?

充电时间很短,不一定是固定值,都是按照百分比来的,充95%,就按照95%为满电值来判断,就是说ADC前后检测两次电压

使用特权

评论回复
6
maychang| | 2014-12-25 19:04 | 只看该作者
sioca 发表于 2014-12-25 18:08
您是说不管放电时ADC增加的等效R值是多少,电路有多少非线性元素,只要电路固定、可重复,最后成型后用软 ...

我是说,根本不必使用ADC,也不必标定,只需要计算。

既然我说不必使用ADC,那就根本不必测量电压。

“充电时间很短,不一定是固定值”
你就让电容充电到一个固定值好了。只要充电电源内阻足够小,电容必定充电到固定电压,即充电电源电压。

使用特权

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

本版积分规则

个人签名:1

122

主题

419

帖子

1

粉丝