디지털 Arduino 핀에서 12V 입력을 어떻게 사용합니까?


38

Arduino Uno microcrontroller를 사용하여 12V 시스템 용 컨트롤러를 만들고 있습니다. 출력의 경우 릴레이 쉴드를 사용하여 12V 구성 요소를 전환합니다. 시스템의 일부 12V 구성 요소를 켜는 12V 토글 스위치가 있는데이 스위치의 트리거 신호를 사용하여 Arduino 디지털 입력으로 보내려고합니다. Arduino는 최대 5V 만 처리 할 수 ​​있다는 것을 알고 있습니다. 스위치에서 나오는 12V를 입력을 위해 5V로 낮추는 가장 좋은 방법은 무엇입니까?

편집 : 시스템은 자동차에 사용됩니다. 구성품을 폭파시키지 않도록 자동차 배터리의 전류량을 어떻게 낮추어야합니까?


3
자동차의 전류량은 중요하지 않습니다. 구성 요소는 필요한만큼만 전류를 사용합니다. 자동차 배터리는 스타터 모터에 필요한 것과 같은 수백 개의 암페어를 공급할 수 있습니다. 이것은 항상 수백 개의 암페어가 흐르고 물건을 손상시킬 수 있음을 의미하지는 않습니다. :)
KyranF

답변:


44

좋은 소식! 싸구려! :-)

간단한 저항 분배기는 12V를 Arduino가 소화 할 수있는 5V로 낮 춥니 다. 출력 전압은 다음과 같이 계산할 수 있습니다

VOUT=R2R1+R2VIN

10 kΩ 범위의 저항 값을 선택하는 것이 좋습니다. R2가 10kΩ이면 R1은 14kΩ이어야합니다. 이제 14kΩ은 표준 값이 아니지만 15kΩ입니다. 입력 전압은 5V 대신 4.8V이지만 Arduino는 여전히 높은 레벨로 간주합니다. 12V가 너무 높아야하는 경우에도 약간의 헤드 룸이 있습니다. 18kΩ도 여전히 충분히 높은 4.3V를 제공하지만 12V를 조금 낮게 생각해야합니다. 전압이 여전히 높은 것으로 보입니까? 나는 15 kΩ을 고수 할 것입니다.

편집하다
자동차 환경에 대해 언급 한 다음 추가 보호가 필요합니다. 자동차의 12V는 절대로 12V가 아니지만 대부분 공칭 12V보다 몇 볼트 높은 피크에서 대부분 더 높습니다. (실제로 공칭은 셀당 2.15V에서 12.9V와 비슷합니다.) 5V 제너를 배치 할 수 있습니다 제너의 5V보다 높은 전압을 차단해야합니다. 그러나 제너 전압은 전류에 따라 달라지며 낮은 입력 전류에서 저항은 낮은 전압에서 차단됩니다. 더 나은 솔루션은 Arduino의 입력과 5V 전원 사이에 쇼트 키 다이오드를 사용하는 것입니다. 그런 다음 약 5.2V보다 높은 입력 전압은 쇼트 키 다이오드를 전도시키고, 입력 전압은 5.2V로 제한됩니다.이를 위해서는 실제로 쇼트 키 다이오드가 필요합니다. 공통 PN 다이오드는 0입니다.

더 나은
Michael의 옵토 커플러는 약간 더 비싸지 만 좋은 대안입니다. 종종 옵토 커플러를 사용하여 입력과 출력을 분리하지만 원하는대로 입력을 보호하는 데 사용할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

작동 방식 : 입력 전류가 내부 적외선 LED를 비추어 포토 트랜지스터를 통해 출력 전류를 발생시킵니다. 전류 전송 비율에 대해 입력 및 출력 전류 간의 비율을 CTR 이라고 합니다. CNY17는 하면 4mA 출력 10mA 입력 수단을 필요 최소한 40 %의 CTR을 갖는다. 10mA 입력으로갑니다. 그런 다음 R1은 (12V-1.5V) / 10mA = 1kΩ이어야합니다. 출력 저항은 4mA에서 5V 강하를 유발해야하며, 5V / 4mA = 1250Ω이어야합니다. 조금 더 높은 값을 갖는 것이 좋습니다. 전압은 5V 이상 떨어지지 않습니다. 4.7kΩ은 전류를 약 1mA로 제한합니다.

Vcc는 Arduino의 5V 전원이며 Vout은 Arduino의 입력으로갑니다. 입력은 반전됩니다. 12V가 있으면 낮고 낮 으면 높을 것입니다. 원하지 않으면 옵토 커플러의 출력 위치와 풀업 저항을 교체 할 수 있습니다.

편집 2
광 커플러 솔루션이 과전압 문제를 어떻게 해결하지 못합니까? 저항 분배기는 비율 측정 방식입니다. 출력 전압은 입력의 고정 된 비율입니다. 12V 입력에서 5V 출력을 계산 한 경우 24V 입력은 10V 출력을 제공합니다. 보호 다이오드가 제대로 작동하지 않습니다.

옵토 커플러 회로에서 Arduino의 입력 핀에 연결되는 오른쪽의 전압이 5V보다 높지 않음을 알 수 있습니다. 옵토 커플러가 켜져 있으면 트랜지스터가 전류를 소비하므로 위의 예에서 4mA를 사용했습니다. 옴의 법칙 (현재 시간 저항 = 전압)으로 인해 1.2kΩ은 4.8V 전압 강하를 유발합니다. 그런 다음 출력 전압은 5V (Vcc)-4.8V 저항에서 0.2V가되며 저레벨입니다. 전류가 더 낮아지면 전압 강하도 작아지고 출력 전압이 상승합니다. 예를 들어 1mA 전류는 1.2V 강하를 유발하고 출력은 5V-1.2V = 3.8V가됩니다. 최소 전류는 0입니다. 그러면 저항을 가로 지르는 전압이없고 출력은 5V가됩니다. 최대 값입니다.

입력 전압이 너무 높아지면 어떻게됩니까? 실수로 12V 대신 24V 배터리를 연결하면 LED 전류가 두 배가되어 10mA ~ 20mA가됩니다. CTR이 40 %이면 계산 된 4mA 대신 8mA 출력 전류가 발생합니다. 1.2kΩ 저항을 통한 8mA는 9.6V 강하입니다. 그러나 음의 5V 전원으로 인해 불가능합니다. 여기서는 0V보다 낮을 수 없습니다. 따라서 광 커플러는 8mA를 매우 많이 사용하지만 저항은이를 제한합니다. 최대 5V가 통과 할 때의 최대 전류입니다. 그러면 출력은 실제로 0V가되고 전류 5V / 1.2kΩ = 4.2mA가됩니다. 따라서 출력 전류를 연결하는 전원 공급 장치는 그 이상으로 올라가지 않으며 전압은 0V와 5V 사이로 유지됩니다. 추가 보호가 필요하지 않습니다.

과전압이 예상되는 경우 옵토 커플러의 LED가 증가 된 전류를 처리 할 수 ​​있는지 확인해야하지만 20mA는 대부분의 옵토 커플러 (최대 50mA 정격)에서 문제가되지 않으며 그 외에는 두 배입니다. IRL이 발생하지 않는 입력 전압.


이 시스템은 자동차 용입니다. 부품을 폭파시키지 않도록 자동차 배터리의 전류량을 어떻게 낮추어야합니까? 나는 이것에 새로운입니다. 감사합니다
DW

@DW Uh-oh, 차! :-(. 답변을 업데이트하겠습니다.
stevenvh

@DW-아니요, 자동차 배터리 용량은 중요하지 않습니다. 전류는 전압 (12V)과 저항 (총 25kohm)에 의해 결정됩니다. 옴의 법칙 에 따르면 따라 전류는 12 V / 25 kohm = 0.5 mA입니다. 배터리가 40 Ah 유형인지 400 Ah 유형인지는 중요하지 않습니다. 저항은 더 이상 허용하지 않습니다.
stevenvh

잘됐다. 당신의 도움을 주셔서 감사합니다. 궁금한 점이 있지만 이런 식으로 작동합니까? robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=en-US
DW

2
@stevenvh 감사합니다 Steve. 자신감이 생기면 전자 제품을 처음 접하는 사람에게 호의를 표하기를 기대합니다. 감사
DW

15

12V 스위치 신호를 분리하는 좋은 방법은 옵토 커플러를 통과시키는 것입니다. 회로는 다음과 유사하게 구성됩니다.

여기에 이미지 설명을 입력하십시오

다이어그램의 Vi는 스위치 (S1)에 의해 스위칭되는 회로의 12V를 나타냅니다. R1을 선택하여 옵토 커플러의 D1 부분을 통과하는 전류를 선택한 구성 요소의 정격 내에있는 레벨로 제한하십시오.

옵토 커플러는 세계에서 가장 빠른 구성 요소는 아니지만 가장 저렴한 구성 요소는 아니지만 사람이 제어하는 ​​스위치와 같은 느린 동작의 경우 커플러의 속도는 거의 문제가되지 않습니다.


15

다음과 같이 다이오드와 저항을 사용할 수도 있습니다.

개략도

이 회로를 시뮬레이션 – 회로도를 사용하여 생성 CircuitLab을

저항을 상당히 뻣뻣하게 만들지 않으면이 회로에서 많은 전력을 흡수합니다. 이 회로의 장점은 전압 분배기와 비교할 때 원래 전압이 12V, 14V 또는 15V인지 여부에 신경 쓰지 않는다는 것입니다 .5V (실제로 다이오드에 따라 5.2-5.3V)입니다 입력 전압.


전압 독립성에 대해 +1입니다.
Florian Castellane

5
핀 절대 최대 정격의 과전압에주의하십시오. 예를 들어, ATmega32u4 데이터 시트 : Ground (8) 관련 핀의 전압 : -0.5V ~ VCC + 0.5V 일반 다이오드를 사용하는 경우 170kOhm보다 작은 저항을 사용하면 전압이 VCC + 0.5V보다 높아집니다. 쇼트 키 다이오드가 가장 안전하다고 생각합니다.
cyberponk 2012 년

13

전압 독립성을 위해 저항을 사용하여 전류를 조정하고 제너를 사용하여 전압을 조정하십시오.

개략도

이 회로 시뮬레이션 CircuitLab을 사용하여 작성된 회로도

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가 켜지고 시각적 피드백을 제공합니다.
Goswin von Brederlow

@GoswinvonBrederlow 회로 LED / 다이오드 / 저항 회로를 꺼낼 수 있습니까?
지글 지글

위의 회로도에서 R1을 770 Ohm으로 설정하고 330Ohm과 빨간색 LED를 Zener 다이오드에 병렬로 추가하십시오. 그런 다음 12V 입력에서 ~ 9mA가 LED를 통해 흐르고 5V 출력 신호를 얻습니다. 제너 다이오드를 통해 입력 전압이 상승하면 출력 신호를 5.1V로 제한하고 arduino와 LED를 모두 보호합니다.
Goswin von Brederlow

-2

조금 늦었지만 내 차에는 LM7805를 사용합니다. 잘 작동하고 저렴합니다.


1
2 개의 저항 또는 저항과 다이오드만큼 저렴하지는 않습니다.
Dave Tweed

7
@TonNies 질문이 잘못되었습니다. OP는 컨트롤러의 공급 전압을 찾지 않습니다. 신호 컨디셔닝에 대한 자세한 내용입니다.
Ariser

1
12V 신호 레벨 시프 팅에 LM7805를 사용하는 데 아무런 문제가 없습니다.
chugadie

1
@chugadie : 그러나 원하는 모든 것이 하나의 IO 핀에 12V를 낮추는 것이라면 매우 드물고 비교적 "비싼"과도한 접근 방식입니다.
Rev1.0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.