查看:
57985
回复: 60 |
使用PIC16F628制作一个高精度的电容测试仪
|
||||||||||||||||||||||||||||||
|
发表于2017-03-04 11:39:01
|
只看该作者
1#
电梯直达
使用PIC16F628制作一个高精度的电容测试仪 网友:Roman Black
1、作品简介
贴片电容,不像贴片电阻那样上面还有数字标识,所以如果多个贴片电容不小心混在一起,是很难区分开来的,原因主要是一般的万用表没那么高分辨率的电容测试功能,为此本期,我们编辑组特意给大家介绍一款来自老外的电子制作,该制作属于开源,具有硬件简洁,但又不失高精度测量的特点,作者也提供了HEX源码,烧录完成后即可工作!该老外的大名是:Roman Black,他的网站是:http://www.romanblack.com, 顺此声明,该文章的版权归属: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; 而在nF和uF级测量显示时,显示精度可达 +/- 最后1位数字 3、原理图 备注说明:以上电路中,最关键的是这个部分,这里特别提取出来分析一下: 该电路是一个RC震荡电路,其中比较器直接使用了PIC16F628内部自带的比较器。该电路的震荡输出频率 Fout由RT和CT决定,基本不受供电电压影响,当RT固定时,这个电路可以作为一个高精度测量电容的电路(通过测量Fout的值,就可以计算出CT的值)。在这个电路中,R1和R2起的作用,是分压的作用,B点电压在1/3VDD或2/3VDD之间变换。 4、软件部分的描述
软件部分,很可惜该作者没有给出源码,只是给出了最终可烧录的HEX文件。 下面,我们来看看该作者实现这个电容测量仪的一些构思。(在此之前,我们建议大家先看该作者的另外一个设计技巧和思路:Zero-error 1 second Timer 零误差产生1HZ 的定时器,该高精度电容测量电路的算法核心就是用这个方法来设计的。) 本电路中,单片机PIC16F628使用内置的CCP1硬件单元来捕获RC振荡器的频率,PIC定时器的运行时钟为4MHZ(16MHz/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 pF5、材料清单(BOM列表)
以下是这个电子制作的BOM列表,大部分器件可采购自立创商城(http://www.szlcsc.com):
6、PCB实物图
7、调试过程和应用实例 测试是很简单的,PCBA焊接和组装无误后,上电会显示320pF左右(此时假设是没有接上待测电容CT的),此时该RC振荡器的频率大概是220KHZ左右。接着,轻触按键对该电容测量仪进行归零,LCD显示屏显示"Zero Cal",随后该装置即可进行待测状态!在测量极小电容的时候,由于精度很高,同时温度影响,出现一些跳过,比如+-0.05的变动,是正常的。另外,如果这个RC振荡器停止震荡,或者待测电容的2端短路,或者超过50uF的电容被插入来测量,那么LCD将会显示"Error" ,并交替性出现"Error" 和 "Large cap"的提示。
8、总结 Roman Black是个大牛,在他的个人网站上有很多他开源的作品,特别是他提出的“Zero-error 1 second Timer 零误差产生1HZ 的定时器”,这个算法在MCU中有很多应用,它可以让单片机即使使用特殊或有误差的晶振,也能产生精确的周期性、频率信号。这个算法,值得大家去学习和参考。另外这个电容测量仪的电路中,如果采用更高速的比较器,可以得到更准确的测量值,特别是在测量pF级微小容量的电容时,也欢迎大家去改进~ 。 附件: 官方原文:http://www.romanblack.com/onesec/CapMeter.htm 烧录文件(HEX):CapMeter.rar
|
||||||||||||||||||||||||||||||
|
发表于2017-03-04 13:42:48
|
只看该作者
3#
PIC16F628 -- 商城暂无
|
||||||||||||||||||||||||||||||
|
发表于2017-03-04 13:58:18
|
只看该作者
4#
这个PCB验证板,如果是成品,或许会存在商业版权。 后续,我们商城会跟原作者Roman Black沟通,获得它的邮件授权后,我们才开放给网友或第三方来设计这款PCB验证板。 |
||||||||||||||||||||||||||||||
|
发表于2017-03-04 14:40:29
|
只看该作者
5#
|
||||||||||||||||||||||||||||||
|
发表于2017-03-21 14:33:50
|
只看该作者
6#
10多块钱一片。。。
|
||||||||||||||||||||||||||||||
|
发表于2017-03-21 14:59:05
|
只看该作者
7#
这个芯片应该是货源问题,才较贵,毕竟只是8位机。像我们商城上同个原厂的的PIC32MX(32位)百片含17%的价格才7元左右。 这个制作,其实用其他芯片也可以做的,测量原理一样即可。 |
||||||||||||||||||||||||||||||
|
发表于2017-03-21 15:08:15
|
只看该作者
8#
如果没有记错,628应该是10多年前出的了。这个也算是PIC单片机的一个优势吧,生命周期都比较长,虽然说到后面价格没有优势了,但是对部分不方便改版的老用户来说,买得到才是王道。 对于32位来说,PIC32MM系列是这两年刚出来的,性价比不错,就是商城用的人还不多,非ARM内核的32位芯片厂家也做得很累啊。 |
||||||||||||||||||||||||||||||
|
发表于2017-03-24 07:44:30
|
只看该作者
9#
其实用STM32也行,电容触摸功能的测量方法也是类似的。
|
||||||||||||||||||||||||||||||
|
发表于2017-03-24 09:28:36
|
只看该作者
10#
这个可以有,支持下
|
||||||||||||||||||||||||||||||
|
发表于2017-03-26 19:15:55
|
只看该作者
11#
有现成的PCB吗?那里有购买的!
|
||||||||||||||||||||||||||||||
|
发表于2017-03-27 09:13:13
|
只看该作者
12#
目前我们商城还没有这款现成的PCB空板,现有的是这大概50款PCB(相关资料正在陆续整理和上线中。。) |
||||||||||||||||||||||||||||||
|
发表于2017-07-02 22:40:15
|
只看该作者
13#
不错!感谢分享,自制电容测试仪。
|
||||||||||||||||||||||||||||||
|
发表于2017-08-12 09:27:01
|
只看该作者
14#
多谢楼主分享这么有价值的东西,我详细看了一下计算公式,为什么scale的值位919,能否指点一下?
|
||||||||||||||||||||||||||||||
|
发表于2017-12-06 17:27:19
|
只看该作者
15#
商品化要加保护电路,不然电容带电测试,单片机就OVER了!
|
||||||||||||||||||||||||||||||
|
发表于2017-12-07 17:46:33
|
只看该作者
16#
最简单的保护方法,测试前用导线或镊子对电容器的2端进行放电后测试。 |
||||||||||||||||||||||||||||||
|
发表于2018-01-29 13:10:25
|
只看该作者
18#
1%精度10K就可以了吧 你其他东西也达不到哇,测量误差弄个5%不是问题 |
||||||||||||||||||||||||||||||
|
发表于2018-01-30 15:09:39
|
只看该作者
20#
已经制作了一个,使用起来感觉还是挺不错的
|
||||||||||||||||||||||||||||||
|
发表于2018-01-30 15:28:18
|
只看该作者
21#
HEX文件用什么工具下载的?配置字需要另外设置吗? 这个制作所需的元器件,我们商城都有,特别是所需的LCD 1602显示屏,也有,颜色还有多种可选:http://www.szlcsc.com/so/catalog/643.html |
||||||||||||||||||||||||||||||
|
发表于2018-01-30 16:46:38
|
只看该作者
22#
1:HEX文件用TOP通用编程器工具下载的 2:配置文字不需要另外设置 3:制作所需的元器件,90%以上的物料均来自LC商城(包括PCB打样样板) 4:感谢LC提供的支持!! |
||||||||||||||||||||||||||||||
|
发表于2018-03-12 20:38:23
|
只看该作者
23#
你用下来感觉测量的准么,我也做了一个发现精度没有说的那么高,还目前还没发现问题在哪里
|
||||||||||||||||||||||||||||||
|
发表于2018-03-20 08:20:43
|
只看该作者
24#
感觉还行啊,你仔细检查一下相关元器件是否有误,我实际测量误差不是很大,我也是偶尔使用一下,不是天天用也许没有发现
|
||||||||||||||||||||||||||||||
|
发表于2018-05-16 21:13:01
|
只看该作者
25#
mark
|
||||||||||||||||||||||||||||||
|
发表于2018-11-29 17:53:32
|
只看该作者
26#
自己尝试做了几个,自己用着感觉还不错哦,精度上都在电容误差范围内,感觉可以出套件了
|
||||||||||||||||||||||||||||||
|
发表于2018-12-21 17:21:14
|
只看该作者
27#
感谢这位叫:罗曼?黑 的哥们,我感觉51单片机可以搞定;
|
||||||||||||||||||||||||||||||
|
发表于2019-05-07 19:00:46
|
只看该作者
28#
Mark
|
||||||||||||||||||||||||||||||
|
发表于2019-05-09 13:35:30
|
只看该作者
29#
有些问题望楼主能够解答一下,上面例子里,10nf,
"10nF" 的电容,测量到的振荡数是 435Hz 218个连续的振荡值被累计,对应得到的总和值是:2004597 请问这个218个连续振荡值和总和值是怎么计算出来的? |
||||||||||||||||||||||||||||||
|
发表于2019-05-22 15:56:47
|
只看该作者
30#
可惜不能测试电感,来个测试nH级的电感测试仪吧
|
||||||||||||||||||||||||||||||
|
发表于2019-05-26 10:51:55
|
只看该作者
31#
兄弟能给个PCB文件吗
|
||||||||||||||||||||||||||||||
|
发表于2019-08-23 14:37:51
|
只看该作者
32#
学习学习,学习学习。
|
||||||||||||||||||||||||||||||
|
发表于2019-10-27 17:37:18
|
只看该作者
33#
大佬们有pcb文件或图片吗,谢谢!
|
||||||||||||||||||||||||||||||
|
发表于2019-11-16 07:25:29
|
只看该作者
34#
是pic16f628还是pic16f628a?这两款有区别吗?pic16f628a能做吗?
|
||||||||||||||||||||||||||||||
|
发表于2019-11-25 13:40:28
|
只看该作者
35#
多谢楼主分享这么有价值的东西,
|
||||||||||||||||||||||||||||||
|
发表于2020-02-22 19:44:35
|
只看该作者
36#
不一定要pic单片机啊,用个高速比较器,然后接单片机采样一样的。现在很多国产单片机都是带比较器的。
|
||||||||||||||||||||||||||||||
|
发表于2020-03-05 00:11:00
|
只看该作者
37#
其实万用表的电容测试原理也是一样, 不过充放电是程序控制的,不是靠比较器翻转 分辨率和量程有关,量程小分辨率自然容易提上去 因为如果时钟频率高了, 虽然测小容量精度高, 但测大容量电容计数器会溢出; 而时钟频率低了,大容量虽然不会溢出, 测小容量计数值少误差会变大; 而小量程会好很多 |
||||||||||||||||||||||||||||||
|
发表于2020-06-14 11:57:56
|
只看该作者
38#
由频率算出电容量,这个没看懂。
|
||||||||||||||||||||||||||||||
|
发表于2020-06-20 17:19:39
|
只看该作者
39#
亲测628A不行,得用628
|
||||||||||||||||||||||||||||||
|
发表于2020-06-20 17:37:25
|
只看该作者
40#
试了一下感觉一般吧,精度还可以,pf和nf的还行单片机必须用628的,628A不行,烧录的时候用628A烧录就行,把烧录前检查ID点掉!我把我的小板放上了628电容测试.rar
|
||||||||||||||||||||||||||||||
|
发表于2020-08-30 10:03:33
|
只看该作者
41#
这有什么难度?不就是多次采样然后取平均值吗?
|
||||||||||||||||||||||||||||||
|
发表于2020-09-03 13:42:55
|
只看该作者
42#
http://www.romanblack.com 这个网站登录不了,那个坛友下载了 Zero-error 1 second Timer的资料, 能不能上传下,谢谢 |
||||||||||||||||||||||||||||||
|
发表于2020-10-09 16:06:19
|
只看该作者
43#
这个用运放搭建测量部分,单片机用其他也行
|
||||||||||||||||||||||||||||||
|
发表于2020-12-10 19:09:22
|
只看该作者
44#
收藏了,有空我也研究研究
|
||||||||||||||||||||||||||||||
|
发表于2021-06-07 11:08:31
|
只看该作者
45#
老哥,能不能问你买个现成的,组里测试电容用,想直接把测到的数据拉到excel处理,有意的话加qq:601170559
|
||||||||||||||||||||||||||||||
|
发表于2021-06-07 11:10:53
|
只看该作者
46#
老哥,能不能问你买个现成的,组里测试电容用,想把测到的数值直接拉进excel处理,有意的话加qq:601170559
|
||||||||||||||||||||||||||||||
|
发表于2021-09-22 17:21:35
|
只看该作者
47#
这个不错,Mark一下
|
||||||||||||||||||||||||||||||
|
发表于2022-01-11 14:02:05
|
只看该作者
48#
10K电阻,"10nF" 的电容,测量到的振荡数是 435Hz?和公式计算不一样啊
|
||||||||||||||||||||||||||||||
|
发表于2022-01-15 11:17:18
|
只看该作者
49#
多点技术,多点沟通,相信我们中国制造会越来越好 出售桌面式烧录,测试机,解决客户交货时效,程序保密,适用于方案公司,芯片设计公司,小批量工作,免接气,静音办公楼无投诉,体积小,价格实惠,使用方便,完美对接。
|
||||||||||||||||||||||||||||||
|
发表于2022-01-16 11:28:49
|
只看该作者
50#
例子中的频率与计算的频率不一样是因为计算方法不一样。 我现在打算用pic16f88制作一个, |
||||||||||||||||||||||||||||||
|
发表于2022-01-16 19:18:48
|
只看该作者
51#
源文件中的2004597这个数是0.5S内的时钟脉冲个数,pic单片机晶振16MHZ,16/4=4MHZ,1/4MHZ=0.25us, 假设10nf,得到的振荡值是435,注意,只要是上升沿触发,也算一个脉冲。435/2=217.5=218。 1/435=0.002298850574S, 0.002298850574*218=0.501149425S,0.501149425/0.00000025=2004597.7。 至于公式里面的919这个数,我也不知道啊。我今天想了半天,只明白这些了,剩下的就看各位大佬了,看看能不能移植其他单片机,51单片机估计不行,最好是单指令周期的单片机,还要有内部比较器与CCp捕捉功能。估计也没人看了,就提前祝大家新年快乐
|
||||||||||||||||||||||||||||||
|
发表于2022-01-16 19:19:15
|
只看该作者
52#
源文件中的2004597这个数是0.5S内的时钟脉冲个数,pic单片机晶振16MHZ,16/4=4MHZ,1/4MHZ=0.25us, 假设10nf,得到的振荡值是435,注意,只要是上升沿触发,也算一个脉冲。435/2=217.5=218。 1/435=0.002298850574S, 0.002298850574*218=0.501149425S,0.501149425/0.00000025=2004597.7。 至于公式里面的919这个数,我也不知道啊。我今天想了半天,只明白这些了,剩下的就看各位大佬了,看看能不能移植其他单片机,51单片机估计不行,最好是单指令周期的单片机,还要有内部比较器与CCp捕捉功能。估计也没人看了,就提前祝大家新年快乐
|
||||||||||||||||||||||||||||||
|
发表于2022-03-07 13:17:17
|
只看该作者
53#
不错,太实用了
|
||||||||||||||||||||||||||||||
|
发表于2022-03-07 13:17:18
|
只看该作者
54#
不错,太实用了
|
|