Gunakan 10 kΩ, ini nilai yang bagus.
Untuk lebih detail, kita harus melihat apa yang dilakukan pullup. Katakanlah Anda memiliki tombol yang ingin Anda baca dengan mikrokontroler. Tombol adalah saklar SPST (Single Pole Single Throw) sesaat. Ini memiliki dua titik koneksi yang terhubung atau tidak. Ketika tombol ditekan, kedua titik terhubung (saklar ditutup). Ketika dirilis, mereka tidak terhubung (sakelar terbuka). Mikrokontroler tidak secara inheren mendeteksi koneksi atau pemutusan. Yang mereka rasakan adalah tegangan. Karena saklar ini hanya memiliki dua keadaan, masuk akal untuk menggunakan input digital, yang dirancang untuk hanya di salah satu dari dua keadaan. Mikro dapat merasakan di mana input digital berada secara langsung.
Pullup membantu mengubah koneksi buka / tutup sakelar ke tegangan rendah atau tinggi yang dapat dirasakan mikrokontroler. Satu sisi saklar terhubung ke ground dan yang lainnya ke input digital. Ketika sakelar ditekan, saluran dipaksa rendah karena sakelar pada dasarnya memendekkannya ke ground. Namun, ketika sakelar dilepaskan, tidak ada yang mengarahkan saluran ke tegangan tertentu. Itu hanya bisa tetap rendah, mengambil sinyal terdekat lainnya dengan kopling kapasitif, atau akhirnya melayang ke tegangan tertentu karena sedikit kebocoran arus melalui input digital. Tugas resistor pullup adalah memberikan tingkat tinggi yang dijamin positif saat sakelar terbuka, tetapi tetap memungkinkan sakelar tersebut untuk mempersingkat jalur ke ground dengan aman saat ditutup.
Ada dua persyaratan utama yang bersaing pada ukuran resistor pullup. Itu harus cukup rendah untuk secara solid menarik garis tinggi, tetapi cukup tinggi untuk tidak menyebabkan terlalu banyak arus mengalir ketika saklar ditutup. Keduanya obyektif subyektif dan kepentingan relatif mereka tergantung pada situasi. Secara umum, Anda membuat pullup cukup rendah untuk memastikan garis tinggi ketika saklar terbuka, mengingat semua hal yang mungkin membuat garis rendah jika tidak.
Mari kita lihat apa yang diperlukan untuk menarik garis. Melihat hanya pada persyaratan DC mengungkap arus bocor dari jalur input digital. Input digital ideal memiliki impedansi tak terbatas. Yang nyata tidak, tentu saja, dan sejauh mana mereka tidak ideal biasanya dinyatakan sebagai arus bocor maksimum yang dapat keluar atau masuk ke pin. Katakanlah mikro Anda ditentukan untuk kebocoran maksimum 1 μA pada pin input digitalnya. Karena pullup harus menjaga garis tetap tinggi, kasus terburuk adalah mengasumsikan pin terlihat seperti sink arus 1 μA ke ground. Jika Anda menggunakan pullup 1 MΩ, misalnya, maka 1 μA akan menyebabkan 1 Volt melintasi resistor 1 MΩ. Katakanlah ini adalah sistem 5V, jadi itu berarti pin hanya dijamin hingga 4V. Sekarang Anda harus melihat spesifikasi input digital dan melihat apa persyaratan tegangan minimum untuk level logika yang tinggi. Itu bisa 80% dari Vdd untuk beberapa micros, yang akan menjadi 4V dalam kasus ini. Oleh karena itu penarikan 1 MΩ tepat di margin. Anda memerlukan setidaknya sedikit lebih sedikit dari itu untuk memastikan perilaku yang benar karena pertimbangan DC.
Namun, ada pertimbangan lain, dan ini lebih sulit untuk diukur. Setiap node memiliki beberapa kopling kapasitif untuk semua node lain, meskipun besarnya kopling jatuh dengan jarak sedemikian rupa sehingga hanya node terdekat yang relevan. Jika node-node lain ini memiliki sinyal padanya, sinyal-sinyal ini dapat berpasangan dengan input digital Anda. Penarikan nilai yang lebih rendah membuat impedansi saluran lebih rendah, yang mengurangi jumlah sinyal liar yang akan diambilnya. Ini juga memberi Anda level DC minimum yang dijamin lebih tinggi terhadap arus bocor, jadi ada lebih banyak ruang antara level DC dan di mana input digital mungkin menginterpretasikan hasilnya sebagai logika rendah, bukan logika tinggi yang dimaksud. Jadi berapa banyak yang cukup? Jelas bahwa penarikan 1 MΩ dalam contoh ini tidak cukup (resistansi terlalu tinggi). Hampir tidak mungkin untuk menebak sambungan ke sinyal terdekat, tapi saya ingin setidaknya urutan margin besarnya di atas kasus DC minimum. Itu berarti saya ingin pullup 100 kΩ atau lebih rendah setidaknya, meskipun jika ada banyak suara di sekitar saya ingin itu lebih rendah.
Ada pertimbangan lain yang mendorong pullup lebih rendah, dan itu adalah waktu naik. Jalur ini akan memiliki beberapa kapasitansi liar ke tanah, sehingga akan secara eksponensial membusuk ke nilai pasokan daripada langsung pergi ke sana. Katakanlah semua kapasitansi liar bertambah hingga 20 pF. Itu kali penarikan 100 kΩ adalah 2 μs. Dibutuhkan 3 konstanta waktu untuk mencapai 95% dari nilai settling, atau 6 μs dalam kasus ini. Itu tidak ada konsekuensi dalam waktu manusia jadi tidak masalah dalam contoh ini, tetapi jika ini adalah jalur bus digital yang ingin Anda jalankan pada kecepatan data 200 kHz itu tidak akan berhasil.
Sekarang mari kita lihat pertimbangan lain yang bersaing, yang merupakan arus terbuang saat saklar ditekan. Jika unit ini kehabisan daya saluran atau menangani daya yang besar, beberapa mA tidak masalah. Pada 5V dibutuhkan 5 kΩ untuk menggambar 1 mA. Itu sebenarnya "banyak" saat ini dalam beberapa kasus, dan jauh lebih dari yang dibutuhkan karena pertimbangan lain. Jika ini adalah perangkat yang bertenaga baterai dan sakelarnya bisa hidup untuk sebagian besar waktu, maka setiap μA mungkin penting dan Anda harus memikirkannya dengan sangat hati-hati. Dalam beberapa kasus, Anda dapat mencicipi sakelar secara berkala dan hanya mengaktifkan pullup untuk waktu yang singkat di sekitar sampel untuk meminimalkan penarikan saat ini.
Selain pertimbangan khusus seperti operasi baterai, 100 kΩ adalah impedansi yang cukup tinggi untuk membuat saya gugup menerima suara. Arus 1 mA terbuang sia-sia saat sakelar dinyalakan sepertinya tidak perlu besar. Jadi 500 µA, yang berarti impedansi 10 kΩ hampir benar.
Seperti yang saya katakan, gunakan 10 kΩ. Itu nilai yang bagus.