Analog Output Pada Arduino
Analog Output PWM (Pulse Width Modulation) |
- Pendahuluan
Analog Output?? Apa itu? Sistemnya bagaimana? Dan
bagaimana cara menggunakannya?. Bila masih bingung dengan konsep input-output analog
pada Arduino, silakan baca terlebih dahulu pembahasan sebelumnya yang berjudul ”ADC (Analog Digital Converter) Pada Arduino
- http://festyy.com/w3RUoM” sehingga sedikit memberikan gambaran tentang konsep Analog pada
Arduino.
Setelah pada pembahasan sebelumnya kita membahas cara
Arduino membaca dan memproses data analog (Analog Input) dengan jalur ADC (Analog Digital Converter) baik dari
sensor, potensiometer, atau lainnya. Ternyata sistem Analog pada Arduino selain
bisa sebagai input tapi juga bisa menjadi sebuah output (WOOwwwoooww).
Pada Arduino kita dapat mengirimkan sinyal HIGH dan LOW
atau on dan off untuk menyalakan dan mematikan sesuatu
menggunakan fungsi digitalWrite() (pembahasan
selanjutnya). Bagaimana jika kita ingin mengaktifkan sesuatu dengan
skala tertentu dan bisa diubah-ubah sesuai kebutuhan, misalkan mengatur
intensitas cahaya LED atau mengatur kecepatan putaran motor. Disinilah kita memanfaatkan
analog output yang tersedia pada board Arduino dimana Analog output pada
Arduino difungsikan untuk mengirimkan sinyal analog dengan intensitas yang
ditentukan sesuai kebutuhan.
- Pembahasan
Analog Output dihasilkan sistem yang bernama PWM
atau Pulse Width Modulation. PWM
memanipulasi keluaran digital dengan sedemikian rupa sehingga menghasilkan
sinyal analog. Mikrokontroler mengeset output digital ke HIGH dan LOW
bergantian dengan porsi waktu tertentu untuk setiap nilai
keluarannya. Durasi waktu untuk nilai HIGH disebut pulse width atau panjang pulsa. Variasi nilai output
analog didapatkan dari perubahan panjang pulsa yang diberikan pada satu periode
waktu dan dilakukan berulang-ulang. Untuk lebih jelasnya perhatikan ilustrasi
berikut:
Gambar 1. Sinyal PWM (Pulse Width Modulation) sumber: Arduino.cc |
Berdasarkan
grafik pada Gambar 1 diatas, kondisi HIGH adalah kondisi ketika sinyal berada
di atas grafik (5V) dan LOW adalah ketika sinyal berada di bawah (0V). Duty
cycle adalah persentasi panjang pulsa HIGH dalam satu periode sinyal.
Ketika duty cyclenya 0%
atau sinyal LOW penuh, maka nilai analog yang dikeluarkan adalah 0V atau
setara dengan GND. Ketika duty cyclenya 100%
atau sinyal HIGH penuh maka sinyal yang dikeluarkan adalah 5V.
Pada
pemprogramannya untuk mengatur nilai duty
cycle, kita menggunakan fungsi analogWrite([nomorPin], [nilai]). Nilai pada
parameter yang diberikan berkisar antara 0 hingga 255. Bila kita hendak
mengeset duty cycle ke 0%, maka kita set nilai parameter ke 0
dan untuk duty cycle 100% maka kita set nilai parameter ke
255. Jadi bila misalkan kita hendak mengeset duty cycle ke
50%, berarti nilai yang harus kita set adalah 127 didapat dari perhitungan (50%
x 255).
Sebenarnya
berdasarkan konsep PWM di atas kita dapat mensimulasikan PWM pada semua
pin digital yang tersedia pada board Arduino. Tapi khusus penggunaan fungsi digitalWrite() kita hanya bisa
menggunakannya pada pin-pin PWM. Seperti contohnya pada board Arduino UNO
dimana pin yang dapat menggunakan fungsi ini hanya pin 3, 5, 6, 9, 10 dan 11.
Biasanya pin PWM disimbolkan dengan karakter '~'.
- Perancangan
Setelah
pembahasan singkat tentang teori PWM diatas, agar lebih memahami tentang cara
kerja dari analog output tersebut maka kita akan mencoba merealisasikannya
ke dalam rangkaian LED Dimmer.
Berikut
adalah bahan-bahan yang diperlukan untuk percobaan pembuktian teori PWM:
- Arduino Uno board
- Breadboard
- kabel jumper
- LED
- Resistor
220 ohm
Buat rangkaian seperti pada
gambar di bawah ini:
Gambar 2. Rangkaian LED dengan Arduino UNO
Pada rangkaian di atas, kita menghubungkan pin 3 ke kaki
anoda (positif) LED dengan melalui resistor 220 ohm dan menghubungkan kaki yang
lain ke GND. Kita akan menyalakan LED dengan intensitas yang terus naik hingga
titik maksimum dan kemudian menurunkan intensitasnya terus hingga mati dan
seterusnya. Berikut adalah kode programnya:
int pinLed = 3; // LED terhubung dengan pin
3
void setup(){}
void loop() {
//
buat iterasi dari 0 sampai 255 dengan kelipatan 5
for
(int nilai = 0; nilai = 0; nilai -= 5) {
// set nilai analog menggunakan iterasi di atas
analogWrite(pinLed, nilai);
// beri jeda waktu 3 milidetik
delay(30);
}
}
|
Upload program diatas dan bila program berhasil diupload,
Kamu akan melihat LED menyala perlahan-lahan dari redup ke terang lalu kemudian
meredup hingga mati begitu seterusnya.
Demikian penjabaran singkat tentang “Analog Output Pada Arduino”. Untuk
selanjutnya, buat yang ingin mempelajari Arduino dan lebih mengenal Arduino
silakan follow akun sosial media saya di facebook “fungkyking” juga
diblog saya http://festyy.com/wNiBaj dan jangan
lupa subscribe channel youtubenya di (fungky king) https://www.youtube.com/channel/UCWbN7TqlN68FxeFY7uCNhkA untuk
melihat tulisan-tulisan serta hasil rancangan alat-alat berbasis mikrokontroler
yang kami buat. Kami juga menerima pembuatan alat-alat elektronika baik untuk
penelitian ataupun alat untuk syarat kelulusan.
Demikian pembahasan singkat yang dapat dibahas, mohon
maaf jika terdapat kesalahan dalam penulisan yang mana semua ini semata-mata
hanya opini pribadi berdasarkan pengalaman. Jika ada kekurangan dan tambahan
dari materi pembahasan yang dibahas silahkan dapat teman-teman sertakan pada
kolom komentar tambahan materi yang ingin disampaikan, sampaikan pertanyaan dan
isi kolom komentar dengan bijak.
Terima Kasih,
Salam Otomatisasi
Afriansyah, S.T.
(Fungky King)
fungkyking01@gmail.com
Kata
Kunci / Keywords: ATMEGA, Arduino, Arduino IDE, Arduino UNO, Bahasa C,
fungkynotes.blogspot.co.id, fungky corporation, fungky king, microcontroller,
otomatis, pemprograman, plc, NodeMCU, ESP8266, Internet of Things (IoT), Wi-Fi,
PWM
Referensi / Reference:
- www.arduino.ac.id
- http://festyy.com/wNiBaj
- http://destyy.com/wMatJW
- http://arduino.cc/en/Main/Software
- https://www.codepolitan.com/
- Afriansyah. 2012. Pengukur Kadar pH Air Berbasis Mikrokontroler ATMega 8, TE-UGM, Yogyakarta.
- Afriansyah. 2017. “Perancangan Monitoring Sinyal EKG (Elektrokardiografi) Jantung Menggunakan Mikrokontroler Berbasis Android Sebagai Penampil Sinyal Dengan Memanfaatkan Komunikasi Bluetooth”, Skripsi, Institut Sains & Teknologi AKPRIND Yogyakarta, Yogyakarta.
- https://fungkynotes.blogspot.com/2019/03/menghubungkan-aplikasi-arduino-ide.html
- https://fungkynotes.blogspot.com/2019/02/instruksi-instruksi-dasar-pada.html
- https://fungkynotes.blogspot.com/2019/02/apa-itu-sketch-arduino.html
- http://arduino.cc/en/Guide/Windows
- www.google.com
No comments:
Post a Comment
Berfikirlah kreatif dengan komentar yang bijak. Salam Otomatisasi.!