Arduino ma wartość wejściową w rozłączonym pinie


9

Jestem nowy w Arduino. Może jest elementarne pytanie ...

Jeśli załaduję ten program:

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);
 }

Otrzymuję wartość, która waha się między 300 a 400. Kiedy myślę, że musi to być 0, ponieważ nic nie jest podłączone do tego wejścia.

Jakieś pomysły?? To arduino UNO podłączone do mojego laptopa przez USB


Odpowiedzi:


12

Otrzymujesz coś o nazwie „zmiennoprzecinkowe”. Kiedy się nad tym zastanowić, idealne urządzenie do pomiaru wejścia będzie miało bardzo wysoką impedancję wejściową, a zatem nie usunie zbyt dużej energii elektrycznej ze styku.

Tak więc dzieje się tak, że przypadkowe elektrony unoszą się na szpilce (lub poza nią) (albo z powodu zakłóceń elektromagnetycznych w środowisku, albo z bezpośredniego kontaktu z czymś z niewielkim ładunkiem) i ponieważ działa jak połączenie o bardzo wysokiej rezystancji z ziemia, ładunek ten odpływa bardzo powoli. Kiedy więc zmierzysz, wygląda na to, że jest tam napięcie! Zasadniczo albo podłączasz to do jakiegoś urządzenia, które dostarcza napięcie, albo wkładasz rezystor podwyższający lub obniżający i dostosowujesz swoje oczekiwania do tego pinu.

Mam nadzieję, że to pomoże, a jeśli nie, jestem pewien, że ktoś ma link do innej osoby, która odpowiedziała na to pytanie bardziej kompetentnie (widzę w powiązanej sekcji co najmniej jedno prawie identyczne pytanie ).


5
Ciekawostka: Dokumenty Arduino sugerują użycie wartości zwracanej analogReadwywołania na nieużywanym pinie jako zarodkurandomSeed funkcji: arduino.cc/hu/Reference/RandomSeed
Chris Laplante

2
Ha! To całkiem miłe, podoba mi się! Pomyślałbym, że dodanie trochę krętej linii drutu do płyty montażowej i / lub płytki PCB może pomóc w uzyskaniu nieco większej losowości, o ile unikniesz długości anteny 60 Hz (dotyczy tylko USA) (wtedy nagle dominować będą szumy prądu przemiennego)
Zestaw Scuzz

3
Bardziej niezawodnym (i oszczędzającym miejsce) podejściem byłoby użycie standardowego generatora liczb losowych RFC 1149.5
Chris Laplante

4

Wejście jest „pływające”, ponieważ nic nie jest podłączone do „ciągnięcia” napięcia w taki czy inny sposób.
To jest całkowicie normalne. Jeśli podłączysz rezystor obniżający o wysokiej impedancji (powiedzmy 10k) od styku do uziemienia, przestanie to robić, gdy nic nie jest podłączone (chociaż nie ma takiej potrzeby, ponieważ nie będziesz go czytać, gdy nic nie jest podłączony ;-))


Czy rezystor obniżający zmieni sygnał, jeśli jest podłączony do ADC?
user30878,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.