Python で電子回路を「コードとして」書き、シミュレーションし、波形を出すための小さな練習場です。 個人ラボとして自分の手で動かしながら書いているので、整備の度合いはお作法的なライブラリよりもラフです。 そのつもりでお付き合いいただけたら嬉しいです。
使っている道具:
- schemdraw — 回路図を Python から PNG で出す
- skidl — 回路を Python オブジェクトで「組み立てて」ネットリストを吐く
- PySpice — ネットリストを SPICE で解いて Bode などを返す
- ngspice — sudo 無しで動くようユーザ空間に置く(手順は記事に書いています)
| 例 | 記事 |
|---|---|
examples/01_schemdraw_amp.py |
回路図を Python で — schemdraw / skidl / PySpice の役割分担 |
examples/02_skidl_netlist.py |
同上 |
examples/03_pyspice_rc.py |
同上 |
examples/04_pyspice_bode.py |
ngspice の壁 — sudo 無しで PySpice を通すまで |
examples/05_aaf_design.py |
FFT が汚れる前に — AD コンバータの手前で 4 次 LPF を E12 / E24 でどう組むか |
ngspice の sudo 無し導入は記事側にまとめてあります(examples/04_pyspice_bode.py の冒頭の記事)。
Python 環境だけ用意してから、その記事に沿って ngspice の共有ライブラリのパスを通してください。
python -m venv .venv
source .venv/bin/activate
pip install schemdraw skidl pyspice matplotlib numpyoutputs/ に各例の出力(PNG / .cir)が入ります。記事の図と同じものが再現できるよう、生成済みのものも追跡しています。
# 例: 反転増幅回路を schemdraw で描く
python examples/01_schemdraw_amp.py
# 例: 受動 RC ローパスの Bode 線図(ngspice を通すところまで)
python examples/04_pyspice_bode.py
# 例: 4 次 Butterworth AAF を E12 / E24 で設計する
python examples/05_aaf_design.py --topology sallenkey --fc 20e3 \
--fix-c1 1e-9 --series-r e24 --series-c e12examples/05_aaf_design.py --help でオプションが出ます。
MIT License(LICENSE)。
ご自分のラボや授業の素材として、自由に流用してください。
誤りや「ここはこう書くともっと良い」というご指摘も、Issue でいただけると助かります。