瘋了吧,你竟然用Python來畫電路原理圖!

前言

前路茫茫,最怕標題黨!哈哈哈!

今天給大家介紹一個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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 姓名:仝啟龍 學號:17101223413 本文轉(zhuǎn)自 PCB行業(yè)工程師技術交流 【嵌牛導讀】 作為從事硬件設計工...
    軒轅龍閱讀 1,078評論 0 2
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,083評論 4 61
  • 特定的研究領域內(nèi),專用術語實際上是一種通用語言,它不是妨礙而是便于專業(yè)研究者更好地表達和交流思想。在一定情況下,深...
    媒趣小姐閱讀 319評論 0 1
  • 我不是佛教信徒,但對包括佛教在內(nèi)的各種宗教一直給予充分的尊重。包括對各地的寺廟或道觀,即使做不到心馳神往,可那份敬...
    渝夫2016閱讀 732評論 0 0
  • 以前對人,毫不留情,說走就走?,F(xiàn)在反倒是畏手畏腳的,不敢果斷離開,也許是失去太多了越長大卻越優(yōu)柔寡斷了。 這種抑郁...
    秋扇_閱讀 191評論 0 0

友情鏈接更多精彩內(nèi)容