やりたいことから始める 赤外線エアコンIoT (3/5)
第3章:赤外線送信の仕組み — IR LED とトランジスタの選定と抵抗計算
1. 送信に必要なもの
受信した信号を再現するには、同じように赤外線 LED を 38kHz で点滅させる必要があります。ここで考えるべきは:
- 赤外線 LED:940nm 帯のものが一般的。型番が分かっていれば極性や定格が確定できる。
- 電流の ON/OFF スイッチ:Pico の GPIO から直接大電流を流す設計にはしない。GPIO は「指令」を出すだけに留め、LED 電流は別の経路(電源)から流す。
- 電流制限:LED に抵抗なしで電源をつなぐと壊れる可能性がある。
2. なぜトランジスタが必要か
Pico の GPIO は最大でも数 mA 程度しか出力できません。しかし IR LED はある程度の電流(今回は初期 10mA 級から試す)を流した方が遠くまで届きます。このギャップを埋めるのがトランジスタです。NPN トランジスタを「電子スイッチ」として使い、GPIO が HIGH の時だけ LED に電流を流します。
3. データシートを確認するとどうなっているか
3-1. IR LED(OSI5LA5A33A-B)
- 波長:940nm(赤外線リモコン用標準帯域)
- 順電圧(Vf):約 1.6V(典型値)
- DC 順電流最大定格:100mA
- パルス順電流最大定格:1,000mA(条件:パルス幅 10ms 以下、デューティ比 1/10 以下)
- 放射強度:100mW/sr
- 半減角:30°
- Pin 配置:Pin 1 = Anode(アノード)、Pin 2 = Cathode(カソード)
データシートを確認すると、極性と定格が確定しました。ただし「DC 最大 100mA」は絶対最大定格であり、連続で 100mA 流してよいという意味ではありません。パルス駆動の条件付きで 1,000mA まで許容されますが、今回は安全側から始めます。
3-2. NPN トランジスタ(BC337-40BU)
- 型式:NPN トランジスタ
- コレクタ・エミッタ間電圧(VCEO):45V
- 最大コレクタ電流(IC):800mA
- パッケージ:TO-92
- 直流電流増幅率(hFE):250〜630(BC337-40 グレード)
- Pin 配置(平らな面を手前、足を下に):左から Pin 1=Collector、Pin 2=Base、Pin 3=Emitter
データシートを確認すると、800mA の余裕があり、今回の約 10mA 級の IR LED 駆動には圧倒的に十分であることが分かります。また、足順が明確に定義されているため、ブレッドボード上での向きを間違えにくいです。
理由:LED は型番確定で極性(1=Anode, 2=Cathode)と定格が分かる。トランジスタは GPIO 電流不足を補い、800mA 余裕あり。両方ともメーカー資料で足順が確定している。
4. 抵抗値を計算する
トランジスタの BASE(制御端子)と IR LED(出力端子)の両方に抵抗を入れます。値は「どれだけの電流を流したいか」から導きます。
4-1. BASE 抵抗(2kΩ)
BASE-EMITTER 間はダイオードに近い性質を持ち、約 0.7〜1.0V の電圧降下があります。GPIO から流れる電流を 1mA 程度に抑えたいと考えると:
Ib ≒ (3.3V - 0.7V) / 2000Ω ≒ 1.3mA
手元に 2kΩ の抵抗があったため、これを使用します。BC337-40BU の hFE は 250 以上なので、1.3mA のベース電流であればコレクタ電流は 300mA 以上の駆動能力があり、今回の用途には十分すぎます。
4-2. LED 電流制限抵抗(330Ω)
IR LED の順電圧を 1.6V、USB 給電時の VBUS を約 5V とすると、トランジスタの電圧降下を無視した上限寄りの概算は:
Iled ≒ (5V - 1.6V) / 330Ω ≒ 10.3mA
実際にはトランジスタの COLLECTOR-EMITTER 間にも少し電圧がかかるため、LED 電流はこれよりわずかに小さくなります。最初の動作確認では安全側の約 10mA 級から始めます。
| IR LED直列抵抗 | 上限寄りの概算電流※ | 今回の扱い |
|---|---|---|
| 330Ω | 約10.3mA | 最初に使用。安全側で送信確認する。 |
| 220Ω | 約15.5mA | 手元にあれば次の候補。330Ωで距離不足のときに検討する。 |
| 100Ω | 約34mA | 最初から使わない。LED定格だけでなくパルス幅・デューティ比・BC337-40BUの駆動条件を確認してから検討する。 |
※ VBUS=5V、LED 順電圧=1.6V、トランジスタの電圧降下を無視して計算した値。実際の電流は少し小さくなる。
100Ω にすると概算 34mA まで増えます。LED の連続/パルス定格、デューティ比、トランジスタの駆動条件を確認してから抵抗値を下げる。最初は安全側の 330Ω で動作確認。
5. 送信回路の全体図
図2:IR LED 送信回路。GPIO は「スイッチの指令」だけを出し、LED 電流は VBUS 側から流れる。
6. 38kHz 搬送波の生成実験
赤外線受信モジュールは単に IR LED を点灯しただけでは反応しにくい。赤外線リモコンでは数十 kHz の搬送波で高速点滅させる必要があります。Pico では PWM で 38kHz の搬送波を作れます。
from machine import Pin, PWM
from time import sleep_ms
pwm = PWM(Pin(18))
pwm.freq(38000)
pwm.duty_u16(32768) # 約50% duty
sleep_ms(1000)
pwm.duty_u16(0)
pwm.deinit()
この段階ではエアコンを動かす必要はありません。PL-IRM1838B で自分の送信を自分で受信して確認するか、スマートフォンのカメラで IR LED が点滅しているかを見る方法もあります(機種によって赤外線カットが強く見えないことがあるため、PL-IRM1838B での確認がより確実です)。