디지털 읽기 직렬 자습서-저항 값 계산


9

Arduino Digital Read Serial 튜토리얼은 간단한 버튼의 배선을 안내합니다. 내 질문은 저항을 중심으로합니다.

왜 저항이 필요한가요?

나는 이것을 이해한다고 생각하지만, 내가 틀렸다면 나를 교정하십시오. 입력 핀이 낮은 신호를 읽고 플로팅되지 않도록하려면 버튼을 누르지 않을 때 핀을 접지에 연결해야합니다. 버튼을 누르면 핀과 접지 모두에 5V 신호가 흐릅니다. Kirchhoff의 전압 법칙에 따르면 폐회로의 총 전압은 0과 같아야하므로 접지에 직접 흐르는이 5V를 처리해야합니다. 그래서 우리는 버튼과 접지 사이에 저항을 배치합니다.

저항 값은 어떻게 선택 되었습니까?

이것이 내가 확실하지 않은 것입니다. 옴의 법칙에 따르면 ...

resistance = voltage / current

이것은 5V 전원이며 Arduino Uno 사양에 따르면 핀은 40mA의 DC 전류를 제공합니다. 그래서..

resistance = 5V / 0.04A = 125 Ohms

에서 디지털 읽기 직렬 튜토리얼, 왜 우리는 10K 옴 저항을해야합니까? 그것은 과잉 방법입니다. 또 다른 질문으로 이어질 것 : 당신의 유일한 목표가 전압을 없애는 것이라면, 너무 많은 저항을 할 수 있습니까?

모든 의견에 미리 감사드립니다!

답변:


6

당신은 매우 가깝습니다. 저항은 풀다운 저항의 역할을합니다. 입력 핀이 부동 상태 인 경우 이는 임의의 정적 잡음을 포착하는 안테나 일뿐입니다. 핵심은 양극이 공급 될 때 (버튼을 누름으로써) 양극이 풀다운 저항을 "압축"하여 입력 핀이 양극을 읽도록하는 것입니다.

저항이 없으면 입력 핀이 양의 값 또는 음의 값을 선호하지 않는 직접 경로의 중간에서 읽습니다. 발생하는 직접적인 단락 외에도, arduino가 읽은 상태는 전원 공급 장치의 임의 또는 일부 속성 일 것으로 의심됩니다. 아마 여전히 땅을 읽을 것입니다.

저항을 사용하면 부하 저항 전에 신호를 양의 값으로 직접 연결하여 읽습니다. 이런 식으로 HIGH 신호를 얻을 수 있습니다.

저항의 정확한 크기는 거의 영향을 미치지 않습니다. 너무 작고 전류를 낭비하지만 너무 많은 저항은 효과적으로 접지를 다시 연결 해제하는 것입니다. 그 사이에 잘 ​​작동하는 매우 넓은 범위의 값이 있습니다.

arduino 핀이 입력 모드로 설정되면 효과적으로 전류를 공급하지 않습니다. 100 megaOhm 저항과 직렬로 연결될 수 있습니다. 자세한 내용은 http://arduino.cc/en/Tutorial/DigitalPins 를 참조하십시오.


2
여기서 중요한 것은 저항을 사용하지 않으면 스위치를 닫을 때 +5 볼트를 접지로 단락 시켰다는 것입니다. 직접 단락으로 인해 전원 공급 장치에 과부하가 걸리고 전원 공급 장치의 보호 회로가 트립되어 전체 Arduino가 종료됩니다. 전류 흐름을 낮게 유지하기에 충분한 임피던스의 저항이 필요합니다. 나는 일반적으로 100k 저항을 사용하는데, 스위치가 열려있을 때 입력 신호를 0 볼트로 끌어 올리기에 충분하고 .00005 pas 만 흐르게한다. 10k 저항도 작동하지만 10 배나 많은 전류가 흐를 수 있습니다.
Duncan C

2

왜 저항이 필요한가요?

Arduino 입력은 저항이 매우 높습니다. Atmega328의 데이터에 따르면 ADC에 대해 100 MOhm이 있다고합니다. 이러한 높은 값은 좋지만 기생 효과 (저항, 인덕턴스, 커패시턴스)를 처리하는 데에도 단점이 있습니다. 이러한 효과는 정전 용량 센서 로도 사용할 수 있습니다 .

저항 값은 어떻게 선택 되었습니까?

저항은 입력 저항보다 작은 임의의 값을 가져야합니다. 10k 이상은 입력 누설을 비활성화하는 데 좋습니다.

그러나 내부 풀업 저항을 사용할 때 저항을 제거 할 수도 있습니다. 이 경우 부정적인 논리를 처리합니다.

pinMode(3, INPUT);
digitalWrite(3, HIGH);

핀 3에서 측정 HIGH하고 버튼을 핀과 접지에 연결해야합니다. 내부 I / 0 풀업 저항의 값은 50k입니다.


1

풀다운 저항이 왜 필요한지에 대한 몇 가지 좋은 대답을 이미 얻었습니다.

요약하자면, 입력을 접지에 연결하여 입력이 높고 낮은 사이에서 반 무작위로 부동하지 않도록해야합니다. 스위치를 닫을 때 + 5V 전원과 접지 사이에 단락이 발생하지 않도록 저항을 사용합니다.

그러나 또 다른 요점. Arduino의 입력에는 소프트웨어로 제어되는 내부 풀업 저항 옵션이 포함되어 있습니다. 먼저 핀을 입력으로 설정 한 다음 해당 포트에 HIGH 값을 쓰면 풀업 저항이 활성화됩니다. 아무것도 연결되어 있지 않으면 핀이 HIGH로 읽 힙니다.

그런 다음 + 5V 대신 스위치를 접지에 연결할 수 있습니다. 그런 다음 HIGH 값을 누르지 않은 상태로, LOW 값을 누른 상태로 처리하도록 코드 논리를 변경해야합니다. 외부 저항이 필요 없으므로 배선을 약간 단순화 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.