TAKEN FROM μDESK OF DEDE HENDRIONO

Memahami Pull-up Resistor

Pull-up Resistor ATmega328

Pull-up Resistor sangat umum digunakan pada mikrokontroler (MCU) atau pada perangkat logika digital (digital logic device). Artikel kali ini akan membahas kapan dan dimana harus menggunakan pull-up resistor, melakukan perhitungan sederhana dan menunjukan mengapa pull-up resistor itu penting.


Disarankan Membaca

Sebelum melanjutkan membaca diharapkan sudah memahami:

  • Apa itu sirkuit?
  • Resistor
  • Tegangan, Arus, Resistansi
  • Digital Logic
  • Input/Output

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

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 10kΩ. 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 Voltage Divider

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

  • 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.
  • 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 resistensinya, 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 4MΩ mungkin saja dapat 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 100kΩ 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.000Ω atau 5kΩ

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, diterbitkan 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)


Artikel Terkait

Mengenal Arduino Uno

Arduino Uno adalah papan mikrokontroler berbasis ATmega328. Arduino Uno memiliki 14 digital pin input/output, dimana 6 pin digunakan sebagai output PWM, 6 pin input analog, 16 MHz resonator keramik, koneksi USB, jack catu daya eksternal, header ICSP, dan tombol reset. Sebuah ATmega16U2 yang terdapat pada papan digunakan sebagai media komunikasi serial melalui USB dan muncul pada hardware komputer sebagai COM Port Virtual untuk berkomunikasi dengan perangkat lunak pada komputer. Firmware 16U2 menggunakan driver standar USB COM, sehingga tidak membutuhkan driver eksternal....

Mengenal Arduino Mega2560

Arduino Mega2560 adalah papan mikrokontroler berbasiskan ATmega2560 (datasheet ATmega2560). Arduino Mega2560 memiliki 54 pin digital input/output, dimana 15 pin dapat digunakan sebagai output PWM, 16 pin sebagai input analog, dan 4 pin sebagai UART (port serial hardware), 16 MHz kristal osilator, koneksi USB, jack power, header ICSP, dan tombol reset. Ini semua yang diperlukan untuk mendukung mikrokontroler. ...

Mengenal Arduino Leonardo

Arduino Leonardo adalah papan mikrokontroler berbasis ATmega32u4. Arduino Leonardo memiliki 20 digital pin input/output (yang mana 7 pin dapat digunakan sebagai output PWM dan 12 pin sebagai input analog), 16 MHz kristal osilator, koneksi micro USB, jack power suplai tegangan, header ICSP, dan tombol reset. Ini semua yang diperlukan untuk mendukung mikrokontroler. Cukup dengan menghubungkannya ke komputer melalui kabel USB atau power dengan adaptor AC-DC atau baterai untuk mulai mengaktifkannya....

Codebender Alternatif Arduino IDE

Biasanya kita menggunakan Arduino IDE standar bawaan Arduino yang sampai hari ini telah mencapai versi 1.0.5. Namun ternyata ada antarmuka Arduino IDE yang berbasis cloud web. Hal ini memudahkan kita untuk menulis kode-kode Arduino secara online, membagikan kepada orang lain atau berkontribusi pada kode-kode Arduino yang telah dibuat oleh pengguna lain didunia. Kita bisa secara langsung meng-upload kode kedalam papan Arduino yang kita miliki dan bahkan kita bisa meng-upload kode yang telah kita tulis menggunakan AVR Programmer....

Apa itu Arduino?

Arduino adalah pengendali mikro (mikrokontroler) papan tunggal yang bersifat open-source (sumber terbuka), diturunkan dan dikembangkan dari platform Wiring, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya menggunakan prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri dengan antar-muka diambil dari Processing....

Kesalahan dan Solusi Kode Arduino

Mencari kesalahan yang terjadi pada Arduino memang merupakan hal yang sangat menguras waktu dan pikiran, terkadang kita dibuat bingung dengan kesalahan tersebut. Entah itu kesalahan penulisan kode ataupun kesalahan komunikasi data. Walaupun perangkat lunak Arduino menyertakan konsol pesan (text message console) namun tetap saja kesalahan tersebut terkadang sulit untuk ditemukan. Untuk memudahkan dalam mencari dan menemukan kesalahan, artikel kali ini akan membahas cara menyederhanakan kesalahan-kesalahan yang terjadi pada Arduino agar lebih mudah dalam menemukan dan menyelesaikan permasalahan pada kode Arduino....

Memilih Arduino Uno Untuk Pemula

Arduino Uno Original, Arduino Compatible dan Arduino Clone menjadi sangat membingungkan bagi para pemula yang hendak belajar tentang pemrograman Arduino. Arikel ini membahas tips dan trik menentukan pilihan papan Arduino Uno yang tepat terutama bagi pemula. Tepat sesuai dengan tujuan penggunaan dan tepat sesuai dengan dana yang dimiliki oleh penggunanya. Informasi tentang jenis-jenis Arduino yang ada dipasaran Indonesia tidak terlalu jelas, bahkan beberapa penjual Arduino sengaja tidak memberikan informasi detail tentang Arduino Uno yang dijualnya....

Mengenal Arduino Nano

Papan pengembangan elektronika mikrokontroler yang diberi nama Arduino ini memiliki banyak sekali turunannya. Baik itu yang diturunkan langsung dari pihak Arduino sendiri atau pihak ketiga yang ikut mengembangkan papan Arduino. Hal ini karena Arduino bersifat Open Source Hardware (OSH), karena sifatnya yang terbuka ini maka membuat para pengembang tidak perlu takut dengan Hak Atas Kekayaan Intelektual. Siapapun dapat membangun papan Arduino dengan versi sendiri dan disesuaikan dengan kebutuhan sendiri atau bahkan disesuaikan dengan dana yang dimiliki, namun tetap bekerja normal layaknya papan Arduino aslinya. Salah satu papan Arduino yang dikembangkan pihak ke tiga dan dapat diterima oleh pasar dengan baik adalah Arduino Nano. Seperti apa Arduino Nano?...

Mengenal Arduino Pro Mini

Satu lagi anggota keluarga Arduino yang cukup populer, yaitu Arduino Pro Mini. Merupakan keluarga Arduino yang murah, sederhana dan ukurannya yang kecil membuat popularitas Arduino Pro Mini hampir mengalahkan Arduino Uno. Selain itu, Arduino Pro Mini hadir dalam 2 versi yaitu versi 3,3 Volt 8 Mhz dan versi 5 Volt 16 MHz yang membuatnya mudah untuk dipilih sesuai kebutuhan. Dimensi yang kecil membuat Arduino Pro Mini bisa langsung ditanamkan pada proyek-proyek robotika. Kelemahan Arduino Pro Mini adalah tidak ditanamkannya USB Adapter pada papan sehingga para pengguna harus menyediakan sendiri USB Adapter terpisah....

Mengenal Mikrokontroler

Memang cukup membingungkan ketika mendengar istilah Mikrokontroler dan Mikroprosesor. Bagi para pengguna yang masih awam kedua istilah diatas dianggap sama, bahkan ada yang menganggap hanya beda istilah saja. Anggapan tersebut tidak salah 100% namun juga tidak benar 100%. Mikrokontroler dan Mikroprosesor adalah dua benda yang beda target penggunaan, beda kelengkapan fungsinya dan beda perusahaan yang awal menciptakan, namun berangkat dari ide yang sama, arsitektur yang sama, bahkan dari tahun lahir yang hampir sama pula. Lalu apa sebenarnya Mikrokontroler dan Mikroprosesor?...

Silahkan Berkomentar