📦 ソースコード: この記事で紹介しているソースコードは GitHub で公開しています。
記事一覧
- 【第1回:概要と要件定義】廃盤製品の代替開発|LAN対応24ch入力×8chリレー制御装置を作る
- 【第2回】Raspberry Pi Pico × ENC28J60 によるLAN制御実装|LAN対応24ch入力×8chリレー制御装置を作る
- 【第3回】24ch接点入力回路、12〜24V対応、フォトカプラ絶縁|LAN対応24ch入力×8chリレー制御装置を作る
はじめに
第2回では
- Raspberry Pi Pico
- ENC28J60
- UDP通信
を使って、LAN通信による制御の基本部分を実装しました。
今回はその続きとして、 24点の接点入力回路 について解説します。
この装置は、もともとお客様が使用していた 「24入力・8リレー出力の制御装置」 の代替として開発しています。
PLCのような用途で使用されており、
- センサー
- スイッチ
- 外部機器
などの接点入力を監視し、条件に応じてリレーを制御する装置です。
システム全体構成
今回の装置は、24点の接点入力を監視し、その入力状態に応じて8点のリレー出力を制御する装置 です。

LANは入力信号そのものを伝送するためのものではなく、
「どの入力がONになったら、どのリレーをON/OFFするか」
という動作ロジックをブラウザから設定するために使用します。
システムの基本構成は次の通りです。
外部接点入力(24点) ↓フォトカプラ絶縁入力回路 ↓24ch IO拡張IC(TCA6424A) ↓I2C通信 ↓Raspberry Pi Pico ↓設定された条件判定 ↓8chリレー出力
さらに、LANを含めた全体の流れは次のようになります。
PCブラウザ ↓LAN通信(ENC28J60) ↓Raspberry Pi Pico ↓入力条件とリレー出力の組み合わせ設定外部接点入力(24点) ↓フォトカプラ絶縁回路 ↓TCA6424A ↓Picoが入力状態を監視 ↓設定された条件に従いリレー出力(8点)
つまりこの装置は
24入力 → 条件判定 → 8リレー出力
という制御装置であり、
LANは設定インターフェースとして利用しています。
電源設計(12〜24V対応)
今回の入力回路は 12V〜24V電源で動作 する設計にしました。
当初は12V専用設計として回路図を作成していましたが、
制御盤では24V電源が使われることも多いため、 12〜24Vの広範囲入力に対応する仕様 に変更しました。

電源回路
入力電源は 12〜24V です。
この電圧を XL1509-5.0E1 という降圧ICを使って 5V に変換しています。
XL1509はスイッチングレギュレータで、
- 最大40V入力
- 最大2A出力
- 部品点数が少ない
- コストが低い
という特徴があります。
今回の装置では
- Raspberry Pi Pico
- ENC28J60
- IO拡張IC
- リレー回路
をまとめて駆動する必要があるため、
リニアレギュレータではなくスイッチング電源を採用しました。
電源回路の構成
本装置は 12〜24V電源で動作するため、まずこの電圧を基板上で処理する必要があります。
電源回路の基本構成は次の通りです。
DC入力 ↓逆接保護ダイオード(SS34) ↓VIN_RAW ↓XL1509降圧レギュレータ ↓5V生成
今回の回路では、 XL1509によるスイッチング電源 を採用しています。
入力側(VIN_RAW)
まず電源入力部分です。
DCジャックから入力された電源は、最初に ショットキーダイオード SS34 を通過します。
これは 逆接保護のためです。
電源の極性を誤って接続した場合でも、回路が破損しないようにする目的があります。
SS34を通過した電源は VIN_RAW というネット名で基板内に供給されます。
この VIN_RAW は
- XL1509の入力電源
- 24ch入力回路のドライ接点
の両方に使用されます。
入力側のコンデンサ(C9 / C10)
SS34の後には、次のコンデンサを配置しています。
| 部品 | 役割 |
|---|---|
| C9(470µF) | 電源平滑(低周波ノイズ吸収) |
| C10(1µF) | 高周波ノイズ吸収 |
スイッチング電源では電流の変動が大きいため、入力側にもある程度の容量のコンデンサを置いておくと電源が安定します。
特にC9のような大容量電解コンデンサは、
- 電源ケーブルのインダクタンス
- 瞬間的な電流変動
を吸収する役割があります。
XL1509による降圧
VIN_RAWは XL1509-5.0E1 に入力されます。
XL1509は スイッチング降圧レギュレータ(Buckコンバータ) です。
入力された12〜24Vを 5V へ変換します。
出力側のスイッチング回路
XL1509の OUTPUTピン から出力された電流は、次の回路へ流れます。
XL1509 OUTPUT ↓インダクタ L2(68µH) ↓出力コンデンサ群 ↓5Vライン
また、ショットキーダイオード D2(1N5820G) がGNDに接続されています。
これは フリーホイールダイオード と呼ばれる部品です。
なぜインダクタが必要なのか
スイッチング電源は、内部で
ONOFFONOFF
と高速にスイッチングして電圧を変換しています。
そのため、OUTPUTから出てくる電流は パルス状の電流 になります。
ここで インダクタ L2 を入れることで、
パルス電流 → なめらかな電流
に変換されます。
インダクタは電流変化を抑える性質があるため、 スイッチング電源では必ず使われる重要な部品です。
フリーホイールダイオードの役割
スイッチング電源では、IC内部のスイッチがOFFになる瞬間に
インダクタの電流が流れ続けようとします。
その電流の逃げ道として使われるのが D2(ショットキーダイオード) です。
このダイオードがないと、インダクタの逆起電力によってICが破損する可能性があります。
出力側コンデンサ
インダクタの後には複数のコンデンサを配置しています。
| 部品 | 役割 |
|---|---|
| C12(180µF) | 出力平滑 |
| C11(100nF) | 高周波ノイズ吸収 |
| C64(10µF) | 電源安定化 |
スイッチング電源では、 容量の異なるコンデンサを組み合わせて使う ことが一般的です。
理由は次の通りです。
- 大容量電解コンデンサ → 低周波ノイズ除去
- 小容量セラミックコンデンサ → 高周波ノイズ除去
この組み合わせにより、安定した5V電源を作ることができます。
FB(フィードバック)の位置
XL1509には FB(Feedback) という端子があります。
今回の回路では インダクタの後(5Vライン) からFBへ接続しています。
これは 出力電圧を正確に制御するためです。
もしFBをインダクタの前に接続すると、インダクタや配線による電圧降下が補償されません。
その結果、 ICが認識する電圧と実際の5Vライン にズレが発生してしまいます。
そこで 実際に使われる5Vラインの電圧を直接FBで監視 することで、 常に正確な5V になるよう制御しています。
これはスイッチング電源のリファレンス回路でも一般的に採用されている接続方法です。
この5Vが供給される回路
生成された5V電源は次の回路へ供給されます。
- Raspberry Pi Pico
- リレー回路
- 入力回路
この装置のすべてのデジタル回路は、この5V電源をベースに動作します。
接点入力回路
次に、接点入力回路です。
入力端子は VIN_RAW として外部に出しています。
ここには
- スイッチ
- リレー接点
- センサー出力
などの ドライ接点 を接続します。

フォトカプラによる絶縁
入力はフォトカプラ LTV-817 を通して基板内部へ取り込まれます。
フォトカプラを使う理由は次の通りです。
- 外部回路との絶縁
- ノイズ対策
- GNDループ防止
- マイコン保護
産業機器ではほぼ標準的な構成です。
サージ対策
入力端子には SMBJ33CA というTVSダイオードを入れています。
これは
- 雷サージ
- 誘導ノイズ
- 瞬間過電圧
から回路を保護するための部品です。
制御盤などの環境では、思った以上にノイズが多いため、このような保護回路は非常に重要です。
24点入力の実現(TCA6424A)
24点入力を実現するために使用しているのが TCA6424A というIOエクスパンダです。
このICの特徴は
- 24bit GPIO
- I2C通信
- 3.3V動作
という点です。
つまり
I2C(2本)↓24点入力
を実現できます。
GPIOが限られているマイコンでは、このようなIO拡張ICが非常に便利です。

I2C接続
TCA6424Aは SCL、SDA の2本の信号線で通信します。
今回の接続は次の通りです。
| Pico | TCA6424A |
|---|---|
| GP9 | SCL |
| GP8 | SDA |
I2Cのプルアップ抵抗には 4.7kΩ を使用しています。
Picoのピン割り当て
今回の装置では、PicoのGPIOを次のように使用しています。
| GPIO | 用途 |
|---|---|
| GP0〜GP7 | リレー出力 |
| GP8 | I2C SDA |
| GP9 | I2C SCL |
| GP10 | TCA制御 |
| GP11 | TCA制御 |
| GP16 | SPI MISO |
| GP17 | SPI CS |
| GP18 | SPI SCK |
| GP19 | SPI MOSI |
| GP20 | リセットボタン |
Raspberry Pi PicoはGPIOが豊富なため、
- LAN通信
- IO拡張
- リレー制御
を同時に実装することができます。
リレー出力回路
出力には 5Vリレー(SRD-05VDC-SL-C) を使用しています。
ただし、Raspberry Pi Pico のGPIOから直接リレーコイルを駆動することはできません。 そのため、この回路では次の部品を組み合わせた構成にしています。
- フォトカプラ
- トランジスタ
- フライバックダイオード
この回路の目的は次の2つです。
- マイコンとリレー駆動回路を電気的に絶縁する
- GPIO信号でリレーコイルを安全に駆動する
この回路は大きく分けて 3つの電流経路で構成されています。
① 制御側(Pico → フォトカプラ)
まず、Picoからフォトカプラを点灯させる回路です。
Pico GPIO↓電流制限抵抗(1kΩ)↓フォトカプラ入力LED↓GND
PicoのGPIOがHIGHになると、フォトカプラ内部のLEDに電流が流れます。 これによりフォトカプラ内部のフォトトランジスタがONになります。

② リレー駆動側(電源 → リレー)
フォトカプラがONになると、リレー駆動側の回路が動作します。
+5V↓PNPトランジスタ(S8550)↓リレーコイル↓GND
この経路に電流が流れることで、リレーがONになります。
リレーを駆動する電源は、5V電源ラインから供給されています。 この5Vはショットキーダイオード SS26 を通過した後、2つに分岐します。
- 動作確認用LED回路
- リレー駆動回路
動作確認用LEDは、装置に5V電源が供給されていることを確認するためのものです。

逆起電力対策
リレーコイルは誘導性負荷のため、電流を遮断した瞬間に 逆起電力 が発生します。
この逆起電力を吸収するために、リレーコイルと並列にダイオードを入れています。
+5V↓トランジスタ↓リレーコイル↓GND↑ダイオード
このダイオードは フライバックダイオード と呼ばれ、
- トランジスタの破損防止
- 回路ノイズの低減
という役割を持っています。
リレー駆動回路では、トランジスタとフライバックダイオードを組み合わせる構成が一般的です。
③ トランジスタ制御の経路
フォトカプラは、PNPトランジスタのベースをGND側へ引き込む役割をしています。
+5V↓PNPトランジスタ↓ベース抵抗↓フォトカプラ出力↓GND
フォトカプラがONになるとベース電位が下がり、PNPトランジスタがONになります。 その結果、リレーコイルに電流が流れます。
また、この経路には リレーの動作確認用のLED を入れています。
+5V↓抵抗(2.2kΩ)↓LED↓フォトカプラ出力↓GND
フォトカプラがONになると、このLEDにも電流が流れて点灯します。
このLEDは リレー出力が動作していることを視覚的に確認するためのものです。 基板の動作確認やデバッグの際に、リレー出力の状態を簡単に確認することができます。

動作をまとめると
動作の流れは次のようになります。
- PicoのGPIOがHIGHになる
- フォトカプラLEDが点灯する
- フォトカプラのトランジスタがONになる
- PNPトランジスタのベース電位が下がる
- PNPトランジスタがONになる
- +5Vからリレーコイルへ電流が流れる
- リレーが動作する
今回の基板設計のポイント
今回の設計では、次の点を意識しました。
① 産業用途を想定
- 24V入力対応
- フォトカプラ絶縁
- サージ対策
② IO拡張
- I2Cで24入力
- PicoのGPIO節約
③ LAN設定
- ブラウザから条件設定
- 現場でロジック変更可能
PLCのような使い方ができる装置を 低コストで実現することを目標にしています。
まとめ
今回は
24ch接点入力回路
について解説しました。
今回のポイントは次の通りです。
- 12〜24V入力対応
- XL1509による5V生成
- フォトカプラ絶縁
- TVSによるサージ対策
- TCA6424Aによる24入力
- I2C通信でPicoに接続
これで
- LAN通信
- 24入力
- 8リレー出力
という制御装置の基本機能が揃いました。