Ardunio I/O口的輸出阻抗是多少?其意義是什麼?

1當其為輸出模式時,其內部存在強上拉,阻值大概多少?那是否也存在強下拉?

2內部存在輸出阻抗,是不是僅為了起到限流避免短路的作用?我覺得即使接的是根導線,也能得到穩定的高低電平

自學小白 求教~~~翻了手冊,但還不算太明白


第一個問題:輸出模式時,其內部存在強上拉,阻值大概多少?那是否也存在強下拉?

葉白之童鞋貼的,手冊里提到的Rpu上拉電阻是用於輸入模式的。Rpu的阻值在50k左右,是一個比較大的阻值,它是一個弱上拉,用於避免引腳輸入時浮空,ATmega328P沒有提供弱下拉,所以Arduino沒有 「下拉輸入」這個模式

但是!剛才說的都是輸入模式,題主問的是輸出模式時的強上拉,而不是輸入模式的弱上拉。那強上拉到底有多強呢?

在數據手冊(https://www.google.com.sg/url?sa=trct=jq=esrc=ssource=webcd=2cad=rjauact=8ved=0ahUKEwj1vuXjnrLPAhXCRY8KHbaxA4cQFggqMAEurl=http%3A%2F%2Fwww.atmel.com%2FImages%2FAtmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdfusg=AFQjCNGc3d_Ha-5F9XuSKDHY-90oZDdQUw)上的Figure 31-352、Figure 31-353、Figure 31-354、Figure 31-355四張圖給出了I/O口在輸出模式下的特性曲線。我們以5V供電為例:

Figure 31-353給出的是Vcc=5V時,I/O口的灌電流驅動的特性曲線。這幾條曲線是什麼意思呢?首先將I/O口被設為輸出模式,輸出低電平(0V),如果逐步提高負載,那I/O口的電壓就會被負載拉高一點,不接任何負載輸出,I/O口的電壓幾乎為0V,如果接入的負載電流為5mA,那I/O口的電壓大概就是0.1V,負載10mA、I/O口的電壓大概就是0.25V(25攝氏度條件下),依次類推……

從圖上看,這條曲線幾乎是一條直線,我們可以假設它是一條直線,任意取一個點,比如25攝氏度,電流15mA時,電壓大概0.35V,根據歐姆定律,我們就可以計算出I/O口灌電流的輸出阻抗大概是350mV/15mA=23.3Ω

23.3歐姆是一個很小的電阻,比輸入弱上拉50千歐小了3個數量級,這個就是所謂的「強下拉」了

同樣的道理看Figure 31-355,這是在拉電流驅動的情況下,I/O口的特性曲線。也就是說,I/O口輸出高電平,隨著負載的加大,I/O口的電壓會被逐步拉低。我們可以用同樣的方法計算拉電流情況下的輸出阻抗。還是選擇25攝氏度15mA的點,大概是4.6V多一點的樣子,也就是說相對於5V的壓降為0.4V,輸出阻抗大概是400mV/15mA=26.6Ω

26.6Ω也是一個很小的電阻,這就是所謂的「強上拉」了。

第二個問題:輸出阻抗有什麼用

我不明白你說的「導線」是什麼意思,顯然單片機內部是沒有「導線」的,IO口的開關是內部MOS管控制的,世間萬物都有電阻,MOS管導通的時候當然也有電阻,即使是電阻比較小,比如幾十歐,那也是有電阻的。

你說的「導線」我試著猜一下你的意思,你想說單片機外部的一根導線可以把單片機的一個處於輸入狀態的IO口可靠維持在高電平或者低電平。沒錯,是這樣的。

但是一個IO口如果永遠被維持在高電平或者低電平,它有什麼意義呢?顯然外部上拉電阻的作用並不是「永遠維持」高電平。外部上拉電阻在沒有別的輸入時維持IO口高電平,在有別的輸入(比如接在這個IO口上的開關按下)時,也就是說有一個電阻遠遠小於外部上拉電阻的東西連通時,外部上拉電阻的阻值太大,就相當於斷路了,這個時候上拉電阻就相當於不存在。

如果你用一根導線代替了外部上拉電阻,在你按下那個開關時,導線和開關的電阻都很小,這就會造成電源短路。所以在這種情況下,一個阻值較大(比如幾十千歐)的上拉電阻是絕對必要的。


第一個問題 況琪 已經回答的很完整了.

我就說說第二個問題吧,是不是疑惑既然叫強上拉,為什麼內部還要存在輸出阻抗?原因大概是因為並不是故意設置一個輸出阻抗,而是做不到沒有輸出阻抗.如果沒有輸出阻抗,那不就是一個理想恆壓源了嗎?所以必然有一個等效的輸出阻抗.

至於接跟導線什麼的大概題主是想說導線大概沒有阻抗吧.但顯然任何導線也是有輸出阻抗的.而且接導線也無法做到自由控制IO輸出電平.


我沒用過Arduino,但原理上大體一致,所以翻了翻Arduino MEGA 2560的數據手冊。如有不對,敬請指正。

以Atmega 2560為例(Arduino MEGA 2560)

1. 內部上拉電阻範圍:20K-50K

參考:http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf PAGE355

在其IO描述中,未見到下拉硬體部分。參考:PAGE 68 Figure 13-2。

2. 所謂輸出阻抗,基本上是指驅動後級的能力,不能和輸出電阻完全等效。阻抗越大,帶負載能力越小,反之亦然。在單片機的IO口上,我還真沒怎麼聽說過輸出阻抗的事兒,如果有相關文章,請勞駕告知我。所以您說的

內部存在輸出阻抗,是不是僅為了起到限流避免短路的作用?

這種說法是有不成立的。

如果在不使能上拉的情況下,其IO的電平及輸出由門電路輸出,並不具備短路保護功能。

3. IO輸出的高低電平,是門電路或者上拉電路輸出的,和阻抗啊接不接導線沒有關係。


推薦閱讀:

開關三極體能替代中間繼電器么?
如何學習模擬電路和電路分析?

TAG:單片機 | Arduino | 電子電路 |