開発中正式リリース前です。機能とデータは予告なく変わることがあります。

自動挿入回路 — コードになかった部品がなぜ生まれたのか

デカップリング・プルアップ・フライバック・レベルシフター・保護素子。難しいものは黙って埋めますが、なぜ入れたのかは必ず説明します。

7 分で読める更新 2026年9月8日

変換結果の画面には「自動で追加された回路(N 個)」の一覧があります。コードにはなかったコンデンサ、抵抗、ダイオードがネットリストと BOM に入っています。ユーザーが知らなくてもかまいませんが、知りたいときに知ることができなければなりません。教育製品だからです。このガイドではその一覧の各項目がなぜ必要なのかを説明します。

自動で追加された回路(7 個)

┌ C1~C4  デカップリングコンデンサ 0.1µF                      [なぜ?]
│        IC 電源ピンのそばで瞬間的な電流変動を吸収します。
│        ないと間欠的なリセット・誤動作が発生します。
│
┌ D1     フライバックダイオード 1N4148(リレー K1)          [なぜ?]
│        リレーコイルがオフになるときに発生する逆起電力を逃がします。
│        ないとトランジスタが破壊されます。
│
┌ U3     レベルシフター(3.3V ↔ 5V、I²C)                   [なぜ?]
│        ESP32 は 3.3V、選択されたセンサーは 5V ロジックです。
│        直結すると ESP32 の GPIO が損傷します。

デカップリングコンデンサ

IC はスイッチングのたびに電源ピンからごく短い瞬間に大きな電流を引き込みます。電源線はインダクタンスを持つためその瞬間に電圧が揺れ、ひどい場合は MCU がブラウンアウトリセットを起こします。電源ピンのすぐそばの 0.1 µF セラミックコンデンサがその瞬間の電流を肩代わりして供給します。ブレッドボードでは開発ボードの中にすでにあったので、見えていなかっただけです。

  • ルール: IC 電源ピンごとに 0.1 µF を 1 個。
  • ESP32 モジュールの 3V3 にはさらに 10 µF のバルクコンデンサ。Wi-Fi 送信の瞬間に数百 mA のパルス電流が流れるためです。
  • レギュレーターの入出力にはデータシートの推奨値(AMS1117: 入力 10 µF、出力 10 µF + 100 nF)。

プルアップ抵抗

オープンドレインの信号線は自分で HIGH を作れません。誰かが電源側へ引き上げる必要があり、誰も引き上げなければ線は浮いてノイズに反応します。

  • I²C SDA / SCL — バスごとにちょうど 1 セット(2.2 k–10 k)。モジュールにすでにプルアップが実装されていれば重複して入れません。合計抵抗が低すぎると MCU が LOW に引き下げられないため、ERC がバスごとの合計を計算します。
  • DS18B20 1-Wire DQ — 4.7 kΩ。データシートの値です。
  • ESP32 EN — 10 kΩ プルアップ + 0.1 µF。電源が安定したあとにリセットが解除されるよう RC 遅延を作ります。ないと起動が不安定になります。
  • ATmega328P RESET — 10 kΩ プルアップ。ないとノイズで不意にリセットされます。

フライバックダイオード

リレーコイル、DC モーター、ソレノイドは誘導性負荷です。電流を断つ瞬間、コイルは流れていた電流を維持しようとして数十~数百 V の逆起電力を生み出します。その電圧はコイルを駆動していたトランジスタや GPIO にそのまま向かいます。コイルと並列に逆向きに付けたダイオード(1N4148、1N4007)がその電流に戻り道を作ります。リレーモジュールを使っていた方は、モジュールの中にすでにありました。L3 でリレーを基板に直接載せる場合は自分で入れる必要があり、それを ibouPCB が入れます。

レベルシフターと分圧器

ESP32・Pico・Raspberry Pi は 3.3 V ロジックで、HC-SR04 や多くの 5 V Arduino 用モジュールは 5 V ロジックです。5 V 出力を 3.3 V 入力に直結すると GPIO が損傷します — すぐにではなくても、数週間後に。

  • 単方向 5 V → 3.3 V 入力(HC-SR04 ECHO など): 抵抗分圧器 2 個。最も安価で十分です。
  • 双方向バス(I²C): MOSFET ベースの双方向レベルシフター。
  • 3.3 V → 5 V 出力(WS2812B データなど): 74AHCT125 のようなバッファ。3.3 V 信号を 5 V の NeoPixel が読めないケースは実際によくあります。

保護素子とその他

部品いつなぜ
直列抵抗LED の直結GPIO 電流の上限内で LED 電流を決めます
逆電圧保護ダイオード / P-MOSFET外部電源入力があるとき(L3)電源を逆に挿してもボードが生き残ります
TVS ダイオード外部に出るコネクタ(L3、提案)人の手の静電気(数 kV)が MCU に入らないようにします
ドライバトランジスタ(MOSFET)GPIO 電流の上限を超える負荷AVR の GPIO はピンあたり 40 mA、リレーコイルは 70 mA 以上です
テストポイントL3組立後に電源・シリアルをプローブで確認する場所

自動挿入と提案の違い

答えが 1 つしかないものは自動で入れます(デカップリング、プルアップ、フライバック、分圧器)。選択が必要なものは提案のみ行い、決定はユーザーに委ねます — より大きなレギュレーター、アドレスを変更できる別のモジュール、ピンの再割り当て。どちらの場合も一覧に根拠(ゴールデンパターンの出典または ERC ルール)が付き、ネットリスト・BOM・explain.json で確認できます。

レベルによる違い

L2 Shield / HAT では開発ボードがすでに電源とリセットを持っているため、プルアップと直列抵抗程度しか追加されません。L3 モジュールオンボードでは開発ボードがなくなるため、電源ツリー(レギュレーター + 入出力コンデンサ)、モジュールのサポート回路(EN・IO0)、デカップリング、保護素子、テストポイントがすべて入ります。自動で追加される部品数が L3 ではるかに多い理由です。