久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 用M8制作電感、電容、電解電容測量儀表 [打印本頁]

作者: niujia    時間: 2015-7-18 14:05
標題: 用M8制作電感、電容、電解電容測量儀表
這個電路不同國家和地區很多人制作過,測量精度高,測量范圍大,有用不同語言寫的程序,我作了一個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返回到電容測量狀態。

這是安裝完成的樣子:






電路板被設計成適合熱轉印:


加了一個鋁合金底座:


這是原理圖:


這是熱轉印圖和裝配圖: zp.rar (526.81 KB, 下載次數: 116)

這是源程序:
'****************************************************
'*               電感電容電解電容測量儀             *
'*  電容:1P-2.5uF                                   *
'*  電感:1uH-2.0H                                   *
'*  電解電容:0.1uF-20000uF                          *
'*                 呂軍省   天津大港                *
'****************************************************
$regfile = "m8def.dat"
$crystal = 8000000

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

Config Timer1 = Counter , Edge = Falling       '配置T/C1為計數
Config Timer2 = Timer , Prescale = 64       '配置T/C2定時

Config Int0 = Falling
Config Timer0 = Timer , Prescale = 8
On Ovf0 Tim0_isr
On Int0 T1_isr

On Ovf2 Tim2_isr
Enable Ovf2
On Ovf1 Tim1_isr
Enable Ovf1
Enable Interrupts
Tcnt2 = &H83
Start Timer2
Counter1 = 0
Start Counter1

Dim F1 As Long
Dim F2 As Long

Dim C1 As Single
Dim Ca1 As Single
Dim Ca2 As Single
Dim Cx As Single
Dim L1 As Single
Dim Lx As Single
Dim F11 As Single

Dim V1 As String * 11
Dim V2 As String * 11

Dim Vf As String * 6
Dim Vs As String * 8
Dim Z1 As String * 2

Dim J As Bit
Dim I As Byte
Dim K As Bit
Dim M As Bit
Dim Vl As Byte
Dim Tc As Byte
Dim Tc1 As Long
Dim Te As Long

Ddrd.7 = 0       '鍵初始
Portd.7 = 1
Ddrd.4 = 1       '繼電器初始化
Ddrd.3 = 1
Portd.4 = 1
Portd.3 = 1

Ddrd.6 = 1
Portd.6 = 1
J = 1
K = 1
M = 1
I = 1
Tc1 = 0
Cls
Cursor Off

'/////主程序/////
Do

   '/////按鍵處理/////

   If Pind.7 = 0 Then       'S1
      Waitms 40
         If Pind.7 = 0 Then
            Incr I
            Bitwait Pind.7 , Set
         End If
   End If

   '/////電感L1,電容C1計算/////

   If I = 1 Then
      If J = 1 Then

         Lcd "  L_C_CE meter"
         Lowerline
         Lcd "    20081217"

         Waitms 1500       '等待F1計數
         Portd.3 = 0       '接入標準電容C2
         Waitms 1500       '等待f2計數

         Ca1 = F1 * F1
         Ca2 = F2 * F2
         C1 = Ca1 - Ca2
         C1 = Ca2 / C1
         C1 = C1 * 1800       '1800是標準電容C2 ;單位pF

         L1 = 3.1416 * 3.1416
         L1 = L1 * 4
         L1 = L1 * Ca1
         L1 = L1 * C1
         L1 = 1 / L1
         L1 = L1 * 1000000000000000000       '單位uH

         Portd.3 = 1       '斷開標準電容C2
      End If

      J = 0

      Vf = Str(f1)       '顯示f1
      Vf = Format(vf , "      ")
      Locate 1 , 7
      Lcd "F=" ; Vf ; "Hz"
      Locate 1 , 1
      Lcd "SetOK "

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

   End If

   '/////電容Cx計算/////

   If I = 2 Then

      Vf = Str(f1)
      Vf = Format(vf , "      ")
      Locate 1 , 7
      Lcd "F=" ; Vf ; "Hz"

      F11 = F1 * F1
      Cx = Ca1 / F11
      Cx = Cx - 1
      Cx = Cx * C1

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

      Vl = Len(v1)
      Z1 = "pF"

      If Vl = 6 Then
         V1 = Mid(v1 , 1 , 4)
         Z1 = "pF"
      End If

      If Vl = 7 Then
         V1 = Mid(v1 , 1 , 4)
         V1 = Format(v1 , "00.00")
         Z1 = "nF"
      End If

      If Vl = 8 Then
         V1 = Mid(v1 , 1 , 4)
         V1 = Format(v1 , "000.0")
         Z1 = "nF"
      End If

      If Vl = 9 Then
         V1 = Mid(v1 , 1 , 4)
         V1 = Format(v1 , "0.000")
         Z1 = "uF"
      End If

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

      Locate 1 , 1
      Lcd "TestC "

   End If

   '/////電感Lx計算/////

   If I = 3 Then

      Vf = Str(f1)
      Vf = Format(vf , "      ")
      If F1 < 50 Then
         Vf = "     0"
      End If
      Locate 1 , 7
      Lcd "F=" ; Vf ; "Hz"

      Portd.4 = 0       '輸入端切換到測電感

      If F1 > 1000 Then
         F11 = F1 * F1
         Lx = Ca1 / F11
         Lx = Lx - 1
         Lx = Lx * L1
      Else
         Lx = 0
      End If
      V1 = Fusing(lx , "#.##")
      Vl = Len(v1)
      Z1 = "uH"

      If Vl = 6 Then
         V1 = Mid(v1 , 1 , 5)
         Z1 = "uH"
      End If

      If Vl = 7 Then
         V1 = Mid(v1 , 1 , 4)
         V1 = Format(v1 , "0.000")
         Z1 = "mH"
      End If

      If Vl = 8 Then
         V1 = Mid(v1 , 1 , 4)
         V1 = Format(v1 , "00.00")
         Z1 = "mH"
      End If

      If Vl = 9 Then
         V1 = Mid(v1 , 1 , 4)
         V1 = Format(v1 , "000.0")
         Z1 = "mH"
      End If

      If Vl = 10 Then
         V1 = Mid(v1 , 1 , 4)
         V1 = Format(v1 , "0.000")
         Z1 = "H "
      End If

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

      Locate 1 , 1
      Lcd "TestL "

   End If

   '/////電解電容器測量(<500uF) /////

   If I = 4 Then
      Portd.4 = 1
      If K = 1 Then

         Disable Ovf1
         Disable Ovf2

         Enable Int0
         Enable Ovf0

         Locate 1 , 1
         Lcd "TestCE  [<500uF]"
         Locate 2 , 1
         Lcd "   CEx=       "

      End If
      K = 0

   Portd.6 = 0       '開始充電
   Start Timer0       '開始計時
   End If

   '/////電解電容測量(2) /////

   If I = 5 Then

      If M = 1 Then
         Portd.3 = 0
         Locate 1 , 1
         Lcd "TestCE  [>500uF]"
         Locate 2 , 1
         Lcd "   CEx=       "
      End If
      M = 0
      Portd.6 = 0       '開始充電
      Start Timer0       '開始計時
   End If


'/////返回到電容測量//////

   If I = 6 Then

      I = 2       '返回到電容測量

      Enable Ovf1
      Enable Ovf2

      Disable Int0
      Disable Ovf0

      Portd.3 = 1
      K = 1
      M = 1
   End If

Loop
End

'/////計數中斷/////

Tim1_isr:

   Incr Tc1       '這么作可使計數分辯率最高到1Hz

Return

'/////定時中斷/////

Tim2_isr:

   Tcnt2 = &H83       '定時器T2初值
   Incr Tc
   If Tc = 250 Then       '定時250mS
      Stop Counter1
      Tc1 = Tc1 * 65535
      If Portd.3 = 1 Then
         F1 = Counter1
         F1 = F1 + Tc1
         F1 = F1 * 4
      End If
      If Portd.3 = 0 Then
         F2 = Counter1
         F2 = F2 + Tc1
         F2 = F2 * 4
      End If
      Counter1 = 0
      Start Counter1
      Tc = 0
      Tc1 = 0
   End If

Return

'/////定時中斷,測電解電容/////

Tim0_isr:

   Incr Te       '定時器0中斷次數

Return

'/////外部中斷,測電解電容/////

T1_isr:

   Stop Timer0

   Te = Te * 256
   Te = Te + Tcnt0
   Te = Te / 2       '時間/充電電阻=被測電容

   V1 = Str(te)
   Vl = Len(v1)

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

       If Vl = 2 Then
          V1 = "NO"
       End If

       If Vl = 3 Then
          V1 = Mid(v1 , 1 , 3)
          V1 = Format(v1 , "0.000")
       End If

       If Vl = 4 Then
          V1 = Mid(v1 , 1 , 3)
          V1 = Format(v1 , "0.00")
       End If

       If Vl = 5 Then
          V1 = Mid(v1 , 1 , 3)
          V1 = Format(v1 , "0.0")
       End If

       If Vl = 6 Then
          V1 = Mid(v1 , 1 , 3)
       End If

       If Vl = 7 Then
          V1 = "  OL  "
       End If

   End If

   If Portd.3 = 0 Then

      If Vl = 2 Then
         V1 = Mid(v1 , 1 , 2)
         V1 = Format(v1 , "0.00")
      End If

      If Vl = 3 Then
         V1 = Mid(v1 , 1 , 3)
         V1 = Format(v1 , "0.00")
      End If

      If Vl = 4 Then
         V1 = Mid(v1 , 1 , 2)
      End If

      If Vl = 5 Then
         V1 = Mid(v1 , 1 , 3)
      End If

      If Vl = 6 Then
         V1 = Mid(v1 , 1 , 4)
      End If

      If Vl = 7 Then
         V1 = Mid(v1 , 1 , 5)
      End If
   End If

   Vs = Space(7)

   If Te > 1 And Te < 10 Then

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

   End If

   If Te > 10 Then

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

   End If

   Portd.6 = 1       '開始放電

   If Portd.3 = 1 And Te > 10 Then
      Waitms 100
   End If
   If Portd.3 = 0 And Te > 10 Then
      Waitms 500
   End If

   Tcnt0 = 0       '定時計數器清零
   Te = 0       '定時中斷次數清零

Return

433770.rar

6.52 KB, 下載次數: 86, 下載積分: 黑幣 -5


作者: stewart_leung    時間: 2015-8-14 08:12
用51就好了
作者: mtkmt6225    時間: 2015-8-21 09:21
這東西好啊!
作者: 釣魚臺    時間: 2015-9-1 21:18
看著爽!可惜是m8,。
作者: qwa1234    時間: 2015-10-15 22:11
diy必需品啊
作者: qwe12345    時間: 2015-10-15 22:29
好東西
作者: qwe12345    時間: 2015-10-15 22:36
有pcb源文件嗎
作者: qwe12345    時間: 2015-10-15 22:38
有pcb源文件嗎
作者: camit    時間: 2015-12-30 22:20
想整個來用,學習一下
作者: feilang    時間: 2016-5-7 08:43
有使用器件列表嗎
作者: daifhfh    時間: 2016-11-24 00:20
diy必需品啊
作者: jms208    時間: 2017-12-8 06:55
好東西.學習一下............
作者: GUOXUAN    時間: 2017-12-8 21:20
記得在2006年的<無線電>雜志也有M8制做USB電容電感表的文章,當時我還設計好線路制做了30片PCB,還向無線電報社申請了M8樣片,打算制做LCR表.......一晃10多年過去了,那些還是零件,躺在紙箱中.心中難過呀iing.
作者: wefew    時間: 2017-12-8 21:36
可以,學習學習
作者: AOP    時間: 2017-12-8 23:33
制作好精量。。。。。。。
作者: raymondau    時間: 2017-12-12 13:13
你好,請問能發一下電感、電容、電解電容測量儀表清晰一點的原理圖嗎?謝謝!
作者: 邱冬    時間: 2017-12-14 09:16
收藏了,正需要
作者: 邱冬    時間: 2017-12-14 09:19
標記下,方便接下來的學習
作者: qjzyx    時間: 2017-12-25 21:35
下一個來做做看,也好好的學習M8.
作者: rayin    時間: 2020-11-15 10:01
好好看看,也好好的學習M8
作者: taotie    時間: 2020-11-15 10:26
這是bascom版的。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: h在线 | 色接久久| 国产精品日韩欧美一区二区三区 | 免费成人高清在线视频 | 日韩中文字幕一区二区三区 | 国产日韩欧美二区 | 免费久久视频 | 欧美成年人视频在线观看 | 久久成人精品视频 | 久久久久国产精品 | 男女精品久久 | 国产99精品| 99爱国产 | 欧美日韩精品影院 | 欧美aⅴ| 91久久精品日日躁夜夜躁欧美 | 极品久久 | 亚洲精选久久 | 波多野结衣在线观看一区二区三区 | 涩爱av一区二区三区 | 国产午夜视频 | 日韩免费高清视频 | 91在线观看视频 | 亚洲欧美国产一区二区三区 | 视频一区二区在线观看 | 欧美男人天堂 | 日韩欧美天堂 | 欧美在线一区二区三区 | 美女久久久久久久久 | 亚洲一二三区av | 国产二区精品视频 | 羞羞视频免费在线观看 | 精品久久久久久红码专区 | xxxxx黄色片| 亚洲一区二区久久 | 青青草在线视频免费观看 | 精品久久久久久久久久久久久久 | 国产一级片| 成人在线h | 午夜精品久久久久久久久久久久久 | 亚洲欧美日韩精品久久亚洲区 |