O Arduino possui um valor de entrada no pino desconectado

9

Eu sou novo no arduino. Talvez seja uma pergunta elementar ...

Se eu carregar este programa:

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

Eu recebo um valor que varia entre 300 e 400. Quando acho que deve ser 0, é que não há nada conectado a essa entrada.

Alguma ideia?? É um UNO arduino conectado ao meu laptop via USB

limoragni
fonte
Veja também: raspberrypi.stackexchange.com/q/14680
Hello World

Respostas:

12

Você está recebendo algo chamado "entrada flutuante". Quando você pensa sobre isso, um dispositivo ideal para medir a entrada terá uma impedância de entrada muito alta e, portanto, não removerá muita eletricidade do pino.

Então, o que acontece é que elétrons aleatórios flutuam para (ou fora) do pino (por interferência eletromagnética no ambiente ou por contato direto com algo com uma leve carga) e porque ele age como uma conexão de resistência muito alta a terra, essa carga será drenada muito lentamente. Assim, quando você mede, parece que há alguma tensão lá! Em geral, você conecta isso a algum dispositivo que fornece tensão ou coloca um resistor de pull-up ou pull-down e ajusta suas expectativas nesse pino.

Espero que ajude e, se não estiver, tenho certeza de que alguém tem um link para outra pessoa que respondeu a essa pergunta com mais competência (vejo na seção relacionada pelo menos uma pergunta quase idêntica ).

Kit Scuzz
fonte
5
Curiosidade: Os docs Arduino sugiro usar o valor de retorno de uma analogReadchamada em um pino não utilizado como semente para a randomSeedfunção: arduino.cc/hu/Reference/RandomSeed
Chris Laplante
2
Ha! Isso é muito legal, eu gosto! Eu acho que a adição de uma pequena linha de fio ondulado à sua placa de ensaio e / ou PCB pode ajudar a obter um pouco mais de aleatoriedade, desde que você evite um comprimento de antena de 60Hz (apenas nos EUA) (então, de repente, o ruído AC dominaria)
Kit Scuzz
3
A abordagem mais robusta (e economia de espaço) seria usar o RFC 1.149,5 padrão gerador de números aleatórios
Chris Laplante
4

A entrada é "flutuante", porque não há nada conectado para "puxar" a tensão de uma maneira ou de outra.
Isso é perfeitamente normal. Se você conectar um resistor pull-down de alta impedância (digamos 10k) do pino ao terra, ele o interromperá quando nada estiver conectado (embora não haja necessidade real de fazê-lo, pois você não o lerá quando não houver nada) conectado ;-))

Oli Glaser
fonte
O resistor de pull-down mudará o sinal se conectado ao ADC?
user30878