Arduino memiliki nilai input pada pin yang terputus

9

Saya baru mengenal Arduino. Mungkin pertanyaan mendasar ...

Jika saya memuat program ini:

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

Saya mendapatkan nilai yang bervariasi antara 300 dan 400. Ketika saya pikir itu harus 0, adalah bahwa tidak ada yang terhubung ke input itu.

Ada ide ?? Ini adalah arduino UNO yang terhubung ke laptop saya melalui USB

limoragni
sumber

Jawaban:

12

Anda mendapatkan sesuatu yang disebut "input mengambang". Ketika Anda memikirkannya, perangkat yang ideal untuk mengukur input akan memiliki impedansi input yang sangat tinggi, dan dengan demikian tidak akan menghilangkan banyak listrik dari pin.

Jadi yang terjadi adalah bahwa elektron acak mengapung ke (atau mematikan) pin (baik dari gangguan elektromagnetik di lingkungan atau dari kontak langsung dengan sesuatu dengan sedikit muatan), dan karena itu bertindak seperti koneksi resistensi yang sangat tinggi untuk tanah, muatan ini akan mengalir sangat lambat. Jadi ketika Anda mengukurnya, sepertinya ada beberapa tegangan di sana! Secara umum, Anda menghubungkan ini ke beberapa perangkat yang memberikan tegangan, atau Anda memasukkan resistor pull-up atau pull-down dan menyesuaikan harapan Anda pada pin itu.

Saya harap itu membantu dan jika tidak, saya yakin seseorang memiliki tautan ke orang lain yang telah menjawab pertanyaan ini dengan lebih kompeten (saya lihat di bagian terkait setidaknya satu pertanyaan yang hampir identik ).

Kit Scuzz
sumber
5
Fakta menyenangkan: Dokumen Arduino menyarankan penggunaan nilai pengembalian analogReadpanggilan pada pin yang tidak digunakan sebagai seed ke randomSeedfungsi: arduino.cc/hu/Reference/RandomSeed
Chris Laplante
2
Ha! Cukup rapi, saya suka! Saya akan berpikir bahwa menambahkan sedikit berlekuk kawat ke papan tempat memotong roti Anda dan / atau PCB mungkin membantu mendapatkan sedikit lebih banyak keacakan asalkan Anda menghindari panjang antena 60Hz (hanya perhatian AS) (kemudian tiba-tiba suara AC akan mendominasi)
Kit Scuzz
3
Pendekatan yang lebih kuat (dan hemat ruang) adalah menggunakan generator nomor acak standar RFC 1149.5
Chris Laplante
4

Inputnya adalah "mengambang", karena tidak ada yang terhubung untuk "menarik" tegangan satu arah atau yang lain.
Ini sangat normal. Jika Anda menghubungkan resistor pull-down impedansi tinggi (katakanlah 10k) dari pin ke ground, ia akan menghentikannya ketika tidak ada yang terhubung (walaupun tidak ada kebutuhan nyata untuk melakukannya karena Anda tidak akan membacanya ketika tidak ada yang terhubung ;-))

Oli Glaser
sumber
Apakah resistor pull-down akan mengubah sinyal jika terhubung ke ADC?
user30878