1.使用方法
2、プログラムリスト
1.使用方法
①本装置をパーソナルコンピュータに接続する
②
③
④
⑤
⑥
Excel VBAを起動する
シート上に図1のユーザーフォームが表示される
オフセット電圧を調整するために,本装置に抵抗(lkΩ)を接続する ユーザーフォーム上の増幅度を31倍か301倍に設定する
オフセットのボタンをクリックする
⑦基板上の増幅度を切り替えるためのスイッチを,ユーザーフォーム上の増幅度に対 応じて変更する。このとき確認のフォームが表示されOKを押す。
⑧図2のように,オフセット調整シートとグラフが自動的に作成され,測定を開始す
る。
電子部品を本装置に接続する 他のシートをアクティブ状態にする
基板とユーザーフォームの増幅度を設定する 測定ボタンをクリックする
タイトル名を記入する
図3のように,グラフが表示され,タイトルと測定データが書き込まれる
続けて測定するときは,④〜⑧のオフセット電圧分の補正が不要である。電子部品を付け替え
⑨〜⑭の工程を繰り返せばよい。測定ごとにグラフを作成することはなく,測定データがセルに 書き込まれていくと同時に,グラフにも書き込まれていく。
∵す∵…下T1..1... .J
図1測定のためのユーザーフォーム
A...
1買.1倍. .写q.借..
・竜田V〕 電流{十ん、竜田V〕」一 0 0 0.
O,019531 00.0195章1 5. O.039063 0 0038巳68
.6 0.057964 0.063004 0.058204.
O・0η495p・P明0P4.O・Pη54プ
..P..O草70260,P明qOそ..1..O.P9.6日7日.;.
.9 0.「15927 0.12600巳一0.116214 0.135459 0.12600冒一0,135章51...」.
0.15499 0.12600日 0,154日87..
0.173891 0.189012 0.174224 0.193422 0.1日9012 0.193561 1.4 ≡O,212954 0.189012 0.212897 0.2324日5 0.1日9012 0.232169 0.25「3日6 0.252016 0.25157 17 0.270917 0.252016 0.270907 1β .0.290449 0.252016 0.290243 0..3093与 O.31502 0.309515 0.328381 0.31502.0−328日52 0.34B4121 0.3150210.348188.
……1買・……二…1:=冥鷲…二1買・…9:………一
D
0..
q,
O.019466 q,P38933
0.0葦.日3.99...
...q..P7.7.日6事.・
O.097332 P.116798
0.155731=
O.4 ρ、1751,97
0・19欄4 {O.3
0.220619 }=
0.233596 鐘O・2
0.253063 0.1
0.272529 p.29848一. o O.31フ951 0.草37417−
0・356旦日31 (oτ白0E
図2 オフセット調整シート e.....G
一.P.01..草.2そ36S4.
一q.、016日4104日
....一.一一一.
0.2 0.3 電圧(V)
.A
...1..... 560
,.2.、」....竜田V〕
...3..P.OO01価
..一....O.0196η 5 0.0385フ9 6 0.05811
7..O.Oη011 日 O,095912
.9.... 0.115444
...1...q.......0.13{345.
.1.1....O−1538761
.1...2..O,172η7 13... O.192309
.1.{... 021121
,15 0.230741
...1草...O.2欄42 17 0.2691フ3
....1...旦...O.28日Oフ5
1蔓. 0.306976 2.9....O.326507
21 0.345408 2ξ.、 O.36494 23 0.383841 2そ .O.403372 25.O.422273 26.=O。仙804 2T O,460706 28 0.479607
日 C P
566一舶LED六一色LEb一一一一一一一 雪:流=mA〕 電圧〔V〕 電;刷mA)
00.000146 0.
.O O.0196η O O.048383 0.039209 0 0.048383 0.05874 0.1113日7 q,07日271 0.174391 0.097802 0.174391 0.117334
q,237395.P.136日6章. 16 0.23739章. O.156396
0.3004 0」175927, 14 0.3004 0.195459
0.36340→O.21そ99 12
0.363404 0.234521
・棚棚岬・1 §10
:1灘...:1;;;ll;一..鐘・
p.552416 0.3126{6− 6 0.552416 ..q..3321フ.7 0.61542 0.351709 4 0.61542 0.3フ124 2
0.678424 0.390771 0.678424 0.410302 0
0.フ41428 0.429834 0.741428 0.449365−
0.日〇一432 0、そ6日日96 0.867436 0.488427
E... ..F..... ⊥_ ..H. 1
冒光一電圧特性
J K し.
2 3 4 5
一560
・・赤色LED
0 1
電圧(V)
図3 測定データの表示
・2・
2.プログラムリスト
,******十*去***光**********去*****十*********十*非去**共*****十**半***壬*十十
IV測定
2009年12月 21目
兵庫教育大学 他用政也・小山英樹・******十********************井******去***********去**********去****
Dim TimeStep As Long,Data−NameAs String
Dim DemataNameAs String,DefDataNumAs Integer
Dim ice11As Variant,jce11As Variant,jce11_1As V虹iant Dim Vbut256As Long
Dim V㏄As Doub1e,Vreし2As Doub1e,RserAs Dou1〕Ie DimAyAs Doub1e,Io雌As Double,I1imitAs Doub1e Dim ContF1agAs Boo1ean,ComboBoxOKAs Boo1ean Dim mysht1As String
Dim ice1しtumAs Integer
Dim mysht2AsWorksheet
1****井**赤****************
測定開始ボタン
1*******************☆**壬*
Private Sub ButtonStart C1ickO Dim DefDataNameNumAs String
Dim Vread256As Byte,TempData1As Byte,TempData2As Byte Dim GoUpF1agAs Boo1ean,ILoop As Integ叫memp As II1teger Dim VbutAs Doub1e,VreadAs Doub1e,IreadAs Doub1e Dim NSerCo1As Variant
舳* Iフセット調整用シートがアクティブなときの警告*舳 IfActiveSheet.Name= オフセット調整 Tben
Msg早。x( 記録用のシートをアクティブにしてください )
Exit Sub End If
*舳 竦ウ電流値を取得舳*
IfInStr仏pp1ication.Sheets(1).Name, オフセット調整 )=0Then Io舐=0
E1se
IfAv=31Then
Io冊:Worksheets( オフセット調整 ).Ra㎎e( G21 ).VaIue
E1se
Io舐=Worksheets( オフセット調整 ).Ra㎎e( IG3 ).Va1ue End If
End If
舳
fータを記入するセルの番地榊
ice1I=3 jce11=1
W上i1e ActiveSheet.Ce11s(1,jce11).Va1ueく> ■1_
OrActiveSheet.Ce11s(1,jce11+1)、Va1ueく>
jce11=jce11+1
Wend
jce1L1=jce11+1
冊*シートのセルに空自を記入(グラフ作成のため)*舳
ActiveSheet.Ce11s(3,jce11)= 川 ActiveSheet.Ce11s(3,jce1し1)= 川
I*舳 fータ名とタイトル舳*
DefDataNameNum=DefDataName&Str(De冊ataNum)
DataName=InputBox( データ名を入力してください , データ名の入力 I,
DefDataNameNum)
IfDataName=1 Then Exit Sub
ActiveSheet.Ce11s(1,jce11).Va1ue=DataName ActiveShee士.Ce11s(1,jce1し1).V乞1ue=DataName ActiveSheet.Ce11s(2,jce11).Va1ue= 電圧(V)
・4一
ActiveSheet.Ce11s(2,jce11_1)、V主1ue・・ 電流(mA)1
IfDataName=DefDataNameNum Then DefOataNum=DefDataNum+1
End If
Labe1_DataName2.CaI)tion=Da七aName
ButtonStart.Caption= 測定中
Bu仇。nStart.Enab1ed=Fa1se Bu批。nO舐set,Enab1ed一=Fa1se ButtonC1ose.Enab1ed=Fa1se ComboBox1.Enab1ed=Fa1se
DoEvents
州 Oラフ作成舳*
mysht1=ActiveSheet.Name
IfActiveSheet.ChartObjects.Count=0Then
Charts.Ad−d
ActiveChart.Chart町pe=x1WScatterLinesNoMarkers
Act1veChart Locat1on Where=x1Locat1oηAsOb〕ect,Name=mysht1 ActiveChart.SeriesCo11ection(1).XVa1ues
=ActiveSheet,Range(ActiveSheet.Ce11s(3,jce11),ActiveSbeet.Ce11s(520,jce11))
ActiveChart.SeriesCo11ection(1).Va1ues
=ActiveSheet.Range(ActiveShee北.Ce11s(3,jce11_1),ActiveSheet.Ce11s(520,
jc・1し1))
ActiveChart.SeriesCo11ection(1).Name=ActiveSheet.Ce11s(1,jce11).Va1ue
榊
Oラフの詳細設定榊
W1thAct1veChart虹es(x1Category)
.MinimumSca1e=0 Max1mumSca1e=5
End With
WithActiveChart.Axes(x1伯1ue)
.MinimumSca1e=0 .MaximumSca1e=17 End With
OtherGraphParameters E1Se
ActiveSheet.ChartObjects(1).Activate ActiveChart.SeriesCo11ection.NewSeries NSerCo1=ActiveChart.SeriesCo11ection.Count ActiveChart.SeriesCo11θction(NSerCo1).XVa1ues
:ActiveSheet.Range(ActiveSheet.Ce1Is(3,jce■),ActiveSheet.Ce】ユs(520,jce11))
ActiveChart.SeriesCo11ection(NSerCo1).Va1ues
=ActiveSheet.Range(ActiveSheet.Ce11s(3,jce11_1),ActiveSheetlCe11s(520,
jc・11_1))
ActiveChartlSeriesCo11ection(NSerCo1).Name二ActiveSheet.Ce11s(1,jce11).Va1ue Ena If
ActiveSheet.Ce11s(1,jce11).Se1ect
舳*
ェ定*舳
Vout256=0&
GoUpF1ag:Tme
ContF1ag=下土ue ILoop=0
Iread=0
I1imit=11
Whi1e ContF1ag Data Out Vbut256 Data Reaa Vread256
IfVread256>2500r Iread>I1imit Then GoUpF1ag=Fa1se
一6一
End If
舳*
d圧と電流の計算榊
VoutコV㏄*CDb1(Vout256)ノ256#
Vread=Vref2*2#*CDb1(Vread256)/25僻 Iread=Vread/Av/Rser*1000#.Io箭 Vout=Vbu士・RseI・*Iread/1000#
I1imit=1−0.0021*Vbut〈4・1.0659*Vout〈3+1.3214*Vout〈2・3.6191*Vout+
108.566
榊シ]トに記録*舳
ActiveSheet.Ce11s(ice11,jce11).Va1ue二Vbut
IfIoffく0And Vread−256二0Then
ActiveSheet.Ce11s(ice11,jce1し1).V金1ue=0
E1se
ActiveSheet.Ce11s(ice11,jce1し1).Va1ue:Ireaa End If
ice11=ice11+1
舳* o力電圧のバー表示舳*
ILoop羅ILoop+1
ITemp=ILoop M1oa10 If ITemp=0ThenLabe1BarFron七.Wi砒ト186*CDb1(Vout256)/255#
DoEvents
End If
*舳 o力電圧を変化*舳 IfGoUpF1ag Then
Vbut256=Vbut256+1&
IfVout256>=255Then GoUpF1ag=Fa1se E1se
Vout256:Vbut256−1&
IfVout256く0Then ContF1ag=Fa1se
End−If End If
Wend
舳ポェ定終了舳*
Data Out0&
Labe1BarFront.Wi砒h=0
ButtonStart.Caption= 終了
DoEvents
MsgBox 測定終了しました ,vbOKOn1ポ 測定終了
LabeLDataName2.Caption= l ButtonStart.Caption= 測定 Bu批。1■S七ar七.Enab1ed一二True
Bu枇。nO描set.Enab1ea=True ButtonC1ose.Enab1ed=True Coml〕oBox1.Enab1ed一=True End Sub
1**非**央******************
オフセット調整ボタン
I****十*****井*************
Private Sub ButtonO描set C1ickO Dim DefOataNameNumAs String
Dim Vread256As Byte,TempData1As Byte,Te血pData2As Byte Dim GoUpF1agAs Boo1ean,ILoop As Integ叫ITempAs Integer Dim VbutAs Doub1e,VreadAs Doub1e,IreadAs Doub1e Dim NSerCo1As Variant
Dim iAs Integer
・8・
榊* m認のメッセージ*舳
IfMsgBox(1 オフセット調整用の抵抗を接続してください ,vbOKCance1)・・vbCance1Then Exit Sub
舳 Iフセット専用のワークシートを追加*榊
IfInStr(App1ication.Sheets(1)、Name, オフセット調整 )=0Then
Worksheets.Add
Ac士iveSheet.Name・・ オフセット調整 End If
Worksheets(1,オフセット調整 ).Activate ActiveSheet.Ce11s(1,1).Se1ect
ActiveShee七.Range( G1 1).Va1ue= 補正電流値(mA).
Co1umns( G:G ).EntireCo1umn.AutoFit
舳*
fータを記入するセルの番地榊
ice11=3
IfActiveSbeet.Range( A50 )..Va1ue=0AndActiveSheet.Range( C50 ).Va1ue=0Then i=0
E1Se i=1 End If
IfAv=31Then
jce11=1 If i=1Then
Range( IA3:B513 1).Se1ect Se1ection,C1earContents End If
E1se jce11=3 If i=1Then
Range( C3:D513. ).Se1ect
Se1ection.C1earContenもs
End−If End If
jce11_1=jce11+1
舳*シートのセルに空白を記入(グラフ作成のため)舳
Fori=1To4
IfAc七iveSheet.Cei1s(3,i).Va1ue=
Next
TbenAc七iveSheet.de11s(3,i).Va1ue=
舳* fータ名とタイトル舳*
ActiveSheet,Ce11s(1,1).Va1ue: 31イ音 ActiveSheet.Ce11s(1,2).Va1ue= 31イ音 ActiveSheet.Ce11s(2,1).Va1ue= 電圧(V)
ActiveSheet.Ce11s(2,2).Va1ue=I 電流(mA)
ActiveSheetlCe11s(1,3).Va1ue= 301倍 Ac七iveSheet,Ce11s(1,4).Va1ue= 301倍 ActiveSheet.Ce11s(2,3).Va1ue= 電圧(V)
ActiveSheet.Ce11s(2,4).Va1ue= 電流(mA)
IfAv記31Then
DataName= 31倍 E1SeDataName=. 301倍 ■ End If
Labe1_DataName2.CaptioI1=Data−Name Bu枕。nStart.Caption= 測定中
ButtonStart.Enab1ed・・Fa1se Bu仇。n0冊set.Enab1ed=1Fa1se ButtonC1ose.Enab1ed=Fa1se ComboBox1,Enab1ed=FaIse
DoEvents
州 Oラフ作成舳*
・10・
mysht1=ActiveSheet.Name
IfActiveSheet.ChartObjects.Count二0Then
Charts.Ad−d
ActiveChart.Cllar七町pe=x1XYScatterLinesNoMarkers
ActiveChart.Location Where:二x1Loca士ionAsObject,Name:=mysht1
冊* R1倍用のデータは系列1*舳
ActiveChart.SeriesCo11ection(1).XVa1ues
=ActiveSheet.Range(ActiveSheet.Ce11s(3,1),ActiveSheet.Ce11s(520,1))
ActiveChart.SeriesCo11ection(1).V査1ues
=ActiveSheet.Range(ActiveSheet.Ce11s(3,2),ActiveSheet.Ce11s(520,2))
ActiveChart.SeriesCo11ection(1).Name=ActiveSheet.Ce11s(1,1).Va1ue
舳* R01倍用のデータは系列2*舳 ActiveChart.SeriesCo11ection.NewSeries ActiveChart.SeriesCo11ection(2).XVa1ues
=ActiveSheet.Range(ActiveSheet.Ce11s(3,3),Ac乞iveSheet.Ce11s(520,3))
ActiveChart.SeriesCo1Iection(2).Va1ues
=ActiveSheet.Range(ActiveSheet,Ce11s(3,4),ActiveSheet.Ce11s(520,4))
ActiveChart.SeriesCo11ection(2).Name=ActiveSheet.Ce11s(1,3).Va1ue
■紬*グラフの詳細設定*舳
WithActiveChart.Axes(x1Category)
、MinimumSca1e=0 .MaximumSca1e=O.5 End With
WithActiveChart.Axes(x1Va1ue)
.MinimumSca1e=0 .MaximumSca1e=0.5 Ena With
OtherGraphParameters End If
ActiveSheet.Ce11s(1,jce11).Se1ect
峡舳
ェ定*舳
Vout256=0&
GoUpF1ag=True
ContFIag=True ILoop=0Vグhi1e ContF1ag Data Out Vout256 Data Read Vread256 IfVread−256>250Then GoUpF1ag=Fa1se iCe11turn=iCe11 End If
榊 d圧と電流の計算舳*
Vout=Vcc*CDb1(Vbut256)/256#
Vread一ごVreし2*2#*CDb1(Vread256)/256#
Iread=Vread/Av/Rser*1000#
Vbut=Vout・Rser*Iread/1000#
舳シ]トド記録*舳
ActiveSheet.Ce11s(ice11,jce11).Va1ue=Vout ActiveSheet.Ce11s(ice11,jce1し1).Va1ue・・Ireaa iCeI1二iCe11+ 1
冊* o力電圧のバー表示*舳
ILoop=ILoop+1
ITemp=ILoopΨod10 IfITemp=0Then
LabeしBarFr㎝t.Width=186*CDb1(Vout256)/255#
DoEvents
・12一
End If
榊出力電圧を変化舳*
IfGoUpF1ag Then
Vbut256=Vbut256+1&
IfVout256>=255Then GoUpF1ag=Fa1se iCe11turn=iCe11 End If
E1Se
Vout256=Vout256−1&
IfVbut256く0Then
ContF1ag=Fa1se Ena IfEnd If
Wend
舳 ェ定データからオフセシト電圧を求める榊
IfAv=31Then
ActiveSheet.Range(I G2, ).Va1ue=_
WorksbeetFunction.Intercept(Ra㎎e(Ce11s(3,2),Ce11s(ice11_tum,2)),_
Range(Ce11s(3,1),Ce11s(ice1しtum,1)))
E1se
ActiveSheet,Range( G3 ).V註1ue=_
WorksheetFunction.Intercept(Ra㎎e(Ce11s(3,4),Ce11s(ice1しtum,4)),_
Range(Ce11s(3,3),Ce11s(ice1しtum,3)))
End−If
納* ェ定終了*舳
Data Out0& 。
Labe1BarFront.Width=0
Bu批。nStart.Caption= I終了
DoEvents
MsgBox 測定終了しました ,vbOKOn1ポ測定終了 Labe1_DataName2.Caption=
Bu枇。nStart,Cap七ion= 測定 ButtonStart.EnabIed=True Button0拙set.Enab1ed=Tme ButtonC1ose.Enab1ea=True ComboBox1.Enab1ed=True End Sub
1********井去****************去
その他のサブルーチン
1*****************辛*去去***井**
*舳 d圧増幅度の変更*舳 Privaもe Sub ComboBox1_ChangeO
IfComboBoxOK Then
IfComboBox1.ListIndex=0Then Av:31
MsgBox( 基板の増幅度を31倍にしてください ) E1Se
Av=301
MsgBox( 基板の増幅度を301倍にしてください ) End If
End If End Sub
舳*プログラム終了時の処理榊 Private Sub UserForm TerminateO Data Out0&
End Sub
榊 vログラム起動時の処理*舳
・14一
Private Sub UserForm Initia1izeO ui0畳nd
uio_out1,14,0 uio_out0,0,0 uio_out1,15,0 uio_out1,10,0 ui0_0ut1,2,0 ui0_0ut1,10,0
ComboBoxOK二Fa1se
ComboBox1.Ad−dI七em ComboBox1.Ad−dItem ComboBox1.ListIndex=0
ComboBoxOK=Tme
V㏄=5 Vref2=2.5 Rser=10
If ComboBox1.ListIndex:0Then Av=31
E1Se Ay=301 End If
DeωataName= サンプル
DefDataNum=1
LabeしVmin.Caption= 0V
LabeしVmax.Caption=Format(V㏄)& V
Labe1BarFront1Wi砒h=O
ActiveSheet.Range( A1 ).Activate End Su1〕
榊ポート0へ電圧データ(0・255)を出力舳*
Private Sub Data_0ut(ByVa1OutDatAs Long)
uio_out0,0utDat,0
uio_out1,11,0 uio_out1,10,0 End Sub
榊 │ート0から電圧データ(0・255)を読み込む榊 Private Sub Data_Read(ByRefInpDatAs Byte)
ui0_out0,255,0 uio_out1,8,O uio_inp InpDat,0,0 uio_out1,10,0 End Sub
舳*@「閉じる」ボタン舳*
Private Sub Bu枇。nC1ose C1ickO
Un1oad UserForm1 End Sub
*舳 Oラフのその他の設定舳*
Private Sub OtherGraphParametersO WithActiveChart.Axes(x1Category)
.MimrUnitIsAuto=True .MajorUnitIsAuto二 ue .Crosses=x1Automatic .ReverseP1otOrd−er=Fa1se .Sca1eType=x1Linear .Disp1ayUnit=x1None End With
W1thAct1veChartAxes(x1Va1ue)
.MinorUnitIsAuto= ue .MajorUnitIsAuto二True .Crosses=xlAutomatic .ReverseP1otOraer=Fa1se
一16・