用户
 找回密码
 注册
发新帖
1#
跳转到指定楼层

使用PIC16F628制作一个高精度的电容测试仪

[复制链接]
1、作品简介
贴片电容,不像贴片电阻那样上面还有数字标识,所以如果多个贴片电容不小心混在一起,是很难区分开来的,原因主要是一般的万用表没那么高分辨率的电容测试功能,为此本期,我们编辑组特意给大家介绍一款来自老外的电子制作,该制作属于开源,具有硬件简洁,但又不失高精度测量的特点,作者也提供了HEX源码,烧录完成后即可工作!该老外的大名是:Roman Black顺此声明,该文章的版权归属:Roman Black, 我们立创商城只是转载和翻译,如翻译有所偏差,请以作者原文为准)。
2、作品亮点
① 具有很高的分辨率:达6~7位!(一般的仪器或制作,只有有3或4位)
② 测量范围较宽:0pF到50uF。
③ 硬件简洁,性价比高,使用到一个低成本的PIC单片机16F628。
④ 不需要校准!(其他需要校准的一个特殊的测试帽)
⑤ 类似电子秤的去皮功能,可自动归零,或相对值设置为零,
此外,亮点还包括:
该电容测量仪,有三种显示格式,根据测量值大小有所差异,具体如下:
0pF to about 18000 pF, format; "PPPPP.DD pF"
18nF to 999nF, format; "NNN.DDD nF"
1uF to 50uF, format; "UU.DDDD uF"
显示精度:
pF级测量显示时,显示精度可达 +/- 0.02pF;
而在nFuF级测量显示时,显示精度可达 +/- 最后1位数字
3、原理图
1.jpg

备注说明:
以上电路中,最关键的是这个部分,这里特别提取出来分析一下:
2.jpg
该电路是一个RC震荡电路,其中比较器直接使用了PIC16F628内部自带的比较器。该电路的震荡输出频率 FoutRTCT决定,基本不受供电电压影响,当RT固定时,这个电路可以作为一个高精度测量电容的电路(通过测量Fout的值,就可以计算出CT的值)。在这个电路中,R1R2起的作用,是分压的作用,B点电压在1/3VDD2/3VDD之间变换。
单片机PIC16F628通过定时器精确地测量到Fout 值后,通过一个算法把待测电容器CT的值,显示在LCD显示屏上。需要指出的是,为了获得更好的精度效果,RT需要使用高精度的金属膜电阻,阻值为: 10.00K
4、软件部分的描述
软件部分,很可惜该作者没有给出源码,只是给出了最终可烧录的HEX文件。
下面,我们来看看该作者实现这个电容测量仪的一些构思。(在此之前,我们建议大家先看该作者的另外一个设计技巧和思路:Zero-error 1 second Timer零误差产生1HZ 的定时器,该高精度电容测量电路的算法核心就是用这个方法来设计的。)
本电路中,单片机PIC16F628使用内置的CCP1硬件单元来捕获RC振荡器的频率,PIC定时器的运行时钟为4MHZ16MHz/4=4 )
单片机累加连续捕获到的周期数(),直到累加到的周期数超过两百万次(>0.5 second),仅仅误差只是最初和最后1次的捕获到的周期值,所以的误差值被限制在每次最后一次捕获的两百万次的多余部分,从而最终达到1PPM的精度。
现在,通过总周期数除以捕获到的周期数,就可以得到一个精确的平均捕获值,接着把该平均值再放大1000倍,即可获得除数后包含了多个数字的最终值(分辨率)。
例如;
"10nF" 的电容,测量到的振荡数是 435Hz
218个连续的振荡值被累计,对应得到的总和值是:2004597
从而有:(2004597*1000)/218 = 2004597000/218 = 9195399
所以平均得到的周期数是:9195.399
接着,第二步的处理是: 将平均得到的周期数转换为pF
(9195399*100)/scale = 919539900/919 = 1000587
1000587 最终被显示在LCD屏上的数字是:10005.87 pF
类似地,再比如:
"100pF" osc PIC单片机测量到的振荡数是 43500 Hz
累计值首次超过2百万次,即实际达到2000091时,对应的振荡周期数是:21751
从而有: 2000091000/21751 = 91953
比例格式化: 91953000/919 = 100057
最终, 100057 被处理和显示在LCD屏上的值是100.05 pF
5、材料清单(BOM列表)
以下是这个电子制作的BOM列表,大部分器件可采购自立创商城http://www.szlcsc.com):
器件名称
器件类型
立创商城编号
备注
10KΩ ±1%
金属膜电阻
C58587
[size=10.5000pt]
PIC16F628
PIC单片机
[size=10.5000pt]
商城暂无
7805
7805
C77895
类似型号很多
16MHZ
晶振
C12676
类似型号很多
LCD显示屏 (31
16x2 LCD
C83274
黑底白字效果
16x2 LCD
C83275
蓝底白字效果
16x2 LCD
C83276
黄绿底色效果
6PCB实物图
4.jpg 5.jpg
7、调试过程和应用实例
  测试是很简单的,PCBA焊接和组装无误后,上电会显示320pF左右(此时假设是没有接上待测电容CT的),此时该RC振荡器的频率大概是220KHZ左右。
  接着,轻触按键对该电容测量仪进行归零,LCD显示屏显示"Zero Cal",随后该装置即可进行待测状态!在测量极小电容的时候,由于精度很高,同时温度影响,出现一些跳过,比如+-0.05的变动,是正常的。
另外,如果这个RC振荡器停止震荡,或者待测电容的2端短路,或者超过50uF的电容被插入来测量,那么LCD将会显示"Error" ,并交替性出现"Error" 和 "Large cap"的提示最终, 100057 被处理和显示在LCD屏上的值是100.05 pF
8、总结
Roman Black是个大牛,特别是他提出的Zero-error 1 second Timer 零误差产生1HZ 的定时器”,这个算法在MCU中有很多应用,它可以让单片机即使使用特殊或有误差的晶振,也能产生精确的周期性、频率信号。这个算法,值得大家去学习和参考。另外这个电容测量仪的电路中,如果采用更高速的比较器,可以得到更准确的测量值,特别是在测量pF级微小容量的电容时,也欢迎大家去改进~
本文由立创商城翻译整理,致力于为客户提供一站式电子元器件线上采购服务,成交量全国领先。自建6000多平米现代化元器件仓库,现货库存超50000种,集团电子全产业链自营服务涵盖:在线EDA(LCEDA)+行业领先的PCB打样/中小批量+元器件商城+钢网制造+SMT贴片+电子设计教育及方案。

厉害,佩服
回复

使用道具 举报

很好的资料,感觉量程太小了。最大只有50uf。
回复

使用道具 举报

不错,附相关制作资料就好了
回复

使用道具 举报

有一个详细的制作过程更好了,套件有吗,价格。
回复

使用道具 举报

小白,入过
回复

使用道具 举报

很好的资料,感觉量程太小了。
回复

使用道具 举报

不错,附相关制作资料就好了
回复

使用道具 举报

给力哈 感谢分享                 
回复

使用道具 举报

历害,有没有牛人在这个基础上面改一个连电感也可以测的,那就更完美。
回复

使用道具 举报

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

本版积分规则

返回顶部