Skip to main content

KiCADで作る反転増幅アンプ

Overview​

反転増幅アンプの設計を通してKiCADの操作を習得しようというページ.

自分の手を動かして実際に触ってみるのが習得の一番の近道

  1. 反転増幅回路の回路図を描く.
  2. PCBをデザインする.
  3. (Optional) デザインしたPCBをRm131にある基板加工機(MITS Elevenlab)を使って作成してみる.

今回作る反転増幅回路の回路図と最終的に作る基板のCADイメージはこんな感じ.

回路図

PCBレイアウトエディタのスクリーンショット

作成する基板の3D CADイメージ

製作した回路

完成形のCADファイル:

準備​

KiCADのインストール​

まずこれがないと始まらない.

https://www.kicad.org/download/ から自分の環境にあったものをダウンロードしてインストールする. ここでつまづくことはないはず.

必要な部品​

今回の回路の作成に必要な部品は次. 秋月電子のリンクを貼っているので, 足りなければリンク先から購入可能.

その他​

KiCADに限らず, CADの操作では中ボタン(マウスホイールのクリック)を使うことが多いので, マウスがあった方がよい.

KiCADによる回路デザインの流れ

KiCADを使った回路デザインの流れはこんな感じ.

  1. プロジェクトの作成
  2. 回路図の作成
  3. (Optional) SPICEで回路シミュレーション
  4. PCBデザイン
  5. Gerber ファイル, Drill ファイルを出力して, MITS基板加工機で基板作成 or 発注

プロジェクトの作成

632a77438921cae1727478f5

KiCADを起動すると次のようなウインドウが出てくるので, 左側のメニューの Create new blank project をクリックする.

スクリーンショット 2022-09-14 15.26.26.png

適当なディレクトリに適当な名前でプロジェクトを作る. 下の画像の例では, プロジェクト名を inverting_opamp_tuto としている. Create a new folder for the project に ☑️ を入れると, 指定したディレクトリにプロジェクト名と同じ名前のディレクトリが新たに作られる(画像の例の場合, ~/Documents/KiCADProjects/ に inverting_opamp_tuto という名前のフォルダが作られる).

スクリーンショット 2022-09-14 15.28.35.png

Save をクリックすると, プロジェクトが初期化されて次のような画面になる.

スクリーンショット 2022-09-14 15.36.26.png

回路図を描く​

回路図エディタを起動する​

Project Filesの <project name>.kicad_sch もしくはウインドウ右側の Schematic Editor をクリックして回路図エディタを起動する.

スクリーンショット 2022-09-14 15.37.40.png

白紙の回路図が現れる.

スクリーンショット 2022-09-14 15.44.38.png

回路図エディタの操作​

マウス操作:

  • マウスホイールスクロール: ズームイン/アウト
  • 中ボタンクリック+ドラッグ: 平行移動

よく使うキーボードショートカット:

  • a : シンボル(部品)の追加
  • p : 電源系シンボルの追加
  • w : 配線
  • r : アイテムの回転
  • x : アイテムを横方向に反転
  • y : アイテムを縦方向に反転
  • e : シンボルを編集
  • v : シンボルの定数(抵抗値や容量など)を編集

シンボル(部品)の追加​

まず初めに回路に使う部品を追加していく.

右側のツールバーの をクリックするか a を押すと, シンボルを選ぶウインドウが現れるので, リストの中から目的のシンボルを探し出して, 回路図に追加する. ウインドウ上部の検索画面にシンボルの名前やキーワードを入れると合致するものをフィルターして表示してくれる.

例えば,

  • 抵抗 → r
  • キャパシタ → c
  • グラウンド → gnd

グラウンドやPowerについては右側の Power Symbol( p key )からでも追加できる.

スクリーンショット 2022-09-14 16.46.25.png

今回使うオペアンプNJM4558もデフォルトでシンボルリストに入っており, njm と検索すれば出てくる. NJM4558は2回路入りオペアンプなので,

  • NJM4558 A : オペアンプ1
  • NJM4558 B : オペアンプ2
  • NJM4558 C : +Vcc / -Vee

の3つのシンボルから構成される. 1回目のクリックでAが, 2回目のクリックでBが, 3回目のクリックでCが回路図に配置される.

スクリーンショット 2022-09-14 16.38.57.png

out.gif

今回使う部品を配置したら次のようになる(一部gndが足りてないけど).

スクリーンショット 2022-09-14 16.58.44.png

シンボルの定数値の編集​

まだシンボルを配置しただけなので, 抵抗値や容量といったシンボルの定数値を入力する必要がある. シンボルをダブルクリックするかシンボルにカーソルを重ねて e を押すことで定数値を編集することができる.

スクリーンショット 2022-09-14 17.02.56.png

out.gif

Kiloなどの接頭辞は以下が使える.

  • G : Giga
  • M : Mega
  • k : Kilo
  • m : milli
  • u : micro
  • n : nano
  • p : pico

配線​

シンボルの配置, 定数値の入力が終わったので, シンボル同士を結んでいく.

( w key ) をクリックすれば配線モードに切り替わる.

マウスを動かしてシンボル間の配線を行うだけ.

out.gif

配線が終わったものが次.

スクリーンショット 2022-09-14 17.07.06.png

シンボルにリファレンス番号を割り当てる​

上部ツールバーの Fill in schematic symbol reference designators をクリックして R? や C? , U? の ? となっている部分に自動でリファレンス番号を割り当てる.

例) R? → R1 , R2

スクリーンショット 2022-09-14 17.07.06.png

スクリーンショット 2022-09-14 17.07.15.png

リファレンス番号割り当て後.

スクリーンショット 2022-09-14 17.07.23.png

ERC(Electrical Rules Checker)で回路をチェックする​

回路図は書けたつもりなので回路図の配線にミスがないかERC(Electrical Rules Checker)というツールでチェックする.

回路図エディタ上部の をクリックしてERCを開いて, Run ERC をクリックする.

スクリーンショット 2022-09-14 17.07.23.png

ERCが問題のある箇所を示してくれる.

スクリーンショット 2022-09-14 17.08.06.png

回路図上でも問題のある箇所を赤矢印で示してくれる.

スクリーンショット 2022-09-14 17.08.11.png

今回問題になっているのは次の2点.

  1. NJM4558の使っていない2回路目の方に x 印(No Connection)をつけていない
  2. 電源系に PWR_FLAG をつけていない

1.はウインドウ右側のバツ印のアイコンをクリックして, No ConnctionをU1Bの5,6,7pinに付与すれば解決できる.

2.の問題はPpwer Symbolの中にある PWR_FLAG を矢印で示された部分 GND と U1Cの V+ , V- に付与すれば解決できる. PWR_FLAG はKiCADに電源の配線を教えてあげるためのもので, エラーチェックに必要となる.

修正したものが次.

スクリーンショット 2022-09-14 19.18.11.png

回路シミュレーション​

KiCADにはSPICEが組み込まれており, 回路シミュレーションも可能である. ただ, 今描いた回路図そのままでが情報不足であり, SPICEを回すのは不可能である. SPICEを回すための情報をいくつか回路図に書き加えてやる必要がある.

ラベルの追加​

まず, どこが入力でどこが出力かわかるように input , output ラベルを追加する.

右のツールバーの ( Ctrl + L / Cmd + L ) でラベルを追加できる.

out.gif

スクリーンショット 2022-09-14 19.36.30.png

入力信号の設定​

SPICEでシミュレーションを回すための適当な入力を付け加える. 今回はsin波 sin(0 1 1k) (オフセット電圧V0 = 0V, 振幅電圧VA = 1V, 周波数 FREQ = 1kHz) とする.

VSIN というシンボルを回路図の適当なところに追加して, GND, input と接続する.

ここで, 回路図上のGNDをSPICEが自動的にGNDと認識してくれるわけではないので, 0 をGNDにつなげておく必要が必要がある点に注意(面倒).

スクリーンショット 2022-09-14 19.38.36.png

スクリーンショット 2022-09-14 19.45.53.png

Reference番号のアノテートも忘れずに.

スクリーンショット 2022-09-14 19.40.12.png

電源系の配線​

GND同様に, +15V, -15VもSPICEは自動で認識してくれるわけではないので, +15V, -15Vも明示的に回路図に描いてあげる必要がある(面倒).

VSOURCE を追加して電圧値を書き込んで +15V, -15V , GND と接続する.

スクリーンショット 2022-09-14 19.50.04.png

スクリーンショット 2022-09-14 19.52.00.png

Reference番号のアノテートも忘れずに.

スクリーンショット 2022-09-14 19.53.05.png

SPICEモデルの割り当て​

抵抗やキャパシタといった基本的なシンボルはデフォルトでSPICEモデルが結びつけられているが, オペアンプNJM4558やコネクタはSPICEモデルは結びつけられていないので, 自分でSPICEモデルを登録する必要がある.

NJM4558についてはメーカーが提供しているSPICEモデルを利用する. https://www.nisshinbo-microdevices.co.jp/ja/design-support/macromodel/ からNJM4558を探してダウンロードする.(NJM4558_v2_NewJRCという名前のファイル)

このモデルはどこに配置していてもいいが, とりあえず, プロジェクトディレクトリに配置しておく.

NJM4558のシンボルをクリックしてシンボルの編集画面を表示し, 編集画面の下部にあるSpice Model ...をクリックする.

スクリーンショット 2022-09-14 21.02.40.png

Model タブを選択し, LibraryのSelect fileからダウンロードしたファイル郡の中の NJM4558_v2_NewJRC\njm4558_v2.lib を選択する.

スクリーンショット 2022-09-14 21.04.01.png

スクリーンショット 2022-09-14 21.04.15.png

Modelは NJM4558 , Typeは Subcircuit を選択し, OKをクリック.

スクリーンショット 2022-09-14 21.04.34.png

NJM4558のSPICEモデルの登録はこれでOK.

あとはコネクタの処理をSPICEに教えればよいが, 今回はそれほど高周波を扱うわけでもないので, コネクタはSPICEには無視させる事にする.

シンボルの編集画面 > Spice Model を開いて, Disable symbol for simulation にチェック ☑️ を入れる.

スクリーンショット 2022-09-14 21.21.18.png

これでSPICEシミュレーションの準備は整った.

SPICEシミュレーション​

メニューバーの Inspect(検査) > Simulator をクリックしてSpice Simulatorを開く.

Sim Parameters > Transientで Time step, Final time, Initial timeを設定する.

スクリーンショット 2022-09-14 21.27.05.png

左上のRun Simulation ▶️ をクリックしてシミュレーションを回し, Add Siganlsで波形をプロットする.

スクリーンショット 2022-09-14 21.29.15.png

スクリーンショット 2022-09-14 21.29.58.png

想定どおり10倍反転増幅アンプとして動作している.

以下, 設定を変えてSPICEで色々遊んでみた(意外とSPICEモデルが優秀だった).

sin波, VA=2V, FREQ=1kHz. サチっているのがわかる.

sin波, VA=1V, FREQ=10kHz.

sin波, VA=1V, FREQ=20kHz. 波形が怪しくなってきた.

sin波, VA=1V, FREQ=40kHz. ゲインが低下し, 波形もsinとは言えない.

AC解析するためには VSINの編集画面 > Spice Modelを開いて,

  • AC magnitude = 1 (V)
  • AC Phase = 0

のように入力する.

スクリーンショット 2022-09-14 23.30.21.png

Sim Parameters で次のように入力すればAC解析ができる.

スクリーンショット 2022-09-14 23.49.42.png

スクリーンショット 2022-09-14 23.49.16.png

フットプリントの割り当て

回路図だけでは, 回路図上の抵抗がスルーホール抵抗なのかチップ抵抗なのか, そのサイズはどのくらいなのかといった事は分からない. しかし, 回路記号で表されている部品が実際にはどういった部品なのか(そのサイズや形状)といったことを知っていないとPCBのデザインはできない.

そこで, KiCADでは回路図を描いた後に, 回路図の記号にフットプリントを割り当てる. フットプリント=PCBの上に投影した部品の形のようなものなので, シンボルにフットプリントを割り当てることはそのシンボルに対応する部品の物理的な形状を指定する事に等しい.

一般的なスルーホール抵抗とそのフットプリント.

DIP-8パッケージとそのフットプリント.

ウインドウ上部の Assign Footprints をクリックする.

スクリーンショット 2022-09-14 21.53.28.png

次のようなウインドウが開くので, それぞれのシンボルにフットプリントを割り当てていく. フットプリントの数は膨大なので, フィルターをうまく使って目的のものを探し出す. フィルターされたフットプリントが右側のペーンに表示されるので, シンボルを選択した上で目的のフットプリントをダブルクリックする事でシンボルにフットプリントをアサインできる.

ちなみに THT はスルーホール, SMD は表面実装の意味.

スクリーンショット 2022-09-14 22.26.24.png

Filtered Footprintsで右クリック>View Selected footprintでフットプリントのプレビューを見ることもできる.

フットプリントのプレビュー. 左上のアイコンをクリックすると, 3Dモデルも見れる.

フットプリントに対応する3Dモデルのプレビュー.

SPICEシミュレーションのために回路図に書き込んだVSIN, +15V, -15VはPCBデザインには使わないので, シンボルの編集画面で Exclude from board にチェック ☑️ を入れて無視する.

スクリーンショット 2022-09-14 22.47.34.png

今回は, 次の表のようにシンボルとフットプリントを対応させ, OKをクリック.

RefValFootprints
C10.1uCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm
C20.1uCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm
J1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Horizontal
J2Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Horizontal
J3Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Horizontal
R118kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal
R2180kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_Vertical
U1NJM4558Package_DIP:DIP-8_W7.62mm

スクリーンショット 2022-09-14 23.10.50.png

PCBデザイン​

PCBレイアウトエディタの起動​

回路図エディタの右上の緑のPCBのアイコン をクリックしてPCBレイアウトエディタを起動する.

スクリーンショット 2022-09-14 23.13.07.png

PCBレイアウトエディタ

レイヤー​

F. で始まるものは表面, B. で始まるものは裏面に対応するレイヤーを意味する.

次のレイヤーを知っていれば大体なんとかなる.

  • Cu : 銅箔レイヤー. フットプリントをつなぐ配線を描くレイヤー.
  • Silkscreen : シルク. 文字やフットプリントを書くレイヤー. よく見る緑の基板に入っている白い文字. MITSの基板加工機では残念ながらシルクの印刷はできない.
  • Edge. Cuts : 基板外形や穴を描くレイヤー. 切る 作業に関するレイヤー.

スクリーンショット 2022-09-20 18.07.46.png

PCBレイアウトエディタの操作​

マウス操作:

  • マウスホイールスクロール: ズームイン/アウト
  • 中ボタンクリック+ドラッグ: 平行移動

よく使うキーボードショートカット:

  • a : フットプリントの追加
  • x : トラックの追加
  • Ctrl + Shift + v / ⌘ + Shift + v : 孤立viaの追加
  • r : フットプリントの回転
  • f : 選択したフットプリントを表面/裏面に移動させる
  • v : Cuレイヤーの切り替え
  • e : フットプリントのプロパティを編集

基板, レイヤー設定​

をクリックすると, 基板の設定画面が開く. Board Stackup > Physical Stackup から, 基板のレイヤー数や基板厚を設定できる. 2レイヤー, 厚さ1.6mmの基板を設計する場合, デフォルトの設定のままで問題ない.

スクリーンショット 2022-09-19 18.35.23.png

線幅などのデザインルールも Design Rulesから設定変更できる.

MITS ElevenLabを使う場合はデザインルールを

  • 線幅 ≥ 0.8mm (線が潰れたりするかも)
  • 穴径 ≥ 0.3mm (今あるドリルの最小径は0.3mm)
  • Viaサイズ ≥ 0.8mm (潰れたりするかも) としたほうが良い.

スクリーンショット 2022-09-19 22.14.34.png

スクリーンショット 2022-09-19 22.18.27.png

回路図を反映させる​

PCBレイアウトエディタにまだ回路図を反映させていない, あるいは回路図に変更を加えたときは, 上部ツールバーの Update PCB with changes made to schemantic ( F8 key) をクリックして, PCBに変更を反映させる.

スクリーンショット 2022-09-19 18.27.33.png

スクリーンショット 2022-09-19 18.27.47.png

PCBに回路図を反映させると, 回路図エディタで指定したフットプリントが適当に配置される. 回路図上で繋がっていた部品, ピン同士は細い線で繋がれている.

スクリーンショット 2022-09-19 18.28.32.png

基板外形​

Edge.Cuts レイヤーを選択し, 右側のツールバーの図形描画ツールを利用して, 基板の外形を描く.

out.gif

マウントホール​

Edge.Cuts レイヤーに移動し, Add a footprint ( a key)をクリックする. フットプリントリストの MountingHole の中から目的のものを選んで好きな場所に追加する.

out.gif

マウントホールのPadをクリックしてNet NameをGNDを意味する0に設定すれば, 後でベタGNDを作成するときにGNDと繋いでくれる.

スクリーンショット 2022-09-19 23.28.02.png

フットプリントの配置​

マウスでドラッグして, フットプリントを好きな位置に配置する. r で回転, f で表面/裏面へ移動ができる.

out.gif

適当に配置したものがこちら.

スクリーンショット 2022-09-19 21.22.02.png

配線​

F. Cu か B. Cu レイヤーを選択して細い線で繋がれているフットプリントを Route Tracks ( x key)でつなぐ.

out.gif

v keyで F .Cu と B. Cu を行き来できる.

out.gif

フットプリントをつなぐ細い線がなくなると全て繋ぎ終わった合図.

スクリーンショット 2022-09-19 22.32.09.png

ベタGNDの作成​

右ツールバーの< Add a filled zone をクリックする.

鉛筆形のカーソルに変化するので, ベタGNDにしたい範囲の始点をクリックする. クリックすると, Copper Zone Propertiesというウインドウが開くので, ベタGNDを作成したいレイヤーを選択, Netリストから 0 または GND を選択してOKをクリックする.

スクリーンショット 2022-09-20 17.21.27.png

あとは基板外形を描く時と同じ要領でベタGNDを作成したい範囲を囲む.

囲み終わったら, を右クリックしてFill All Zonesをクリックする (or b keyを押す). これでベタGNDが作成される.

out.gif

今回はGNDラインの配線を行なっているが, ベタGNDがGNDネットを自動的に結んでくれるので, ベタGNDを作成するときはGNDの配線を行う必要はない.

シルクにテキストを追加する​

所属とかデザインした年, バージョン情報をシルクに書き込みたいという場面は多い. F. Silkscreen or B. Silkscreen レイヤーに移動した後, Add a Text Item で好きな場所にテキストを追加できる. ソルダーレジストを塗布する場合, 部品やパッドにかぶっていなければ(配線と被っていても)問題ない.

out.gif

シルクにロゴを入れる​

かっこいいロゴを作ってしまった場合, 基板にもロゴを印刷したくなるのが人間の性.

今回は京大のロゴをシルクに入れてみる. KiCADのLauncherから Image Converter を起動する.

スクリーンショット 2022-09-19 23.22.01.png

Image ConverterのLoad Bitmapから画像を開く. 対応フォーマットは調べていないが, png や jpg は読み込める.

スクリーンショット 2022-09-19 23.22.11.png

Sizeを調整した後, Output Format で Footprint(.kicad_mod file) を選択してエクスポートする. 何回も使うならファイルに書き出したほうが良いが, そんなに使うことなさそうなので, クリップボードにエクスポートする.

スクリーンショット 2022-09-19 23.22.48.png

PCBレイアウトエディタに戻ってきて, シルクのレイヤーでロゴを貼りたい場所にペースト(Ctrl + V / ⌘ + V )する.

スクリーンショット 2022-09-19 23.25.00.png

チェック​

PCBデザインが一通り終わったら, 回路図のときと同じように問題がないかチェックする.

上部のツールバーの をクリックして, DRC(Design Rules Checker)を開いて Run DRC をクリックして問題(配線忘れなど)がないかチェックする.

スクリーンショット 2022-09-20 0.58.02.png

スクリーンショット 2022-09-20 17.42.43.png

View > 3D Viewer ( Alt + 3 / Option + 3 ) でデザインしたPCBを3Dでグルグル回しながら見ることができる.

スクリーンショット 2022-09-19 23.43.31.png

MITS ElevenLabで基板を製作​

注意点​

MITS Eleven Labを使う場合はデザインルールを

  • 線幅 ≥ 0.8mm (線が潰れたりするかも)
  • 穴径 ≥ 0.3mm (今あるドリルの最小径は0.3mm)
  • Viaサイズ ≥ 0.8mm (潰れたりするかも) としたほうが良い.

線やパッドの間隔が狭い場合, MITS基板加工機は線やパッドを分離できないので注意.

線とパッドの間隔が狭い例. この場合, Output pinとGNDがひっついてしまう.

Gerberファイルの出力​

まず, MITS ElevenLab用のConverterが読めるフォーマットでPCBレイアウトのデータを出力する. MITSのConverterはDXF, Gerberを読めるが, 今回はGerberを利用する事にする.

PCBレイアウトエディタで File > Plot をクリックする.

Plot formatで Gerber を選択して Plot と Generate Drill Files をクリックして, 適当な場所にGerberファイルとDrillファイルを出力する.

スクリーンショット 2022-09-19 23.40.03.png

スクリーンショット 2022-09-19 23.40.19.png

基板を作る​

MITS ElevenLabを使った基板の加工についてはここでは割愛(資料自体は作ってあるのでアップロードしたい).

MITS ElevenLabで作った基板が次.

表面

裏面

この基板に部品を実装したものがこちら.

IMG_6443.JPG

この回路を実際にテストしてみた. SPICEのシミュレーション結果とおおよそ同じ振る舞いを示している.

sin波, VA=1V, FREQ=1kHz.

sin波, VA=2V, FREQ=1kHz. サチっているのがわかる.

sin波, VA=1V, FREQ=10kHz.

sin波, VA=1V, FREQ=20kHz.

sin波, VA=1V, FREQ=30kHz.

sin波, VA=1V, FREQ=40kHz.