Raspberry Pi PicoでLEDを点灯させる①(計算付き)
いわゆるLチカをいくつかの回路で試してみる。LEDを点滅させるのが最終目標ならば、ネットの情報を鵜呑みにすれば良いが、自分で回路を組むのなら抵抗の計算なども出来ななくてはならない。
前提条件
Raspberry Pi Picoについて
- GPIOの電圧は3.3V、最大電流はデフォルトで4mA
- 3V3なら電圧3.3Vで最大電流300mAまで供給可能。ただしもちろんon/off制御は不可
LEDについて
今回使用したLEDは順電圧
LEDの基本
- アノードを高電位側、カソードを低電位側に接続する(電流がアルファベット順に、a→cへ流れる と覚えると良い)
- 砲弾内部の接合部の大きい方がカソードである。足を切ってしまっても、一応識別はできる
LEDの回路記号と一般的な外見
GPIOから電源を供給する場合
GPIO16にLEDを接続して点灯させてみる[1]。LED側の都合で3.3Vをそのまま掛けるわけにはいかないし、GPIO側の都合で30mA流すわけにもいかない。そこで直列に抵抗を挟むことで、電圧と電流を調整する。LED側はオームの法則には従わないので、きっちりと計算するのは困難である。しかし一般的に
回路図
計算方法
LEDに掛ける電圧を制御するのではなく、流す電流を制御するという考え方が良い。以下の手順で概算する。
- LEDに流す電流
を決めるI - 上記回路において、LEDには
が掛かっていると仮定するV_F - するとオームの法則とキルヒホッフの法則の法則より、抵抗
は以下の式を満たすR
ここで
実装
ブレッドボード上への実装
プログラム
from machine import Pin # GPIOを操作する「Pin」を使えるように
from time import sleep # 処理を一時中断する「sleep」を使えるように
led_pin = Pin(16, Pin.OUT) # GPIO16を出力モードに
led_on = False
while True:
led_pin.value(led_on) # LEDの点灯
led_on = not led_on
sleep(1) # 1秒停止(点滅の速さ調整)
トランジスタを使う場合
4mA以上の電流を流したい場合は、GPIOからの給電では足りない。ここでは20mAほど流したい場合を考える。20mAなら3V3から余裕で給電できので、GPIOとトランジスタの組み合わせて点滅の制御をする。ここではNPN型のバイポーラ・ジャンクション・トランジスタ(BJT)(普通のトランジスタ)を使う[3]。
NPN型のトランジスタの基本
NPN型のトランジスタの特徴は以下の通りである。
- 通常はコレクタ(C)からエミッタ(E)へは電流が流れない。
- ベース(B)に電流
が流れると、CからEへ大きな電流I_B が流せるようになる。I_C -
を満たすh_{EF} I_B<I_C を直線電流増幅率といい、トランジスタごとに決まっている。h_{FE} - ベースーエミッタ間の電圧
は0.7V程度である。V_{BE}
トランジスタの回路記号と一般的な外見
回路記号と実際の端子の出方が違うので、注意が必要である。さらにベースとエミッタが写真とは逆になっているものあるそうなので、データシートで確認すると良いだろう。
回路図
下図の
回路図
計算方法
今回は
さて
実装
プログラムを変える必要はない。
ブレッドボード上への実装
Discussion