前言
前路茫茫,最怕標題黨!哈哈哈!
今天給大家介紹一個Python庫——SchemDraw,可以用來畫電路原理圖。當然,也僅僅是個原理圖而已,并不能導出到到PCB工具去進行PCB設計。這個庫用來畫一些演示用的電路還是很方便的。
一、相關介紹
這個庫有以下特點:
a.自帶模擬和數(shù)字庫
b.自定義黑盒
c.支持LaTeX風格的標注
d.模糊布局,智能布線
可以直接使用 pip install SchemDraw來安裝,也可以去下面這個鏈接下載源文件。
https://pypi.org/project/SchemDraw/
二、簡單示例
先畫個模電書上經(jīng)常使用的運放反向放大電路

SCD_Demo1.jpg
源碼如下:
import SchemDraw as schem
import SchemDraw.elements as e
d = schem.Drawing(inches_per_unit=.5)
op = d.add(e.OPAMP)
d.add(e.LINE, d='left', xy=op.in2, l=d.unit/4)
d.add(e.LINE, d='down', l=d.unit/5)
d.add(e.GND)
d.add(e.LINE, d='left', xy=op.in1, l=d.unit/6)
d.add(e.DOT)
d.push()
Rin = d.add(e.RES, d='left', xy=op.in1-[d.unit/5,0], botlabel='$R_{in}$', lftlabel='$v_{in}$')
d.pop()
d.add(e.LINE, d='up', l=d.unit/2)
Rf = d.add(e.RES, d='right', l=d.unit*1, label='$R_f$')
d.add(e.LINE, d='down', toy=op.out)
d.add(e.DOT)
d.add(e.LINE, d='left', tox=op.out)
d.add(e.LINE, d='right', l=d.unit/4, rgtlabel='$v_{o}$')
d.draw()
再畫一個555電路,稍微復雜一點。

SCD_Demo2.jpg
源碼見第三部分。
三、使用XKCD轉(zhuǎn)換為手寫風格
效果如下,怎么樣,看上去很二逼吧!

SCD_Demo3.jpg
手寫風格的源碼如下:
import SchemDraw as schem
import SchemDraw.elements as e
#import matplotlib.pyplot as plt
#plt.xkcd()
d = schem.Drawing()
left = {'cnt':3,
'labels':['TRG','THR','DIS'],
'plabels':['2','6','7'],
'loc':[.2,.35,.75],
'lblsize':12,
}
right = {'cnt':2,
'labels':['CTL','OUT'],
'plabels':['5','3'],
'lblsize':12,
}
top = {'cnt':2,
'labels':['RST','Vcc'],
'plabels':['4','8'],
'lblsize':12,
}
bot = {'cnt':1,
'labels':['GND'],
'plabels':['1'],
'lblsize':12,
}
IC555 = e.blackbox(d.unit*1.5, d.unit*2.25,
linputs=left, rinputs=right, tinputs=top, binputs=bot,
leadlen=1, mainlabel='555')
T = d.add(IC555)
BOT = d.add(e.GND, xy=T.GND) # Note: Anchors named same as pin labels
d.add(e.DOT)
d.add(e.RES, endpts=[T.DIS, T.THR], label='Rb')
d.add(e.RES, d='up', xy=T.DIS, label='Ra', rgtlabel='+Vcc')
d.add(e.LINE, endpts=[T.THR, T.TRG])
d.add(e.CAP, xy=T.TRG, d='down', toy=BOT.start, label='C', l=d.unit/2)
d.add(e.LINE, d='right', tox=BOT.start)
d.add(e.CAP, d='down', xy=T.CTL, toy=BOT.start, botlabel='.01$\mu$F')
d.add(e.DOT)
d.add(e.DOT, xy=T.DIS)
d.add(e.DOT, xy=T.THR)
d.add(e.DOT, xy=T.TRG)
d.add(e.LINE, endpts=[T.RST,T.Vcc])
d.add(e.DOT)
d.add(e.LINE, d='up', l=d.unit/4, rgtlabel='+Vcc')
d.add(e.RES, xy=T.OUT, d='right', label='330')
d.add(e.LED, flip=True, d='down', toy=BOT.start)
d.add(e.LINE, d='left', tox=BOT.start)
d.draw()
后記
這個庫并不能真的用來實現(xiàn)一個具備電氣特性的電路設計,實現(xiàn)一個復雜設計也顯得過于復雜和龐大,也沒有一般EDA工具圖形界面那么直觀。但是用來演示一些電路原理,或者在寫文檔的時候設計一些需要的電路圖,還是很有幫助的。比如下面這個

想想了解更多關于這個庫的使用,請看下面這個鏈接:
https://cdelker.bitbucket.io/SchemDraw/SchemDraw.html