10014|15

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

用M8制作电感、电容、电解电容测量仪表 [复制链接]

来源:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3279392&bbs_page_no=2&bbs_id=9999

这个电路不同国家和地区很多人制作过,测量精度高,测量范围大,有用不同语言写的程序,我作了一个BASCOM-AVR版本的,并增加了对电解电容器测量。
电感测量范围:0.1μH~2H
电容测量范围:1pF~2.5μF
电解电容测量范围:0.1μF~30000μF

一、电容、电感测量原理:
电路是一个由LM393(U3A)组成的LC振荡器。由单片机测量LC震荡回路的频率F1,然后控制继电器K2将标准电容C2与C1并联,测出振荡器频率F2,再用下列式子计算出电容C1电感L1的值。


这里电容器C2的容量的精确程度,基本上决定了整个测量过程的精度。应该选用稳定性好精度高的电容器,这个制作选用了1800pF的云母电容器。
上述过程可称作为一个校准过程,由M8控制每次开机时自动完成。开机后延时1500ms,测量由U1A、L1、C1组成振荡器频率F1;Portd.3 = 0,K2吸合,C2接入延时1500ms,测量振荡器频率F2,Portd.3 = 1,K2断开。M8计算C1、L1完成后按S1进入电容Cx的测量状态。
电容Cx、电感Lx的值,分别用下列式子计算:


二、电解电容测量原理:
电解电容的测量是基于对RC电路的时间常数的计算,由脉冲电路原理可知,电容的充电速度与R和C的大小有关,R与C的乘积越大,过渡时间就越长。这个RC的乘积就叫做RC电路的时间常数τ,即τ=R∙C。若R的单位用欧姆,C的单位用法拉,则τ的单位为秒。


图示曲线可以得到充电过程的一般规律:Uc是按指数规律上升的,Uc开始变化较快,以后逐渐减慢,并缓慢地趋近其最终值,当t=τ时,Uc=0.632E;本测量仪就是利用单片机测量Uc=0到0.632E这段时间,用下列式子计算计算被测电容值:


电路由比较器U3B,放电晶体管Q等组成。设定比较器正输入端为Uc,(Uc=0.632E=0.632⋅5=3.16V,调节RP1获得),反向输入端接被测电容CEx,当D端为高电平时,Q导通电路处于放电状态,这时CEx被放电,比较器U3B输出高电平。当D为低电平时Q截止电容CEx通过R9(R10)充电,CEx两端电压逐步升高,当CEx两端电压>Uc时,比较器U3B输出低电平,产生INT0中断(INT0中断设置为下降沿触发),中断服务程序读取定时器值,并计算、显示CEx的值。然后置位PD6为高电平,Q导通,CEx放电,延时100mS是为了保证CEx充分放电,中断返回开始下一个测量周期。为了提高测量精度电解电容测量分两档,由继电器K2切换,R9接入时测量0.1μF~500μF电容,R10接入时测量500μF~20000μF电容。R9(R10)的精度和电压Uc的精度基本上决定了测量结果精度。
这个设计原本加入了一个电解电容漏电流测试功能,由于测量时间太长而放弃,图中的R13、R9(R10)与adc0等组成漏电流测量电路。
三、使用方法:
按下S2接通电源,进入校准状态(此时测量端子不能接入器件):



校准完成后:



按动S1进入电容测量状态:



按动S1进入电感测量状态:


按动S1进入电解电容(<500uF)测量状态:



按动S1进入电解电容(>500uF)测量状态:



再按S1返回到电容测量状态。

这是安装完成的样子:






电路板被设计成适合热转印:



加了一个铝合金底座:

此帖出自分立器件论坛

最新回复

人家开始就写了是引用过来的啦,就在帖子第一行,你自己没看  详情 回复 发表于 2015-11-23 23:28
点赞 关注(2)
 
 

回复
举报

3836

帖子

19

TA的资源

纯净的硅(中级)

推荐
 
这是源程序:
  1. '****************************************************
  2. '* 电感电容电解电容测量仪 *
  3. '* 电容:1P-2.5uF *
  4. '* 电感:1uH-2.0H *
  5. '* 电解电容:0.1uF-20000uF *
  6. '* 吕军省 天津大港 *
  7. '* junsheng427@126.com *
  8. '* 20081217 *
  9. '****************************************************
  10. $regfile = "m8def.dat"
  11. $crystal = 8000000

  12. Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
  13. Config Lcd = 16 * 2

  14. Config Timer1 = Counter , Edge = Falling '配置T/C1为计数
  15. Config Timer2 = Timer , Prescale = 64 '配置T/C2定时

  16. Config Int0 = Falling
  17. Config Timer0 = Timer , Prescale = 8
  18. On Ovf0 Tim0_isr
  19. On Int0 T1_isr

  20. On Ovf2 Tim2_isr
  21. Enable Ovf2
  22. On Ovf1 Tim1_isr
  23. Enable Ovf1
  24. Enable Interrupts
  25. Tcnt2 = &H83
  26. Start Timer2
  27. Counter1 = 0
  28. Start Counter1

  29. Dim F1 As Long
  30. Dim F2 As Long

  31. Dim C1 As Single
  32. Dim Ca1 As Single
  33. Dim Ca2 As Single
  34. Dim Cx As Single
  35. Dim L1 As Single
  36. Dim Lx As Single
  37. Dim F11 As Single

  38. Dim V1 As String * 11
  39. Dim V2 As String * 11

  40. Dim Vf As String * 6
  41. Dim Vs As String * 8
  42. Dim Z1 As String * 2

  43. Dim J As Bit
  44. Dim I As Byte
  45. Dim K As Bit
  46. Dim M As Bit
  47. Dim Vl As Byte
  48. Dim Tc As Byte
  49. Dim Tc1 As Long
  50. Dim Te As Long

  51. Ddrd.7 = 0 '键初始
  52. Portd.7 = 1
  53. Ddrd.4 = 1 '继电器初始化
  54. Ddrd.3 = 1
  55. Portd.4 = 1
  56. Portd.3 = 1

  57. Ddrd.6 = 1
  58. Portd.6 = 1
  59. J = 1
  60. K = 1
  61. M = 1
  62. I = 1
  63. Tc1 = 0
  64. Cls
  65. Cursor Off

  66. '/////主程序/////
  67. Do

  68. '/////按键处理/////

  69. If Pind.7 = 0 Then 'S1
  70. Waitms 40
  71. If Pind.7 = 0 Then
  72. Incr I
  73. Bitwait Pind.7 , Set
  74. End If
  75. End If

  76. '/////电感L1,电容C1计算/////

  77. If I = 1 Then
  78. If J = 1 Then

  79. Lcd " L_C_CE meter"
  80. Lowerline
  81. Lcd " 20081217"

  82. Waitms 1500 '等待F1计数
  83. Portd.3 = 0 '接入标准电容C2
  84. Waitms 1500 '等待f2计数

  85. Ca1 = F1 * F1
  86. Ca2 = F2 * F2
  87. C1 = Ca1 - Ca2
  88. C1 = Ca2 / C1
  89. C1 = C1 * 1800 '1800是标准电容C2 ;单位pF

  90. L1 = 3.1416 * 3.1416
  91. L1 = L1 * 4
  92. L1 = L1 * Ca1
  93. L1 = L1 * C1
  94. L1 = 1 / L1
  95. L1 = L1 * 1000000000000000000 '单位uH

  96. Portd.3 = 1 '断开标准电容C2
  97. End If

  98. J = 0

  99. Vf = Str(f1) '显示f1
  100. Vf = Format(vf , " ")
  101. Locate 1 , 7
  102. Lcd "F=" ; Vf ; "Hz"
  103. Locate 1 , 1
  104. Lcd "SetOK "

  105. V1 = Fusing(c1 , "#.#")
  106. V2 = Fusing(l1 , "#.#")
  107. Locate 2 , 1
  108. Lcd V1 ; "pF " ; V2 ; "uH"

  109. End If

  110. '/////电容Cx计算/////

  111. If I = 2 Then

  112. Vf = Str(f1)
  113. Vf = Format(vf , " ")
  114. Locate 1 , 7
  115. Lcd "F=" ; Vf ; "Hz"

  116. F11 = F1 * F1
  117. Cx = Ca1 / F11
  118. Cx = Cx - 1
  119. Cx = Cx * C1

  120. V1 = Fusing(cx , "#.#")

  121. Vl = Len(v1)
  122. Z1 = "pF"

  123. If Vl = 6 Then
  124. V1 = Mid(v1 , 1 , 4)
  125. Z1 = "pF"
  126. End If

  127. If Vl = 7 Then
  128. V1 = Mid(v1 , 1 , 4)
  129. V1 = Format(v1 , "00.00")
  130. Z1 = "nF"
  131. End If

  132. If Vl = 8 Then
  133. V1 = Mid(v1 , 1 , 4)
  134. V1 = Format(v1 , "000.0")
  135. Z1 = "nF"
  136. End If

  137. If Vl = 9 Then
  138. V1 = Mid(v1 , 1 , 4)
  139. V1 = Format(v1 , "0.000")
  140. Z1 = "uF"
  141. End If

  142. Vs = Space(8)
  143. Locate 2 , 1
  144. Lcd " Cx=" ; V1 ; Z1 ; Vs

  145. Locate 1 , 1
  146. Lcd "TestC "

  147. End If

  148. '/////电感Lx计算/////

  149. If I = 3 Then

  150. Vf = Str(f1)
  151. Vf = Format(vf , " ")
  152. If F1 < 50 Then
  153. Vf = " 0"
  154. End If
  155. Locate 1 , 7
  156. Lcd "F=" ; Vf ; "Hz"

  157. Portd.4 = 0 '输入端切换到测电感

  158. If F1 > 1000 Then
  159. F11 = F1 * F1
  160. Lx = Ca1 / F11
  161. Lx = Lx - 1
  162. Lx = Lx * L1
  163. Else
  164. Lx = 0
  165. End If
  166. V1 = Fusing(lx , "#.##")
  167. Vl = Len(v1)
  168. Z1 = "uH"

  169. If Vl = 6 Then
  170. V1 = Mid(v1 , 1 , 5)
  171. Z1 = "uH"
  172. End If

  173. If Vl = 7 Then
  174. V1 = Mid(v1 , 1 , 4)
  175. V1 = Format(v1 , "0.000")
  176. Z1 = "mH"
  177. End If

  178. If Vl = 8 Then
  179. V1 = Mid(v1 , 1 , 4)
  180. V1 = Format(v1 , "00.00")
  181. Z1 = "mH"
  182. End If

  183. If Vl = 9 Then
  184. V1 = Mid(v1 , 1 , 4)
  185. V1 = Format(v1 , "000.0")
  186. Z1 = "mH"
  187. End If

  188. If Vl = 10 Then
  189. V1 = Mid(v1 , 1 , 4)
  190. V1 = Format(v1 , "0.000")
  191. Z1 = "H "
  192. End If

  193. Vs = Space(8)
  194. Locate 2 , 1
  195. Lcd " Lx=" ; V1 ; Z1 ; Vs

  196. Locate 1 , 1
  197. Lcd "TestL "

  198. End If

  199. '/////电解电容器测量(<500uF) /////

  200. If I = 4 Then
  201. Portd.4 = 1
  202. If K = 1 Then

  203. Disable Ovf1
  204. Disable Ovf2

  205. Enable Int0
  206. Enable Ovf0

  207. Locate 1 , 1
  208. Lcd "TestCE [<500uF]"
  209. Locate 2 , 1
  210. Lcd " CEx= "

  211. End If
  212. K = 0

  213. Portd.6 = 0 '开始充电
  214. Start Timer0 '开始计时
  215. End If

  216. '/////电解电容测量(2) /////

  217. If I = 5 Then

  218. If M = 1 Then
  219. Portd.3 = 0
  220. Locate 1 , 1
  221. Lcd "TestCE [>500uF]"
  222. Locate 2 , 1
  223. Lcd " CEx= "
  224. End If
  225. M = 0
  226. Portd.6 = 0 '开始充电
  227. Start Timer0 '开始计时
  228. End If


  229. '/////返回到电容测量//////

  230. If I = 6 Then

  231. I = 2 '返回到电容测量

  232. Enable Ovf1
  233. Enable Ovf2

  234. Disable Int0
  235. Disable Ovf0

  236. Portd.3 = 1
  237. K = 1
  238. M = 1
  239. End If

  240. Loop
  241. End

  242. '/////计数中断/////

  243. Tim1_isr:

  244. Incr Tc1 '这么作可使计数分辩率最高到1Hz

  245. Return

  246. '/////定时中断/////

  247. Tim2_isr:

  248. Tcnt2 = &H83 '定时器T2初值
  249. Incr Tc
  250. If Tc = 250 Then '定时250mS
  251. Stop Counter1
  252. Tc1 = Tc1 * 65535
  253. If Portd.3 = 1 Then
  254. F1 = Counter1
  255. F1 = F1 + Tc1
  256. F1 = F1 * 4
  257. End If
  258. If Portd.3 = 0 Then
  259. F2 = Counter1
  260. F2 = F2 + Tc1
  261. F2 = F2 * 4
  262. End If
  263. Counter1 = 0
  264. Start Counter1
  265. Tc = 0
  266. Tc1 = 0
  267. End If

  268. Return

  269. '/////定时中断,测电解电容/////

  270. Tim0_isr:

  271. Incr Te '定时器0中断次数

  272. Return

  273. '/////外部中断,测电解电容/////

  274. T1_isr:

  275. Stop Timer0

  276. Te = Te * 256
  277. Te = Te + Tcnt0
  278. Te = Te / 2 '时间/充电电阻=被测电容

  279. V1 = Str(te)
  280. Vl = Len(v1)

  281. If Portd.3 = 1 Then '充电电阻R9接入,<500uF

  282. If Vl = 2 Then
  283. V1 = "NO"
  284. End If

  285. If Vl = 3 Then
  286. V1 = Mid(v1 , 1 , 3)
  287. V1 = Format(v1 , "0.000")
  288. End If

  289. If Vl = 4 Then
  290. V1 = Mid(v1 , 1 , 3)
  291. V1 = Format(v1 , "0.00")
  292. End If

  293. If Vl = 5 Then
  294. V1 = Mid(v1 , 1 , 3)
  295. V1 = Format(v1 , "0.0")
  296. End If

  297. If Vl = 6 Then
  298. V1 = Mid(v1 , 1 , 3)
  299. End If

  300. If Vl = 7 Then
  301. V1 = " OL "
  302. End If

  303. End If

  304. If Portd.3 = 0 Then

  305. If Vl = 2 Then
  306. V1 = Mid(v1 , 1 , 2)
  307. V1 = Format(v1 , "0.00")
  308. End If

  309. If Vl = 3 Then
  310. V1 = Mid(v1 , 1 , 3)
  311. V1 = Format(v1 , "0.00")
  312. End If

  313. If Vl = 4 Then
  314. V1 = Mid(v1 , 1 , 2)
  315. End If

  316. If Vl = 5 Then
  317. V1 = Mid(v1 , 1 , 3)
  318. End If

  319. If Vl = 6 Then
  320. V1 = Mid(v1 , 1 , 4)
  321. End If

  322. If Vl = 7 Then
  323. V1 = Mid(v1 , 1 , 5)
  324. End If
  325. End If

  326. Vs = Space(7)

  327. If Te > 1 And Te < 10 Then

  328. Locate 2 , 1
  329. Lcd " CEx=" ; "0" ; "uF" ; Vs

  330. End If

  331. If Te > 10 Then

  332. Locate 2 , 1
  333. Lcd " CEx=" ; V1 ; "uF" ; Vs

  334. End If

  335. Portd.6 = 1 '开始放电

  336. If Portd.3 = 1 And Te > 10 Then
  337. Waitms 100
  338. End If
  339. If Portd.3 = 0 And Te > 10 Then
  340. Waitms 500
  341. End If

  342. Tcnt0 = 0 '定时计数器清零
  343. Te = 0 '定时中断次数清零

  344. Return


复制代码



十六进制文件:
点击此处下载 LC-1.rar (6.52 KB, 下载次数: 37)
此帖出自分立器件论坛

赞赏

1

查看全部赞赏

 
 
 

回复

3836

帖子

19

TA的资源

纯净的硅(中级)

沙发
 
这是原理图、热转印图和装配图:

热转印图和装配图.rar (526.81 KB, 下载次数: 97)


此帖出自分立器件论坛
 
 
 

回复

1290

帖子

0

TA的资源

五彩晶圆(初级)

4
 
如此详尽之分享焉有不支持之理!
此帖出自分立器件论坛
 
 
 

回复

2400

帖子

0

TA的资源

裸片初长成(高级)

5
 
如此详尽之,真有自己动手做的冲动
此帖出自分立器件论坛
 
 
 

回复

96

帖子

1

TA的资源

一粒金砂(高级)

6
 
写得很详尽,谢谢楼主分享!
此帖出自分立器件论坛
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(初级)

7
 
我也想自己做一个了~
此帖出自分立器件论坛
个人签名冰是睡着的水
 
 
 

回复

1014

帖子

0

TA的资源

裸片初长成(初级)

8
 
图文并茂的好文章,谢谢楼主共享。能否把全部材料打包下载呢?
此帖出自分立器件论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼主很大方,资料很好,希望能用上呢
此帖出自分立器件论坛
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(初级)

10
 
好东西,谢谢楼主!
此帖出自分立器件论坛
 
 
 

回复

391

帖子

1

TA的资源

一粒金砂(高级)

11
 
顶一个啊!!!谢谢分享
此帖出自分立器件论坛
个人签名尽善尽美
 
 
 

回复

118

帖子

0

TA的资源

一粒金砂(中级)

12
 
板子做的很漂亮
此帖出自分立器件论坛
 
 
 

回复

414

帖子

4

TA的资源

纯净的硅(高级)

13
 
用M8制作电感、电容、电解电容测量仪表 (amoBBS 阿莫电子论坛)
http://www.amobbs.com/forum.php?mod=viewthread&tid=3279392
更新原贴地址
此帖出自分立器件论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

14
 
不错的帖子
此帖出自分立器件论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

15
 
不错的帖子
此帖出自分立器件论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(中级)

16
 
经世致用 发表于 2014-8-16 15:08
用M8制作电感、电容、电解电容测量仪表 (amoBBS 阿莫电子论坛)
http://www.amobbs.com/forum.php?mod=view ...

人家开始就写了是引用过来的啦,就在帖子第一行,你自己没看
此帖出自分立器件论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表