03-07-2020 05:59 PM
第6章 LEDの特性を調べてみよう
Arduinoのアナログ入力を3チャンネル使ってLEDの電圧電流特性を測定します(写真6-1)。測定データを理論式に当てはめて回帰曲線を求めます。少し難しい式ですが、データ解析の例として参考になると思います。
[キーワード] X-Yグラフ、1D配列ソート、対数変換、直線回帰、
6.1 LEDの電圧電流特性の実験回路の組み立て
LEDを点灯する時には電流が流れ過ぎないように電流制限抵抗を入れる必要があります。LEDは電圧が順方向電圧(Vf)を超えると指数関数的に電流が増加し光量が大きく変化します。電圧で光量を調整するよりも、抵抗を入れて回路に流れる電流を調整した方が簡単なのです。この章では指数関数で急激に電流が増加する様子を実験的に見てみようと思います。
実験にはLED、100Ωの固定抵抗、10kΩの可変抵抗、ワイヤーが6本、ブレッドボードとArduino UNOが必要です。ArduinoをPCのUSBポートから外して、図6-1のように配線してください。
Arduinoの5Vピンから10kΩの可変抵抗と100Ωの固定抵抗とLEDを直列に配線し、グラウンドに接続します。可変抵抗は3本足です。つまみを左いっぱいに回してつまみの矢印の先が左下になるように置いた時に、上から見て左端を5V、中央を100Ωの固定抵抗に接続してください。LEDは極性があるので足が短い方をグラウンドに接続してください。
電流は5V→可変抵抗(0kΩ~10kΩ)→100Ω→LED→グラウンドへと流れます。可変抵抗の値を変えるとLEDに加わる電圧と流れる電流が変化します。その電流と電圧をArduinoのアナログ入力で測定するのです。
100Ωの固定抵抗とLEDの接続ポイントからワイヤーを出してA0に接続します。これはLEDに加わる電圧です。10kΩの可変抵抗と100Ωの固定抵抗の接続ポイントからワイヤーを出してA1に接続します。A1の電圧からA0の電圧を引くと100Ωの抵抗に加わる電圧です。オームの法則(I=V/R)で回路を流れる電流、つまりLEDを流れる電流がわかります。5V電源が安定していることを見るために、5V電源と10kΩの可変抵抗の接続ポイントからワイヤーを出してA2に接続します。
それではもう一度配線を確認して、OKならばArduinoをPCのUSBポートに接続してください。USB端子に接続するとLEDは光り始め、可変抵抗を右に回すと暗くなります。これで実験回路の準備ができました。
6.2 LEDの電圧と電流の測定
Arduinoのアナログ入力を3チャンネル使用してLINXでLEDの電圧電流特性を測定します。
NI エグザンプルファインダ(図6-2)で”LINX - Analog Read N Channels.vi”を開き、プログラムを作成しているフォルダに保存します。シリアルポートとAI Channel(s)配列の要素にアナログ入力の番号を入れます。A0からA2ですから0、1、2です。実行ボタンを押して可変抵抗を右左に回すと波形チャート(Waveform Chart)”Analog Data”の表示が変化します(図6-3)。A0が2V付近、A1は可変抵抗の位置によって2V付近から5Vの間、A2は5Vです。
0V付近にもデータが表示されていることに気がついた方もいるかもしれません。”Plot Legend”を下に引き伸ばすと”Plot 3”です。図6-4のように配列”AI Channel(s)”の枠を下に広げてみても入力されている要素は3個で、3チャンネルしか設定していません。ブロックダイアグラム(図6-5)の”Analog Read.vi”から出力されている配列の要素数を調べてみましょう(図6-6)。実行ボタンを押して”size(s)”表示器を見ると期待通り3です。”Analog Read.vi”と波形チャート間にある”Array To Cluster”をダブルクリックすると”Cluster Size”と言う小さなウィンドウ(図6-7)が表示されます。3を入力してOKボタンを押してください。これで波形チャートの4本目の線は消えたと思います。波形チャートに複数のプロットを表示するにはクラスターにまとめて接続する必要があることもヘルプ画面で確認してください。
"LINX - Analog Read N Channels.vi"を"LED VI Curve.vi"として別名で保存します。”LINX - Analog Read N Channels.vi”の説明書きがフロントパネルに残っています。不要になりましたので削除したいのですが、”lock”されているので削除できません。Toolsパレットで矢印ツール(Position/Size/Selectツール)で説明書きの周辺を左クリックしながらドラッグすると、テキストを選択することができます。ツールバーの右端のアイコンの”Reorder”ツールで”unlock”を選択すると削除できるようになります(図6-8)。
"Analog Read.vi"から出力された配列から"Index Array"関数を使って要素0、要素1、要素2を取り出します。要素0がLEDにかかる電圧です。要素1から要素0を引いた値が100Ωの抵抗にかかる電圧で、抵抗値100Ωで割ればこの回路を流れる電流となります(図6-9)。こうしてLEDにかかる電圧と流れる電流を求めることができます。LEDにかかる電圧と流れる電流に数値表示器を接続して、電圧が高くなり電流が大きくなると明るく光り、電圧が低くなり電流が小さくなると暗くなることを確認してください(図6-10)。
6.3 LEDの電圧電流特性曲線の表示プログラム
横軸を電圧、縦軸を電流としてX-Yグラフに表示してみましょう。データ追加ボタンが押されると測定した電圧と電流がそれぞれの配列に追加され、電圧の配列と電流の配列をX-Yグラフに表示します。
もう自分でプログラムを作ることができるかもしれませんが、プログラムフォルダの”6_LED VI Curve.vi"を開いて実行してください。可変抵抗で電圧と電流を変えて”データ追加ボタン”を押してください。どんどんデータを追加していくと右肩上がりの曲線が見えてきます(図6-11)。まばらなところをできるだけ埋めるように可変抵抗と”データ追加”ボタンを操作してください。”回帰分析”というボタンについては後ほど詳しく説明します。
ブロックダイアグラムを開いて予想していたようなプログラムになっていたかどうか見てください(図6-12)。
”データ追加”ボタンが押された時に動作するケースストラクチャに注目してください。ここでは電圧が低いデータから高いデータに並べ換えています。電圧と電流のデータをペアにした状態で処理しないと意味がありませんので、少し込み入っています。電圧、電流ともに新しいデータを配列に追加した後で、電圧と電流のクラスターを要素にした1次元配列を作ります。”Sort 1D Array”でクラスターの1次元配列をソートします。クラスターの要素の0番をキーにしてソートされますので、電圧をクラスター要素0番にしていることに注意してください。ソートした後で、クラスターを分解して電圧、電流の配列に戻します。”Sort 2D Array”関数も使えますので気に入った方法を使ってください。
X-Yグラフへの表示はXの1次元配列とYの1次元配列をクラスタにしてX-Yグラフに入力します。複数のプロットを表示する時には配列にしてからX-Yグラフに入力します。
6.4 LEDのV-I特性データの回帰分析
電圧を変えながらデータを追加すると、ばらつきはありますが、電圧が高くなるにつれて電流増えていく様子がよくわかります。LEDはLight Emitting Diodeの頭文字を並べたもので、ダイオードの一種です。ダイオードのPN接合の電圧電流特性は図6-13の理論式で表すことができるとのことです。流れる電流が大きくなると内部抵抗の影響も考える必要が出てきて図6-14の関係になります。式で使っている記号は図6-15にまとめました。幾つかのLEDのデータを比較するときに理論式に当てはめてパラメータの値で比較すると、違いが分かりやすくなる場合があります。
“回帰分析”ボタンを押すとX-Yグラフ上に回帰曲線が表示されます(図6-16)。手近にあった3種類のLEDで試してみましたが、どれも大きく外れることなく回帰できていました。
回帰分析を行っている”6_sub model fitting.vi”は図6-17です。図6-14の式は少し手ごわいため2段階で回帰しています。X-Yグラフが3個並んでいますが、それぞれX軸Y軸が異なりますので注意してみてください。左端のグラフはLEDの小電流部分のデータで内部抵抗が0と考えて回帰しています。電流の自然対数をX軸にして対応する電圧をプロットすると小電流部分は直線となります。直線回帰でnとI0を求めることができますので、この関数を使って電圧の残差を求めます。残差部分が内部抵抗の影響と考えて、中央のグラフで電流をX軸、残差の電圧値をY軸にしてプロットします。直線回帰で内部抵抗rを求めることができます。図6-14の関係式にn、I0、rを代入して回帰曲線を右端のグラフにプロットします。ブロックダイアグラム図6-18は込み入ったように見えますが、対数変換、小電流部分の切り出し、直線回帰、X軸、Y軸にどのデータを入れているかを見れば読めると思います。