電路選型與設(shè)計(jì):從原理到基極電阻計(jì)算)
看到標(biāo)題第一反應(yīng)這問題幾乎每個(gè)做嵌入式或硬件的人都會(huì)在某個(gè)階段問過一遍。尤其是手里拿著9013和8550一邊查手冊(cè)一邊猶豫到底該往板上焊哪個(gè)的時(shí)候。三極管開關(guān)電路本身不難但NPN和PNP這對(duì)“兄弟”一旦選錯(cuò)輕則電路不工作重則燒管子、燒IO口排查起來還特別容易繞暈。這篇文章就把選型邏輯、電路設(shè)計(jì)、參數(shù)計(jì)算、實(shí)際應(yīng)用場(chǎng)景和調(diào)試經(jīng)驗(yàn)一次講透適合剛接觸三極管的初學(xué)者也適合做項(xiàng)目時(shí)想快速確認(rèn)方案的老手。1. 三極管開關(guān)電路的基本原理先弄懂導(dǎo)通和截止1.1 三極管什么時(shí)候算“開”什么時(shí)候算“關(guān)”用人話說三極管當(dāng)開關(guān)用就是讓它工作在兩種狀態(tài)截止區(qū)和飽和區(qū)。截止就是“關(guān)”集電極和發(fā)射極之間幾乎沒有電流飽和就是“開”集電極和發(fā)射極之間的壓降非常小小到可以當(dāng)導(dǎo)線看。平時(shí)常說的放大區(qū)在開關(guān)電路里反而是要刻意繞開的區(qū)域。NPN導(dǎo)通需要滿足兩個(gè)條件第一基極電壓比發(fā)射極高通常硅管要達(dá)到0.6~0.7V以上也就是發(fā)射結(jié)正偏第二基極電流要足夠大大到讓集電極電流不再受β控制而是受外部負(fù)載電阻限制。這時(shí)候管子進(jìn)入飽和Vce大概只有0.2V左右相當(dāng)于一個(gè)閉合的開關(guān)。PNP則完全反著來。它的導(dǎo)通條件是發(fā)射極電壓比基極高基極電流方向是從發(fā)射極流向基極集電極電流方向是從發(fā)射極流向集電極。換句話說PNP的驅(qū)動(dòng)是“拉電流”或“低電平導(dǎo)通”邏輯上正好和NPN互補(bǔ)。1.2 NPN和PNP一句話區(qū)別電流路徑和極性完全不同畫個(gè)簡(jiǎn)化的記憶圖NPN基極得高電平電流從B進(jìn)、從E出C到E導(dǎo)通。PNP基極得低電平電流從E進(jìn)、從B出E到C導(dǎo)通。實(shí)際項(xiàng)目里很多人混淆是因?yàn)橹挥浟恕案唠娖綄?dǎo)通”和“低電平導(dǎo)通”卻忽略了三極管本質(zhì)是電流型器件。決定導(dǎo)通的不是電壓本身而是發(fā)射結(jié)正偏產(chǎn)生的基極電流。你用萬用表量電壓往往量不出問題量電流才知道管子到底工作在什么狀態(tài)。下面這個(gè)表是所有選型判斷的基礎(chǔ)類型發(fā)射結(jié)正偏條件集電極電流方向飽和時(shí)管壓降典型邏輯NPNVbe 0.7VC → EVce ≈ 0.2V高電平導(dǎo)通PNPVeb 0.7VE → CVec ≈ 0.2V低電平導(dǎo)通記住一點(diǎn)三極管的開關(guān)速度、飽和深度、溫度穩(wěn)定性都和基極電流的“過驅(qū)動(dòng)倍數(shù)”直接相關(guān)。后面計(jì)算基極電阻的時(shí)候這個(gè)理解會(huì)在關(guān)鍵時(shí)刻幫你避坑。2. 選型第一關(guān)高邊開關(guān)還是低邊開關(guān)2.1 低邊開關(guān)選NPN高邊開關(guān)選PNP這是我做項(xiàng)目時(shí)最先問自己的問題負(fù)載到底是接在電源正端還是接在電源負(fù)端。如果負(fù)載一端接VCC另一端通過三極管接地這叫低邊開關(guān)。NPN是天然的低邊開關(guān)因?yàn)樗陌l(fā)射極可以直接接地基極只需要一個(gè)小電壓就能驅(qū)動(dòng)。比如單片機(jī)IO口輸出3.3V或5V高電平經(jīng)過限流電阻給基極NPN就能把負(fù)載的地線回路拉通。如果負(fù)載一端接地另一端通過三極管接VCC這叫高邊開關(guān)。這時(shí)候PNP更順手負(fù)載不需要依賴系統(tǒng)地線而且在某些電路里負(fù)載直接接地更安全比如需要防止負(fù)載帶電的場(chǎng)合。一句話看到負(fù)載接電源正用NPN看到負(fù)載接電源負(fù)用PNP。但這不是死規(guī)則還要看驅(qū)動(dòng)源。2.2 從驅(qū)動(dòng)電壓和IO電平角度選型很多初學(xué)者直接拿3.3V單片機(jī)去驅(qū)動(dòng)12V負(fù)載然后用PNP做高邊開關(guān)結(jié)果莫名其妙不工作。問題出在“參考地”上。NPN低邊開關(guān)IO高電平3.3V發(fā)射極0VVbe是實(shí)實(shí)在在的3.3V扣除基極電阻上的壓降驅(qū)動(dòng)非常直接。而PNP高邊開關(guān)發(fā)射極接12V基極要低于發(fā)射極0.7V才能形成驅(qū)動(dòng)也就是基極電壓要低于11.3V。如果直接用IO輸出3.3V基極電壓是3.3V發(fā)射極是12V這9V左右的壓差早就讓PNP飽和導(dǎo)通了IO根本沒能力把它“關(guān)斷”。這里的關(guān)鍵問題是PNP高邊開關(guān)的關(guān)斷需要基極接近發(fā)射極電位而單片機(jī)IO的地和VCC往往是不同的電位域。想讓PNP可靠關(guān)斷和導(dǎo)通通常需要一級(jí)NPN去拉低基極或者用專門的驅(qū)動(dòng)電路。如果只是3.3V系統(tǒng)控制3.3V負(fù)載PNP直接驅(qū)動(dòng)倒是可行因?yàn)镮O高電平和電源電位相同。2.3 從抗干擾和上電安全角度選型選型不能只看能不能通還要看系統(tǒng)上電瞬間的狀態(tài)。單片機(jī)在復(fù)位和上電過程中IO口一般處于高阻態(tài)或下拉狀態(tài)。NPN低邊開關(guān)如果IO懸空基極電平不確定可能會(huì)有微弱漏電流讓三極管處于臨界導(dǎo)通負(fù)載出現(xiàn)閃爍。解決方法是基極加下拉電阻。PNP高邊開關(guān)只要基極電壓沒有被拉低管子默認(rèn)是截止的。從安全角度看某些需要“默認(rèn)斷開”的執(zhí)行機(jī)構(gòu)比如繼電器控制加熱器用PNP或P溝道MOSFET做高邊更安心??垢蓴_方面不同項(xiàng)目結(jié)論不完全一樣但有一個(gè)常見經(jīng)驗(yàn)高邊開關(guān)對(duì)地彈噪聲不敏感低邊開關(guān)對(duì)輸入信號(hào)噪聲更敏感。工業(yè)現(xiàn)場(chǎng)傳感器信號(hào)比較多的時(shí)候PNP傳感器配源型輸入更常見因?yàn)楦唠娖接行盘?hào)不容易被地線干擾拉低。3. 典型開關(guān)電路設(shè)計(jì)電路圖、參數(shù)計(jì)算和實(shí)操要點(diǎn)3.1 NPN低邊開關(guān)典型電路與基極電阻計(jì)算下面這個(gè)是最常用的NPN低邊開關(guān)驅(qū)動(dòng)繼電器或指示燈的場(chǎng)景。以9013為例屬于NPN小功率管Ic最大500mA適合驅(qū)動(dòng)小型繼電器、LED燈條這類負(fù)載。VCC負(fù)載電源如12V │ ▼ [負(fù)載 RL]繼電器線圈 / 指示燈 / 小電機(jī) │ ▼ C集電極 B ── Rb ── IO單片機(jī)GPIO 9013 NPN E發(fā)射極 │ ▼ GND這里的核心是基極電阻Rb的計(jì)算。目標(biāo)是讓三極管飽和而不是卡在放大區(qū)。假設(shè)繼電器線圈在某電壓下電流是30mA。Ic就是30mA。9013的直流放大倍數(shù)β手冊(cè)給的范圍可能是100~300但實(shí)際飽和使用時(shí)必須留足驅(qū)動(dòng)余量工程上常用Ib Ic / 10來保證深度飽和。為什么不是β算出來的 Ic/β因?yàn)棣率欠糯髤^(qū)的參數(shù)三極管進(jìn)入飽和需要基極電流超過臨界值過驅(qū)動(dòng)倍數(shù)取5~10倍比較穩(wěn)溫度變化和批次差異才不容易導(dǎo)致管子退出飽和。那么Ib取3mA。如果單片機(jī)IO高電平是5VVbe按0.7V估算Rb (5 - 0.7) / 0.003 ≈ 1433Ω取標(biāo)稱值1.5kΩ就可以。如果IO是3.3VRb (3.3 - 0.7) / 0.003 ≈ 866Ω取820Ω或1kΩ都行。注意一個(gè)常見誤區(qū)基極電阻不是越大越好也不是越小越好。太大讓三極管進(jìn)不了飽和Vce降不下去管子發(fā)熱太小會(huì)拉高IO口輸出電流輕則影響單片機(jī)穩(wěn)定性重則損傷IO口。3.2 PNP高邊開關(guān)典型電路與基極電阻計(jì)算PNP高邊開關(guān)的典型用法是負(fù)載一端接地PNP負(fù)責(zé)接通VCC。下面這個(gè)圖是直接用MCU低電平驅(qū)動(dòng)的情況但它有一個(gè)隱含前提MCU的參考地和負(fù)載電源地是同一個(gè)地而且VCC不能比IO高太多。VCC如3.3V或5V │ ▼ E發(fā)射極 B ── Rb ── IO單片機(jī)GPIO 8550 PNP C集電極 │ ▼ [負(fù)載 RL] │ ▼ GND如果VCC是12V而IO高電平是5V或3.3V這個(gè)電路會(huì)失控IO輸出高電平時(shí)VB仍然遠(yuǎn)低于VEPNP照樣導(dǎo)通你根本關(guān)不斷它。正確的做法是加一級(jí)NPN去控制PNP的基極也就是用一個(gè)NPN把控制信號(hào)反相并拉低PNP基極。VCC12V │ ▼ E發(fā)射極 B ── Rb2 ── CNPN集電極 8550 PNP │ C集電極 B ── Rb1 ── IO │ 9013 NPN ▼ E發(fā)射極 [負(fù)載 RL] │ │ ▼ V GND電路工作時(shí)IO高電平讓NPN導(dǎo)通NPN把PNP基極拉低PNP導(dǎo)通負(fù)載得電。IO低電平時(shí)NPN截止PNP基極通過Rb2被上拉到VCCPNP關(guān)斷。注意Rb2不能被省略否則NPN截止時(shí)PNP基極懸空很容易因?yàn)樵肼曊`導(dǎo)通。這里的VCC是12V時(shí)PNP基極被拉低到0V左右Ve是12VVeb大約12V超過普通三極管發(fā)射結(jié)耐壓一般5V左右所以基極串聯(lián)電阻Rb2必須足夠大來限制基極電流不能讓NPN直接硬拉。計(jì)算Rb2時(shí)按通過PNP基極的電流不超過10mA來設(shè)計(jì)。3.3 負(fù)載是繼電器和電機(jī)時(shí)必須加的續(xù)流二極管這個(gè)細(xì)節(jié)我見過太多人忽略結(jié)果燒管子的“懸案”十有八九是它。繼電器線圈、電機(jī)、電磁閥這類負(fù)載本質(zhì)上是電感電流斷開瞬間會(huì)產(chǎn)生一個(gè)反向電動(dòng)勢(shì)極性是“維持原電流方向”在感性負(fù)載兩端會(huì)瞬間產(chǎn)生幾十伏甚至上百伏的尖峰電壓遠(yuǎn)超三極管的耐壓。解決辦法是在負(fù)載兩端反向并聯(lián)一個(gè)續(xù)流二極管也叫泄放二極管。注意極性二極管陰極接VCC側(cè)陽極接三極管集電極側(cè)。正常工作時(shí)二極管反偏幾乎沒有電流關(guān)斷瞬間的反向電動(dòng)勢(shì)會(huì)讓二極管正向?qū)ò涯芰啃狗诺簟CC ──┬── [繼電器線圈] ──┬── 三極管 │ │ └── [D1 續(xù)流二極管] ──┘ 二極管陰極朝VCC陽極朝三極管二極管選型主要看反向耐壓大于電源電壓的2倍以上正向電流大于負(fù)載工作電流。常見的1N4148用于小繼電器沒問題大電流繼電器或電機(jī)建議用1N4007甚至SS34肖特基。4. 常見應(yīng)用場(chǎng)景從PLC輸入到電平轉(zhuǎn)換再到PMOS驅(qū)動(dòng)4.1 PLC數(shù)字量輸入端NPN傳感器和PNP傳感器怎么接線在工業(yè)現(xiàn)場(chǎng)PLC的數(shù)字量輸入和傳感器輸出類型必須匹配。很多人第一次接觸“NPN傳感器”、“PNP傳感器”會(huì)被繞暈其實(shí)這里的三極管是傳感器內(nèi)部的輸出級(jí)。NPN傳感器輸出的是低電平有效信號(hào)。傳感器不動(dòng)作時(shí)輸出高阻或高電平動(dòng)作時(shí)內(nèi)部NPN導(dǎo)通輸出線被拉到0V電流從外部流入傳感器行業(yè)內(nèi)叫“漏型輸入”或source邏輯。對(duì)應(yīng)的PLC輸入端公共端要接電源正極端子內(nèi)部有電阻到公共端當(dāng)輸入點(diǎn)被傳感器拉低時(shí)形成電流回路。PNP傳感器正好相反。傳感器內(nèi)部是PNP結(jié)構(gòu)動(dòng)作時(shí)輸出高電平電流從傳感器流出。PLC輸入端公共端接0V輸入點(diǎn)被傳感器拉高形成電流回路這叫“源型輸入”或sink邏輯。具體到三菱FX3U它可以通過改變輸入公共端接線來適配兩種傳感器傳感器類型輸出有效電平PLC輸入公共端接法輸入信號(hào)狀態(tài)NPN傳感器低電平S/S接24V輸入點(diǎn)接傳感器輸出傳感器動(dòng)作時(shí)輸入點(diǎn)為低PNP傳感器高電平S/S接0V輸入點(diǎn)接傳感器輸出傳感器動(dòng)作時(shí)輸入點(diǎn)為高選型原則很簡(jiǎn)單看PLC輸入公共端的定義看傳感器型號(hào)說明。如果用錯(cuò)最典型的癥狀是傳感器指示燈正常但PLC輸入點(diǎn)死活不亮或者常亮不受控。4.2 三極管電平轉(zhuǎn)換電路3.3V單片機(jī)控制5V/12V負(fù)載現(xiàn)在的單片機(jī)大部分是3.3V供電但很多模塊和負(fù)載還要5V或12V。直接用IO去驅(qū)動(dòng)高電平可能不夠低電平又有漏電流問題。用NPN三極管做開集輸出是成本最低的電平轉(zhuǎn)換方案。3.3V單片機(jī)IO ── Rb ── BNPN基極 C ── R上拉 ── VCC如5V │ ├── 輸出信號(hào) E ── GNDIO輸出高電平時(shí)NPN導(dǎo)通C被拉到地輸出低電平IO輸出低電平時(shí)NPN截止C被電阻上拉到5V輸出高電平。注意這個(gè)電路把信號(hào)反相了軟件層需要做邏輯取反或者后面再加一級(jí)反相。如果不希望反相就用兩級(jí)NPN串聯(lián)或者選合適的上拉方式。這里最容易忽略的是上拉電阻阻值。輸出端如果接的是高阻輸入10k上拉夠用如果后面還接了其他負(fù)載就要估算電流盡量保證輸出高電平不低于目標(biāo)電平閾值。4.3 三極管取反電路與PNP控制PMOS的組合玩法單個(gè)NPN共射極電路天然就是反相器也就是“三極管取反電路”。輸入高輸出低輸入低輸出高。通過調(diào)節(jié)集電極電阻和基極電阻還能順便完成電平移位所以很多邏輯接口轉(zhuǎn)換都用這個(gè)結(jié)構(gòu)。PNP控制PMOS也是一個(gè)很實(shí)用的組合。PMOS做高邊開關(guān)時(shí)柵極需要比源極低一定電壓才能開啟而單片機(jī)的IO電平通常不足以直接控制PMOS。一個(gè)簡(jiǎn)單的辦法是先用NPN把IO信號(hào)反相把輸出接到PMOS的柵極源極接電源正極。IO高電平時(shí)NPN導(dǎo)通PMOS柵極被拉低PMOS開啟IO低電平時(shí)NPN截止PMOS柵極被上拉到電源PMOS關(guān)閉。VCC ──┬── SPMOS源極 │ └── R上拉 ── GPMOS柵極 │ CNPN集電極 B ── Rb ── IO ENPN發(fā)射極 │ ▼ GND DPMOS漏極── 負(fù)載 ── GND這個(gè)電路本質(zhì)上是“NPN反相 PMOS高邊驅(qū)動(dòng)”比直接用PNP驅(qū)動(dòng)高邊負(fù)載能承受更大的電流因?yàn)镸OSFET的導(dǎo)通電阻低發(fā)熱更小。做鋰電池保護(hù)、大功率LED控制這類場(chǎng)景時(shí)這是我比較偏好的一種方案。5. 實(shí)操中容易踩的坑和快速排查方法5.1 基極電阻怎么取不要迷信1k要按電流算網(wǎng)上很多電路圖隨便標(biāo)個(gè)1k就讓人抄但實(shí)際項(xiàng)目中基極電阻是要算的因?yàn)閱纹瑱C(jī)IO的驅(qū)動(dòng)能力差異很大。有些MCU的IO輸出電流上限只有8mA甚至4mA如果按IbIc/10算出來的基極電流有十幾毫安那單片機(jī)根本帶不動(dòng)高電平會(huì)被拉低三極管當(dāng)然無法飽和。正確做法是先查單片機(jī)IO最大輸出電流再確定三極管需要的基極電流二者取小值。比如單片機(jī)IO最大輸出4mA三極管Ic200mAIb按Ic/10算需要20mA超了這時(shí)候要么換驅(qū)動(dòng)能力更強(qiáng)的IO要么用達(dá)林頓結(jié)構(gòu)要么改MOSFET。另外基極串聯(lián)電阻在電路板上靠近三極管基極放不要離得太遠(yuǎn)否則受到高頻干擾時(shí)容易誤觸發(fā)。5.2 關(guān)不斷、發(fā)熱、誤動(dòng)作三類常見故障速查做硬件調(diào)試免不了遇到三極管開關(guān)不聽話的情況。下面是我整理的三類高頻問題基本覆蓋了80%的翻車現(xiàn)場(chǎng)。故障現(xiàn)象可能原因快速排查方法輸入低電平時(shí)輸出仍導(dǎo)通基極懸空下拉電阻缺失三極管C/E接反Vce擊穿檢查基極到GND是否有下拉電阻用萬用表測(cè)Vbe輸入高電平時(shí)輸出不導(dǎo)通基極電阻過大IO驅(qū)動(dòng)能力不足發(fā)射結(jié)電壓不足三極管類型選錯(cuò)算一遍Ib看是否達(dá)到Ic/10IO高電平實(shí)測(cè)多少管子發(fā)熱嚴(yán)重未進(jìn)入飽和Vce過大負(fù)載電流超限PWM頻率太高開關(guān)損耗大測(cè)Vce確認(rèn)小于0.3V測(cè)Ic是否超規(guī)格控制繼電器時(shí)頻繁燒管缺少續(xù)流二極管二極管極性裝反確認(rèn)二極管反向并聯(lián)在線圈兩端陰極接正極熱詞里有個(gè)“ic三極管ib大于ic”其實(shí)說的是三極管在放大區(qū)的現(xiàn)象IcβIb所以Ic通常遠(yuǎn)大于Ib。放到開關(guān)電路里反而是要保證Ib足夠大讓Ic不再線性跟隨Ib管子才能真正飽和。這個(gè)觀念轉(zhuǎn)換很重要。5.3 什么時(shí)候該換成MOSFET三極管開關(guān)的邊界三極管開關(guān)雖然簡(jiǎn)單便宜但它的“開關(guān)”不是理想的。飽和導(dǎo)通時(shí)Vce還有約0.2V壓降在大電流下功耗不低而且從截止到飽和的切換需要時(shí)間高頻PWM場(chǎng)景開關(guān)損耗會(huì)明顯增加。如果負(fù)載電流超過三極管額定Ic或者需要高頻PWM調(diào)速比如LED呼吸燈、電機(jī)調(diào)速更合適的是NMOS/PMOS。MOSFET是電壓型器件柵極電流幾乎為零開關(guān)速度快導(dǎo)通電阻可以做到毫歐級(jí)。但MOSFET柵極電容需要驅(qū)動(dòng)電流充放電頻繁開關(guān)時(shí)機(jī)腳也需要考慮加驅(qū)動(dòng)電阻和泄放電阻這是另一個(gè)話題。三極管開關(guān)不是要被取代而是有自己的舒適區(qū)小電流、低頻、低成本、邏輯簡(jiǎn)單的場(chǎng)景里它依然是性價(jià)比最高的選擇。9013、8050、8550、S8050、S8550這些型號(hào)做到批量項(xiàng)目里成本幾乎可以忽略。結(jié)尾想再多說兩句這些年幫人排查三極管開關(guān)電路問題繞不開幾個(gè)重復(fù)出現(xiàn)的點(diǎn)一是不看負(fù)載電流直接選型號(hào)二是基極電阻憑感覺亂取三是感性負(fù)載不加續(xù)流二極管。其實(shí)每個(gè)問題背后都是原理沒完全吃透。我個(gè)人每次做硬件方案拿到負(fù)載的第一件事就是查規(guī)格、算電流然后才決定用NPN低邊、PNP高邊還是MOSFET。這個(gè)習(xí)慣養(yǎng)成了后面調(diào)試省下的時(shí)間遠(yuǎn)超過選型那幾分鐘。如果你也正被某個(gè)小電路折騰別急著換管子先用萬用表量一遍Vbe、Vce和負(fù)載兩端電壓大多數(shù)問題自己就現(xiàn)形了。