LED点灯回路

 ディジタル回路を構成する信号は HIGH と LOW の二つの状態のをとることができます。ここではこの二つの状態で小型LED(発光ダイオード)を点滅する回路を作成します。

  1. デジタル回路

     ここでは、UNO と接続してLED(Light Emitting Diode:発光ダイオード)を点灯する回路の原理と作成法を紹介します。ディジタル出力端子は一般にHIGHとLOWの二つの状態を持ちます。ここでの目的は、出力端子の状態でLEDを点滅する回路を作成し、実際にプログラムで点滅させることが目的です。
     出力端子 HIGH に設定すると 端子の電圧は CPUの電源電圧(UNOの場合5V(ボルト))になり、LOW に設定すると 電源のグランド(−側で通常 0V)の電圧になります。1本の端子から取り出すことのできる電流 は 、UNO の場合約20mA(単位アンペア)程度になります。

  2. 電圧、電流、抵抗

     LED は電流が流れると光ります。電流は水のような「流れるもの」と考えることができます。電圧は流れを作るための圧力と考えます。川の場合は高い場所から低い場所に重力による圧力差により流れます。
     電気の場合、発電所の作る電圧や電池の作る電圧を利用します。同じ電圧でも水路が細くなったり、水路の途中に障害物があると流れにくくなります。流れにくさを(水路の)抵抗と考え、この度合いを R で表します。電気回路では多くの場合、 電圧を V 、電流を I 抵抗を R とすると、次の関係が成立します。
          V = R * I ;オームの法則
    これは「オームの法則」と呼ばれますが、すべての回路で成り立つ関係ではありません。
     なお、電圧は絶対的な値ではなく、二つの端子間の電圧差を意味します。乾電池の場合、低い方の端子からみると高い方の電圧が1.5Vになります。低い方の電圧を0Vとすると高い方の電圧が1.5Vになります。0Vの電圧を基準電圧とか、グランド(GND)電圧とよびます。

  3. 感電しない?

     ディジタル回路の電圧これまで 5V 程度がよく利用されてきましたが、最近は 3.3V の部品が増えてきました。使用する電流は、組み込みのMPUで異なりますが数十mA程度です。乾電池の電圧は 1.5V ですから、5Vの場合3個、3.3Vの場合、2個を直列にすると目的の電圧になります。USB接続をすると、PCから 5Vで最大 500mA の電流を利用できます。電力にすると、5*0.5=2.5W「ワット」で、これは豆電球くらいの電力です。
     一般の家では、発電機の回転に合わせて、1秒間に 0 から 110V 程度に変化する交流を利用しています。100Vの線に直接触ると危険ですが、PCの中で電圧を下げ、交流を直流に直してUSBの端子に供給しています。
     30V くらいまでは、(傷のない手なら)触っても感電することはありません。傷のため皮膚が損傷していたり、舌でなめると10Vくらいでも感じますし、30V を超えると危険です。電圧が高くても電流の供給能力が低いときは、感じはしますが危険はありません。危険の度合いは 電圧*電流(これは電力エネルギーに相当します)によります。
     ここで利用する電圧は高くても10V程度ですから、大きな危険はありません。

  4. 電子部品(LEDと抵抗)

     LEDは電球のように高温にして発光するのでなく、半導体の内部で電気エネルギーを直接光エネルギーに変換する素子です(左図)。LED(発光ダイオード)には電流の流れる方向があり、長い方の端子に 高い(+) の電圧、短い方の端子に低い(0V) の電圧をかけます。
     LEDは 数V(赤色LEDの場合1.5Vで順方向降下電圧とよびます)程度の電圧をかけると電流が流れ、発光する半導体です。これ以下では、電流が流れません。したがって、乾電池1個の電圧では点灯できません。1.5V以上の電圧をかけると急に過大な電流が流れ、発熱して壊れてしまいます。そこで右図のように、抵抗(R)を通してLEDを接続します。左側の端子には 3〜5Vの電圧をかけます。
       
       LED(発光ダイオード)   LED 点灯回路

     LEDには1.5Vの(順方向降下)電圧がかかるようにすると、電源の電圧を V 、流れる電流を I 、抵抗の値を R とすると
          V = R * I + 1.5
    の関係があります。小型のLEDに流す電流を 10mA(0.01A) 、電圧を 5V とすると 抵抗値 R は
          R = (5-1.5)/0.01 = 350 オーム
    となります。小型のLED に連続して流すことができる電流は部品によりますが、最大で20mA程度です。
     抵抗には下のような部品を利用します。カラーのリボンが抵抗の値を示します。この抵抗は(限度をこえなければ)オームの法則に従います。抵抗の端子には方向性はありませんから、どちらの端子を + 側にしてもかまいません。LEDは1mA 程度の電流でも発光し、最大数十mAを流すことができますから、抵抗の値は、150Ωから数キロΩまでの範囲で自由に選べます。
     抵抗の値は、4本のカラーバンドの色で指定されています。詳細は付録(部品)を参照してください。
      
       抵抗
  5. 端子のモード設定

     UNO では 13個まで の端子をディジタル端子として利用できます。0 と 1 番の端子はUSBの通信用の端子として利用していますから、他の目的には利用しない方が無難です。ディジタル端子は 入力・出力 どちらでも利用できますから、出力として利用する場合次のような命令が必要です。
       pinMode(ピン番号,OUTPUT); //ピン番号は 2-15
     指定したピン番号の出力端子の値(状態)を設定するには次の関数を利用します。
      digitalWrite(ピン番号,HIGH)
       digitalWrite(ピン番号,LOW)

  6. ブレッドボードで配線

     ここではデジタル回路をブレッドボードを用いて構成します。ブレッドボードは「はんだ付け」などで、半永久的な回路を制作するのでなく、ピンに配線を差し込むことで回路を試作・実験する方法です。
     ここでは、サンハヤトが販売している「ユニバーサルシールド(UB-ARD01WH))」の上に小型ブレッドボード(秋月販売:ミニブレッドボード:BB-601)を貼りつけた、自前の「ブレッドボードシールド」を利用しています。なお、「xx シールド」は UNO ボードの上にコネクタで挿入するボードの一般名称です。
        
      ユニバーサルシールド       ブレッドボード     UNO+ユニバーサルボード+ブレッドボード
        

     ブレッドボードでは、縦方向の5個の穴は内部で接続されています(上の5個と下の5個の穴は分離されています)。縦方向の同じ列の穴に部品や線を差し込むことで、相互の接続が可能になります。

  7. 点滅回路の配線

     UNO の端子で LED を点滅させるには、二つの接続方法があります。一つは UNOの端子が HIGH のとき点灯させる接続(HIGH点灯方式)、他は LOW のとき点灯する接続方式です(LOW点灯方式)。左図で 左下の GND は 電源のGND端子(0V側)を意味します。左上が UNO の端子で、これが HIGH 状態になると、LED に電流が流れ点灯します。右図の上の5Vは 電源の+端子で、下が UNO の端子です。UNO の端子が LOW 状態になると LED が点灯します。
     
         HIGH点灯            LOW点灯

     前節の例では、D13 端子は 「HIGH 点灯」になっています。UNO の端子に直接小型の LED を接続する場合はどちらでも良いのですが、一般には 「LOW 点灯」の方が好まれますので、ここでは、LOW 点灯方式で接続します。

    ブレッドボードに LED と抵抗の回路を組み込みます。電源の+端子は、左下の黒のコネクタで右から4番(VCC:+5V)です。
    赤い線で VCC の端子とボードの適当な端子を接続します。
    その接続した同じ列に抵抗の片側を接続します。
    抵抗の他端は、溝をまたいで、上側の縦列に差し込みます。
    この縦列の別の穴に、LED の長い方の端子を接続します。
    LED の短い方の端子を別の列の穴に差し込みます。
    青い線で上の列の別の穴と UNO の 9 番端子を接続します。

       
       点滅回路(LOW点灯)                 Fritzing で描いたボード図

  8. 点滅プログラム

     点滅するプログラムは前回紹介したものとほぼ同じです。先頭の led=9 の数字のみが異なります。先頭の行の
     int led = 9;
    は、変数を定義しています。led は適当に設定できる名前で、先頭は英字です。 int は led が整数を記憶する変数であることを「宣言」します。= 9 は led の値を 9 に設定します。この値はLEDを接続する端子の番号になります。
    //9番端子のLEDを点滅
    
    int led = 9;
    
    // 初期設定
    void setup() {                
      // 端子のモード設定
      pinMode(led, OUTPUT);
      pinMode(sw,INPUT);     
    }
    
    // 繰り返し実行
    void loop() {
      digitalWrite(led, LOW);   // LED点灯
      delay(1000);               //1秒 待つ           
      digitalWrite(led, HIGH);    // LEDwp消す
      delay(1000);               // 1秒待つ
    }

     UNO のボードとPCをUSBで接続し、プログラムを入力後 UNO ボードに送りこみます。LEDが点滅すれば成功です。digitalWrite ( led, LOW); を実行すると、9番端子は LOW (電圧0)になります。これで、VCC>抵抗>LED>D9 の経路で電流が流れます。digitalWrite(led, HIGH); を実行すると、D9 の端子は VCC と同じ電圧になるので、電流が流れません。

  9. 発展

    1. HIGH点灯方式はダメなのですか?

       一般的には LOW 点灯の方が使いやすくなっています。トランジスタなどで大電流を流す場合は LOW 点灯が便利です(「電源・電力制御」の節参照)。
    2. もっと光の強いLED は使えませんか

       UNO の端子で直接制御するのは 1W くらいが限度です。大きな LED の制御をするには 電源・電力制御の章を参照してください。
    3. いろんな色がでるLEDはありませんか?

       オレンジ、黄色、緑、青、など各種の色やサイズのLEDが利用できます。また、赤、緑、青、の三種のLEDが同居した「フルカラーLED」をアナログ制御することで、多くの色を発色できます。「アナログ出力」の章を参照してください。

    4. UNOの端子には最大どれだけの電流を流すことができますか?

       マニュアルでは、1本の端子の最大電流は 40mA です。しかし、全体の電流は 200mA に制限されています。本体で使用する電流や、1度に使用する端子の数を考慮して、ここでは最大 20mA 程度としています。