題:
如何在數字Arduino引腳上使用12 V輸入?
D.W.
2012-10-12 18:53:26 UTC
view on stackexchange narkive permalink

我正在使用Arduino Uno microcrontroller創建12 V系統的控制器。對於輸出,我使用繼電器屏蔽來切換12 V組件。我有一個12 V撥動開關,可以打開系統中的某些12 V組件,我想使用同一開關的觸發信號發送到Arduino數字輸入。我知道Arduino最多只能處理5 V電壓。將開關的12 V降壓至5 V輸入的最佳方法是什麼?

編輯:該系統用於汽車。是否需要以某種方式降低汽車電池的電流強度,以免炸毀組件?

汽車的電流強度無關緊要-組件僅使用所需的電流。汽車電池能夠提供數百安培的電流,例如啟動馬達所需的電流。這並不意味著總會有數百安培的電流在流動,並可能損壞設備。:)
五 答案:
stevenvh
2012-10-12 19:23:41 UTC
view on stackexchange narkive permalink

好消息!這將很便宜! :-)

一個簡單的電阻分壓器會將12 V降至Arduino可消化的5V。可以將輸出電壓計算為

\ $ V_ {OUT} = \ dfrac {R2} {R1 + R2} V_ {IN} \ $

電阻值範圍為10kΩ是一個不錯的選擇。如果您的R2為10kΩ,則R1應該為14kΩ。現在14kΩ不是標準值,而是15kΩ。您的輸入電壓將是4.8 V而不是5 V,但是Arduino仍將其視為高電平。如果12 V的電壓過高,您還有一點裕量。即使18kΩ仍會為您提供足夠高的4.3 V,但是您必須開始考慮12 V有點太低。電壓仍會被視為高嗎?我會堅持使用15kΩ。

編輯
您提到了汽車環境,那麼您確實需要一些額外的保護。汽車的12 V永遠不會是12 V,但大多數時候會更高,峰值比標稱12 V高幾伏。(實際上標稱值更像是12.9 V,每個電池為2.15V。)您可以放置​​5 V齊納二極管二極管與R2並聯,這將切斷任何高於齊納二極管5 V的電壓。但是,齊納二極管電壓會隨電流而變化,在低輸入電流時,電阻器為您提供的電阻將在較低電壓下截止。更好的解決方案是在Arduino的輸入和5 V電源之間安裝一個肖特基二極管。然後,任何高於5.2 V的輸入電壓都會使肖特基二極管導通,並且輸入電壓將限制為5.2V。為此,您確實需要一個肖特基二極管,一個普通的PN二極管的壓降為0.7 V,而不是肖特基二極管的壓降。 0.2 V,然後最大輸入電壓5.7 V可能太高。

更好
Michael的光耦合器是一個不錯的選擇,儘管價格稍貴。通常,您將使用光耦合器將輸入與輸出隔離,但也可以在此處使用它來保護輸入。

enter image description here

工作原理:輸入電流使內部紅外LED點亮,從而導致通過光電晶體管的輸出電流。輸入電流和輸出電流之間的比率稱為 CTR ,用於“電流傳輸比率”。 CNY17的最低CTR為40%,這意味著4 mA輸出需要10 mA輸入。讓我們選擇10 mA輸入。那麼R1應該是(12 V-1.5 V)/ 10 mA = 1kΩ。輸出電阻必須在4 mA處產生5 V的壓降,然後應為5 V / 4 mA = 1250Ω。最好有一個更高的值,否則電壓下降不會超過5V。 4.7kΩ會將電流限制為約1 mA。

Vcc是Arduino的5 V電源,Vout進入Arduino的輸入。請注意,輸入將被反相:如果存在12 V,它將為低電平,否則將為高電平。如果您不希望這樣做,則可以交換光耦合器的輸出和上拉電阻的位置。

編輯2
光耦合器解決方案怎麼辦解決過電壓問題?電阻分壓器是成比例的:輸出電壓是輸入的固定比率。如果您已經計算出在12 V輸入下有5 V輸出,那麼24 V輸入將給出10 V輸出。不好,因此是保護二極管。

在光耦合器電路中,您可以看到連接到Arduino輸入引腳的右側根本沒有任何高於5 V的電壓。如果光耦合器導通,則晶體管將汲取電流,在上述示例中,我使用了4 mA。根據歐姆定律(電流乘以電阻=電壓),1.2kΩ會導致4.8 V電壓降。然後,電阻兩端的輸出電壓將為5 V(Vcc)-4.8 V = 0.2 V,這是一個低電平。如果電流較低,則電壓降也將較小,並且輸出電壓將升高。例如,1 mA電流將導致1.2 V壓降,輸出將為5 V-1.2 V = 3.8V。最小電流為零。這樣,電阻兩端將沒有電壓,輸出將為5V。這是最大值,沒有任何東西可以提供更高的電壓。

如果輸入電壓過高怎麼辦?您不小心連接了24 V電池,而不是12V。然後,LED電流將增加一倍,形成10 mA至20 mA。 40%的點擊率將導致8 mA輸出電流,而不是計算出的4 mA。通過1.2kΩ電阻的8 mA壓降為9.6V。但是使用5 V電源將是負電壓,這是不可能的。您不能在這裡低於0V。因此,儘管光耦合器非常希望汲取8 mA電流,但電阻會限制這一電流。通過它的最大電流是滿5 V時的最大電流。這樣,輸出實際上將為0 V,電流為5 V / 1.2kΩ= 4.2 mA。因此,無論您連接的是哪種電源,輸出電流都不會高於此水平,並且電壓將保持在0 V至5 V之間。不需要進一步的保護。

如果您期望過壓,則必須檢查光耦合器的LED是否可以處理增加的電流,但是對於大多數光耦合器(通常額定最大為50 mA)而言,20 mA不會成為問題,此外,這是 double 輸入電壓的問題,這可能不會發生IRL。

該系統用於汽車。是否需要以某種方式降低汽車電池的電流強度,以免炸毀組件?我是新來的。謝謝
-1
-1
那很棒。謝謝你的幫助。只是好奇,但是這樣的事情會起作用嗎? http://www.robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=zh-CN
@D.W .:使用光耦合器可以使電池與Arduino分開,但如果由電池供電,則兩個地都將連接。
@D.W。 -是的,看起來不錯。可以在[Sparkfun網站](https://www.sparkfun.com/products/9118)上找到相同的產品,此處提供了更多信息,例如,指向光耦合器數據表的鏈接。您有2個通道,可以根據需要使用另一個通道來感應另一個開關電壓。
@D.W。 - 別客氣。我當時只是在想:我是否需要補充答案,為什麼光耦合器可以在較高的電壓下正常工作,為什麼分壓器需要額外的保護,或者這很清楚?只問您是否需要其他信息。 (只是不要問錢;-)
@stevenvh也許您不介意,因為我對這個令人驚嘆的電子世界完全陌生。我是一名機械技術員,在大學期間我們幾乎沒有接觸過電氣,更不用說電子了。謝謝
@stevenvh也是一個簡單的問題:Arduino Uno手冊說,推薦的輸入電壓為7-12V,極限為6-20V。這是否意味著我可以直接用車載電池運行它?謝謝
@D.W。 -汽車的12 V可能會非常嘈雜,並且可能會有很高的尖峰電壓。為了防止Arduino的電壓調節器受到這些傷害,您可以在Arduino的電源輸入兩端放置一個[TVS](http://en.wikipedia.org/wiki/Transient_voltage_suppression_diode)(瞬態電壓抑制器二極管)。
-1
另一個注意事項:許多5V器件的邏輯高輸入值遠低於5V,我正在使用的PIC只需2V即可讀取邏輯1。因此,請使用帶有4.7K和1.8K電阻的簡單分壓器將下降12V至3.3V。如果您獲得的電壓高達18V,則您引腳的輸入仍將低於5V。
感謝@stevenvh的廣泛答复。我想知道是否可以使用[以下](http://imgur.com/v1LdKym)電路,如果我想為HIGH輸入提供HIGH輸出(此處也為12V,但也沒有汽車:))X1連接到GND當按下按鈕時,Y1指向Arduino引腳。
大聲笑,電子產品..使編程看起來非常簡單!
由於您在這裡匯總了所有選擇,因此[有意見](https://forum.arduino.cc/index.php?topic=153143.0#msg_1148863)可能會限制電流並讓AVR的箝位保護二極管保持電壓不變。建議串聯一個47k-100k的簡單電阻器。看起來像您的肖特基選項,但沒有外部肖特基。或不?您認為這是有效的選擇嗎?
也是您自己的帖子:) https://electronics.stackexchange.com/a/35817/180863,所以我想這回答了問題。
Michael Karas
2012-10-12 18:59:53 UTC
view on stackexchange narkive permalink

隔離12V開關信號的一種好方法是將其通過光電耦合器。電路的配置類似於以下內容。

enter image description here

圖中的Vi表示電路中由開關(S1)切換的12V。選擇R1可將通過光耦合器D1部分的電流限制在所選組件額定值範圍內的水平。

光電耦合器並不是世界上最快的組件,尤其是最便宜的組件,但是對於諸如人為控制的開關之類的動作較慢的情況,耦合器的速度無關緊要。

>
angelatlarge
2013-03-10 14:01:40 UTC
view on stackexchange narkive permalink

您還可以使用二極管和電阻,如下所示:

schematic

模擬該電路 –使用 CircuitLab sup>

我要使電阻器有些堅硬,否則會從該電路消耗很多功率。該電路的優點(與分壓器相比)在於,它並不關心您的原始電壓是12V,14V還是15V:它將為5V(取決於二極管,實際上為5.2-5.3V),無論輸入電壓。

相當聰明,電壓獨立性為+1!
小心引腳絕對最大額定值上的過電壓。例如,ATmega32u4數據表:任意引腳相對於地(8)的電壓:-0.5V至VCC + 0.5V。如果使用常規二極管,則如果使用小於170kOhm的電阻,則電壓將大於VCC + 0.5V。我認為肖特基二極管是最安全的。
cyberponk
2017-02-06 11:13:26 UTC
view on stackexchange narkive permalink

對於電壓獨立性,使用電阻器調節電流,使用齊納二極管調節電壓,如下所示:

schematic

模擬該電路 –使用 CircuitLab sup>

創建的原理圖

使用30k電阻器,它將輸出4.99V,在12Vin時僅使用約234uA。
在這種情況下:
R1消耗234uA x(12V-4.99V)= 1.64mW
D1消耗234uA x 4.99V = 1.17mW

總功耗:2.81mW(輸入高時)

對於可見的任何東西,我將串聯使用LED +電阻分壓器以在12V時提供5V信號,並將齊納二極管與分壓器和LED的下半部分並聯以防止過壓。這樣,當您有輸入信號時,LED會亮起並提供視覺反饋。
@GoswinvonBrederlow能否請您引出電路LED /二極管/電阻電路?
在上面的示意圖中,將R1設置為770 Ohm,並在齊納二極管上並聯一個330Ohm和一個紅色LED。然後,在12V輸入下,約9mA電流將流經LED,您將獲得5V輸出信號。如果通過齊納二極管輸入電壓升高,則會將輸出信號限制為5.1V,並保護arduino和LED。
Ton Nies
2015-12-30 21:21:35 UTC
view on stackexchange narkive permalink

有點晚了,但是在我的車上我使用的是LM7805。Works很棒而且很便宜。

不如2個電阻器或一個電阻器和一個二極管便宜。
@TonNies您猜錯了。OP不在為其控制器尋找電源電壓。更多關於信號調理。
使用LM7805進行12v信號電平轉換沒有問題。
@chugadie:但是,如果您只想為一個IO引腳降低12V電壓,那是一種非常不常見且相對“昂貴”的過大方法。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...