Lewati ke isi
Pull-up Resistor

Pull-Up Resistor

Pull-up Resistor sangat umum digunakan pada mikrokontroler (MCU) atau pada perangkat logika digital (digital logic device). Pull-up resistor sering digunakan ketika berinteraksi dengan tombol atau saklar input. Pull-up resistor memperoleh bias pin-input ketika saklar terbuka. Dan itu akan melindungi sirkuit dari hubungan pendek ketika saklar ditutup. Artikel kali ini akan membahas kapan dan dimana harus menggunakan pull-up resistor, melakukan perhitungan sederhana untuk menunjukan mengapa pull-up resistor itu penting.

Pull-Up Resistor pada ATMega328


Apa Pull-up Resistor?

Anggap saja kita memiliki MCU dengan salah satu pin dikonfigurasi sebagai input. Jika tidak ada yang terhubung ke pin tersebut dan program membaca keadaan pin ini, apakah pin ini ada pada posisi HIGH (mendekati ke VCC) atau pada posisi LOW (mendekati ke Ground)? Hal ini merupakan keadaan yang sulit untuk tebak. Fenomena seperti ini disebut sebagai floating (mengambang). Untuk mencegah keadaan yang tidak diketahui ini, pull-up atau pull-down resistor akan memastikan bahwa pin tersebut dalam keadaan high atau low, dan itu menggunakan sejumlah arus yang rendah.

Untuk mempermudah pemahaman, kita akan memfokuskan pada pembahasan pull-up resistor karena hal ini lebih umum dan lebih sering digunakan daripada pull-down resistor. Pull-up dan pull-down resistor beroperasi dengan menggunakan konsep yang sama, perbedaannya pull-up resistor terhubung ke sumber tegangan (biasanya 3.3V atau 5V yang sering digunakan sebagai VCC) dan pull-down resistor terhubung ke ground. Pull-up resistor sering digunakan bersama dengan tombol atau saklar (switch).

Pull-Up Resistor dan Saklar pada MCU

Dengan pull-up resistor, pin input akan terbaca high saat tombol tidak ditekan. Dengan kata lain, sejumlah kecil arus mengalir antara VCC dan pin input (tidak ke ground), sehingga pin input dibaca mendekati VCC. Ketika tombol ditekan, maka akan menghubungkan pin input langsung ke ground. Arus mengalir melalui resistor ke ground, sehingga pin input akan terbaca dalam keadaan low. Perlu diingat, jika resistor itu tidak ada, tombol akan menghubungkan VCC ke ground, keadaan ini sangat buruk dan juga sering disebut short (hubungan singkat).

Jadi berapa nilai resistor yang harus pilih? Jawaban singkat dan mudah bahwa nilai untuk pull-up resistor adalah 10kOhm. Nilai resistor yang rendah disebut strong pull-up (banyak mengalirkan arus), nilai resistor yang tinggi disebut weak pull-up (sedikit mengalirkan arus).

Pull-Up Resistor dan Internal Resistor sebagai pembagi tegangan

Nilai dari pull-up resistor harus dipilih untuk memenuhi dua kondisi:

  1. Kondisi 1: Ketika tombol ditekan, pin input ditarik ke kondisi low (rendah). Nilai resistor R1 mengontrol tegangan yang mengalir dari VCC ke tombol, dan kemudian ke ground.

  2. Kondisi 2: Ketika tombol tidak ditekan, pin input ditarik ke kondisi high (tinggi). Nilai pull-up resistor mengontrol tegangan pada pin input.

Pada kondisi 1, kita tidak ingin nilai resistor terlalu rendah. Semakin rendah resistansinya, semakin besar daya yang akan digunakan ketika tombol tekan. Biasanya kita membutuhkan nilai resistor yang besar (10kΩ), tetapi jangan terlalu besar pula untuk mencegah bentrok dengan kondisi 2. Resistor 4MOhm mungkin saja dapa bekerja sebagai pull-up, tetapi resistansi yang terlalu besar tidak mungkin menjalankan tugasnya 100% sepanjang waktu.

Pada kondisi 2 kita harus menggunakan resistor pull-up (R1) yang urutan besarnya (1/10) kurang dari impedansi input R2 pada pin input. Sebuah pin input pada mikrokontroler memiliki impedansi yang dapat bervariasi dari 100kΩ-1MΩ. Jadi, ketika tombol tidak ditekan, arus dengan jumlah yang sangat kecil mengalir dari VCC melalui R1 ke pin input. Pull-up resistor (R1) dan impedansi pin input (R2) membagi tegangan, dan tegangan yang dibutuhkan cukup tinggi untuk pin input agar terbaca pada kondisi high (tinggi).

Misalnya, jika kita menggunakan resistor 1MΩ untuk pull-up R1 dan impedansi input pin R2 diatas urutan 1MΩ (membentuk pembagi tegangan), tegangan pada pin input akan menjadi sekitar setengah dari VCC, dan mikrokontroler mungkin tidak akan me-register pin berada dalam keadaan high. Jika pada sistem 5V, apakah MCU akan membaca input pin jika tegangan 2.5V? Apakah high atau low? MCU tidak tahu dan kita juga mungkin akan membaca high atau low. Nilai resistansi dari 10k sampai 100kOhm untuk R1 mampu menghindari sebagian besar masalah ini.

Karena pull-up resistor sering dibutuhkan, banyak MCU, seperti mikrokontroler ATmega328 pada platform Arduino, telah memiliki internal pull-up yang dapat diaktifkan dan dinonaktifkan. Untuk mengaktifkan internal pull-up pada Arduino, kita dapat menggunakan kode berikut pada fungsi setup():

pinMode(5, INPUT_PULLUP); // Aktifkan internal pull-up resistor pada pin 5

Hal ini menunjukan bahwa semakin besar resistansi untuk pull-up, semakin lambat pin ini merespon perubahan tegangan. Hal ini karena sistem pasokan pin input pada dasarnya adalah sebuah kapasitor ditambah dengan pull-up resistor, sehingga membentuk filter RC, dan filter RC membutuhkan beberapa saat untuk melakukan pengisian (charge) dan pengosongan (discharge). Jika kita memiliki sinyal yang mengalami perubahan sangat cepat (seperti USB), nilai pull-up resistor yang besar dapat membatasi kecepatan sehingga pin dapat melakukan perubahan dengan baik. Inilah sebabnya kita sering menemukan resistor sebesar 1kΩ sampai 4,7kΩ pada jalur sinyal USB. Semua faktor ini diperlukan untuk mengambil keputusan tentang nilai pull-up resistor yang akan digunakan.


Menghitung Nilai Pull-up Resistor

Anggaplah bahwa kita ingin membatasi arus sekitar 1mA saat tombol ditekan pada rangkaian diatas, sedangkan tegangan yang digunakan pada rangkaian adalah 5 Volt (VCC = 5V). Berapa nilai pull-up resistor yang akan kita gunakan? Untuk menghitung nilai pull-up resistor ini sangatlah mudah menggunakan Hukum Ohm sebagai berikut:

V = I.R

Mengacu pada rumus diatas maka rumus yang kita gunakan adalah:

VCC = (arus yang mengalir pada R1).R1
Atur ulang persamaan diatas dengan aljabar sederhana untuk mengetahui nilai resistor:

R1 = VCC/(arus yang mengalir pada R1)

Sehingga hasilnya seperti dibawah ini:

R1 = 5V/0,001A = 5.000Ohm atau 5kOhm

Ingatlah bahwa kita harus selalu mengkonversi semua unit satuan tegangan ke Volt, arus ke Ampere dan tahanan ke Ohm sebelum melakukan perhitungan (misalnya 1mA = 0,001A dan 5.000Ω = 5kΩ). Maka nilai pull-up resistor yang digunakan adalah sebesar 5kΩ.


Daftar Pustaka

  1. Pull-up Resistors, ditulis oleh Mando, diterbiktan oleh Sparkfun (Diakses pada hari Kamis, 14 Agustus 2014, jam 13.30)
  2. Pull-up Resistor, diterbitkan oleh Wikipedia (Diakses pada hari Kamis, 14 Agustus 2014, jam 11.00)

Pembaharuan Terakhir: 28 Februari 2022 19:57:14