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供電為例:

從圖上看,這條曲線幾乎是一條直線,我們可以假設它是一條直線,任意取一個點,比如25攝氏度,電流15mA時,電壓大概0.35V,根據歐姆定律,我們就可以計算出I/O口灌電流的輸出阻抗大概是350mV/15mA=23.3Ω
23.3歐姆是一個很小的電阻,比輸入弱上拉50千歐小了3個數量級,這個就是所謂的「強下拉」了

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的電平及輸出由門電路輸出,並不具備短路保護功能。
3. IO輸出的高低電平,是門電路或者上拉電路輸出的,和阻抗啊接不接導線沒有關係。推薦閱讀:
