Kapan harus menggunakan resistor pull-down vs. pull-up

42

Setelah belajar dan bereksperimen dengan mikrokontroler, saya memahami konsep resistor pull-up- dan pull-down. Saya sekarang mengerti kapan dan bagaimana menggunakannya, dan bagaimana cara kerjanya. Saya terutama menggunakan pull-up karena saya diajari, tetapi selalu tampak sedikit terbelakang bagi saya, karena menutup saklar menetapkan input MCU ke RENDAH. Saya pikir akan lebih masuk akal untuk menggunakan resistor pull-down, sehingga inputnya RENDAH ketika saklar terbuka, tapi itu hanya cara berpikir saya.

Haruskah saya menarik input lemparan tunggal ke atas atau ke bawah? Kapan menarik lebih disukai daripada menarik ke atas dan sebaliknya?

osvein
sumber
3
Sebagai lebah baru (lainnya) elektronik, saya harus mengatakan bahwa pertanyaan ini sama sekali tidak bodoh. Bukan menjadi saya juga tidak tahu, tetapi karena: "Dilihat: 1989 kali".
steenhulthin
* karena * 12998 kali
Mike Causer

Jawaban:

29

Jawabannya tergantung pada konfigurasi "default" yang Anda inginkan. Misalnya, Anda memiliki MOSFET saluran-hilir, dan Anda menginginkannya dinonaktifkan secara default. Maka Anda akan menggunakan resistor pull-down untuk memastikan perilaku ini jika input menjadi impedansi tinggi.

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Di sisi lain, misalkan Anda memiliki MOSFET saluran P hulu, dan ingin itu dinonaktifkan secara default. Kali ini resistor pull up diperlukan untuk membuat perilaku ini.

skema

mensimulasikan rangkaian ini

Ada juga case alternatif di mana Anda ingin perangkat menjadi default-on, dalam hal ini dua case di atas akan terbalik (pull-up untuk MOSFET saluran-N, pull-down untuk MOSFET saluran-P).

Beberapa pertimbangan lain:

  1. Garis I2C menentukan resistor pull-up karena perangkat "diharapkan" memiliki saluran terbuka ke tanah, dan karenanya perlu beberapa cara untuk meningkatkan potensi saluran.

  2. Komparator analog biasanya dikonfigurasikan sebagai perangkat drainase terbuka, dan karenanya juga perlu menarik resistor untuk mendapatkan output potensial yang tinggi.

  3. Anda dapat menggambar lebih banyak saat ini menggunakan resistor pullup / pull-down, tergantung pada apa yang terhubung ke input / output.

  4. Konfigurasi mana pun dapat bekerja dengan baik di aplikasi Anda (mis. Tidak ada keuntungan yang signifikan di satu sisi atau yang lain).

... Dan sejumlah alasan khusus aplikasi mengapa satu konfigurasi mungkin lebih disukai.

helloworld922
sumber
16

Jika sinyal belum memiliki spesifikasi, gunakan yang mana yang paling masuk akal bagi Anda. Ini adalah pilihan Anda untuk membuat input aktif-tinggi atau aktif-rendah .

Jika ini tombol, pastikan untuk menggunakan sirkuit debounce (atau melakukannya dalam perangkat lunak).

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Samuel
sumber
+1 untuk satu-satunya perbandingan berdampingan aktif-tinggi vs aktif-rendah yang pernah saya lihat. Bagus, mengklarifikasi hal-hal.
TomServo
15

Jika desain sirkuit Anda sedemikian rupa sehingga Anda dapat memilih - dengan kata lain Anda tidak diharuskan oleh sisa rangkaian untuk menggunakan tarikan ke atas atau ke bawah - maka Anda harus mempertimbangkan keselamatan dan keamanan jika terjadi kegagalan.

Jika mikrokontroler Anda gagal, atau hanya output yang gagal, tarikan ke atas atau ke bawah akan berlaku. Bagaimana ini akan mengubah operasi perangkat Anda? Apakah ini akan membahayakan pengguna - misalnya dengan memaksa elemen pemanas? Apakah akan memengaruhi keamanan, seperti menonaktifkan kunci pintu?

Tarik ke atas / ke bawah resistor menentukan status default kawat. Memutuskan status default tergantung pada keselamatan, keamanan, dan akhirnya fungsi sirkuit yang diinginkan.

Adam Davis
sumber
5

Jika Anda bekerja dengan Arduino / ATmega328 Anda dapat menggunakan resistor pull-up bawaan .

Ada 20K resistor pullup yang dibangun ke dalam chip Atmega yang dapat diakses dari perangkat lunak. Resistor pull-in bawaan ini diakses dengan mengatur pinMode () sebagai INPUT_PULLUP. Ini secara efektif membalikkan perilaku mode INPUT, di mana TINGGI berarti sensor mati, dan RENDAH berarti sensor menyala.

Nilai dari pullup ini tergantung pada mikrokontroler yang digunakan. Pada kebanyakan papan berbasis AVR, nilainya dijamin antara 20kΩ dan 50kΩ. Di Arduino Due, jaraknya antara 50kΩ dan 150kΩ. Untuk nilai persisnya, lihat lembar data mikrokontroler di papan Anda.

Saat menghubungkan sensor ke pin yang dikonfigurasi dengan INPUT_PULLUP, ujung lainnya harus terhubung ke ground. Dalam kasus sakelar sederhana, ini menyebabkan pin membaca TINGGI saat sakelar terbuka, dan RENDAH saat sakelar ditekan.

Raspberry Pi juga memilikinya .

laktak
sumber
4

Anda sering ingin pull-up atau down - sering down - pada output perangkat yang dapat diprogram seperti mikrokontroler untuk menentukan keadaan mereka selama urutan peningkatan daya. Keluaran semacam itu seringkali memiliki impedansi daya yang tinggi, dan perangkat yang terhubung dapat memperoleh sinyal yang tidak diinginkan jika ini tidak dilakukan. Jika misalnya beberapa persediaan terlibat, yang terbaik adalah merancang setiap bagian dengan aman tanpa volt pada input dan menggunakan pull-down.

Sedikit lebih tidak jelas daripada jawaban lain, tetapi saya telah melihat contoh-contoh yang melibatkan asap biru dan ancaman tindakan hukum.

Dave B
sumber
Klarifikasi: pertanyaannya bukanlah mengapa seseorang harus menggunakan resistor pull-up atau pull-down, tetapi apakah seseorang harus menarik atau menurunkan.
osvein