Arduino는 분리 된 핀에 입력 값을 가지고 있습니다


9

나는 arduino를 처음 사용합니다. 아마도 기본적인 질문 일 것입니다 ...

이 프로그램을로드하면 :

int mval = 0;
void setup() {
  Serial.begin(9600);
  // set up the LCD's number of columns and rows: 

}

void loop() {

  mval = analogRead(1);
  Serial.println(mval);

  delay(1000);
 }

300과 400 사이의 값을 얻습니다. 0이되어야한다고 생각하면 해당 입력에 연결된 것이 없다는 것입니다.

어떤 아이디어 ?? USB를 통해 랩톱에 연결된 arduino UNO입니다.


답변:


12

"부동 입력"이라는 것이 있습니다. 당신이 그것에 대해 생각할 때, 입력을 측정하기위한 이상적인 장치는 매우 높은 입력 임피던스를 가지므로 핀에서 많은 양의 전기를 제거하지 못할 것입니다.

따라서 발생하는 임의의 전자는 (전자 환경에서 전자기 간섭이나 약간의 전하가있는 물체와 직접 접촉하여) 핀에 닿거나 튀어 나오는 것입니다. 이 충전은 매우 느리게 방전됩니다. 따라서 측정하려고 할 때 전압이 약간있는 것처럼 보입니다! 일반적으로 전압을 제공하는 일부 장치에 연결하거나 풀업 또는 풀다운 저항을 넣고 해당 핀에 대한 기대치를 조정합니다.

나는 그것이 도움이되기를 바랍니다. 그렇지 않으면 누군가이 질문에 더 유능하게 대답 한 다른 사람과의 링크가 있는지 확신합니다 (관련 섹션에서 적어도 하나의 거의 동일한 질문 참조 ).


5
재미있는 사실 : Arduino 문서는 사용 analogRead되지 않는 핀에 대한 호출 의 반환 값을 randomSeed함수 의 시드로 사용하도록 제안 합니다. arduino.cc/hu/Reference/RandomSeed
Chris Laplante

2
하아! 꽤 깔끔합니다. 좋아요! 브레드 보드 및 / 또는 PCB에 약간의 배선을 추가하면 60Hz 안테나 길이를 피하는 한 (임의의 경우에만 AC 노이즈가 우세 함)
키트의

3
보다 강력한 (및 공간 절약) 접근 방식은 RFC 1149.5 표준 난수 생성기
Chris Laplante

4

입력은 "부동"입니다. 전압을 어느쪽으로 든 "풀"하는 데 연결된 것이 없기 때문입니다.
이것은 완벽하게 정상입니다. 핀에서 접지까지 고 임피던스 풀다운 저항 (예 : 10k)을 연결하면 아무 것도 연결되어 있지 않을 때이를 방지합니다 (아무것도 없을 때 읽을 필요가 없으므로 실제로 할 필요는 없지만) 연결 ;-))


ADC에 연결된 경우 풀다운 저항이 신호를 변경합니까?
user30878
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.