• 検索結果がありません。

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=0Then

  Labe1BarFron七.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倍 E1Se

  DataName=. 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=0

Vグ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 If

  End 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・

関連したドキュメント