Arduino ha un valore di input nel pin disconnesso


9

Sono nuovo di Arduino. Forse è una domanda elementare ...

Se carico questo programma:

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

Ottengo un valore che varia tra 300 e 400. Quando penso che debba essere 0, essendo che non c'è nulla collegato a quell'input.

Qualche idea?? È un arduino UNO collegato al mio laptop tramite USB


Risposte:


12

Stai ricevendo qualcosa chiamato "input mobile". Se ci pensate, un dispositivo ideale per misurare l'ingresso avrà un'impedenza di ingresso molto elevata e quindi non rimuoverà molta elettricità dal pin.

Quindi ciò che accade è che gli elettroni casuali galleggiano sul (o fuori dal) pin (o dall'interferenza elettromagnetica nell'ambiente o dal contatto diretto con qualcosa con una leggera carica), e perché si comporta come una connessione di resistenza molto elevata a terra, questa carica si scaricherà molto lentamente. Quindi quando vai a misurarlo, sembra che ci sia un po 'di tensione lì! In generale, lo si collega a un dispositivo che fornisce una tensione oppure si inserisce una resistenza pull-up o pull-down e si adeguano le proprie aspettative su quel pin.

Spero che ciò aiuti e, in caso contrario, sono sicuro che qualcuno abbia un collegamento con un'altra persona che ha risposto a questa domanda in modo più competente (vedo nella sezione relativa almeno una domanda quasi identica ).


5
Curiosità: i documenti di Arduino suggeriscono di utilizzare il valore restituito di una analogReadchiamata su un pin inutilizzato come seme della randomSeedfunzione: arduino.cc/hu/Reference/RandomSeed
Chris Laplante

2
Ha! È abbastanza pulito, mi piace! Penserei che l'aggiunta di una piccola linea ondulata di filo alla tua breadboard e / o PCB potrebbe aiutare a ottenere un po 'più di casualità fintanto che hai evitato una lunghezza dell'antenna di 60Hz (solo per gli Stati Uniti) (quindi improvvisamente il rumore CA dominerebbe)
Kit Scuzz

3
Un approccio più solido (e salvaspazio) sarebbe quello di utilizzare il generatore di numeri casuali standard RFC 1149.5
Chris Laplante,

4

L'ingresso è "flottante", perché non è collegato nulla per "tirare" la tensione in un modo o nell'altro.
Questo è perfettamente normale. Se si collega un resistore di pull-down ad alta impedenza (diciamo 10k) dal pin a terra, lo interromperà facendo questo quando nulla è collegato (anche se non è necessario farlo in quanto non lo si leggerà quando nulla è collegato ;-))


La resistenza pull-down cambierà il segnale se collegata all'ADC?
user30878
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.