Mata Kuliah: MKK.10.01.005 — Kecerdasan Buatan & Internet of Things (TW1). Durasi: 120 menit (Tatap Muka). Penyusun: Irfan Yusin Syahrullah.
Tujuan Pembelajaran
- Memahami konsep PWM dan siklus kerja (duty cycle)
- Menjelaskan perbedaan analog sejati dengan modulasi digital
- Menerapkan fungsi analogWrite atau ledc untuk mengatur kecerahan LED
- Membuat efek fade LED naik dan turun secara halus
Capaian Pembelajaran
Mahasiswa mampu menerapkan PWM pada ESP32 untuk mengatur kecerahan LED dan memahami cara kerja duty cycle pada modulasi sinyal digital.
Konsep Materi
PWM adalah teknik menghasilkan keluaran analog semu dengan menyalakan dan mematikan sinyal digital secara cepat. Proporsi waktu nyala terhadap total periode disebut duty cycle; duty cycle 50% menghasilkan daya rata-rata setengah dari tegangan penuh.
Frekuensi PWM menentukan seberapa cepat sinyal menyala-mati per detik. Pada frekuensi tinggi (misalnya 5 kHz) dan duty cycle tertentu, mata manusia melihat LED dengan kecerahan proporsional terhadap duty cycle, bukan berkedip.
Pada Arduino Uno PWM biasa dipakai analogWrite(pin, nilai) dengan nilai 0 sampai 255. Pada ESP32, PWM ditangani oleh modul LEDC dengan saluran (channel) dan resolusi bit yang dapat diatur, sehingga pola pemanggilannya sedikit berbeda.
Untuk EPS32 kita memilih saluran, menetapkan frekuensi dan resolusi dengan ledcSetup, menancapkan pin ke saluran dengan ledcAttachPin, lalu mengirim nilai dengan ledcWrite. Nilai maksimal ditentukan oleh resolusi, misalnya 8 bit berarti 0 sampai 255.
PWM juga merupakan dasar pengendalian motor DC: semakin besar duty cycle, semakin cepat putaran. Prinsip yang sama dipakai pada driver motor L298N yang akan dipelajari di pertemuan berikutnya.
Langkah Praktik
- Pertahankan rangkaian LED eksternal pada GPIO 4 dari pertemuan sebelumnya.
- Deklarasikan konstanta saluran PWM, resolusi, dan pin LED di bagian awal program.
- Di setup, panggil ledcSetup untuk menentukan frekuensi (misalnya 5000) dan resolusi (8), lalu ledcAttachPin.
- Buat loop yang menaikkan nilai ledcWrite dari 0 ke 255 lalu menurunkannya kembali dengan jeda kecil.
- Amati peralihan kecerahan yang halus membentuk efek fade.
Kode Contoh
#define LED_PIN 4
#define CHANNEL 0
void setup() {
ledcSetup(CHANNEL, 5000, 8); // saluran 0, frekuensi 5kHz, resolusi 8 bit
ledcAttachPin(LED_PIN, CHANNEL);
}
void loop() {
for (int duty = 0; duty = 0; duty--) {
ledcWrite(CHANNEL, duty); // turunkan kecerahan
delay(10);
}
}
Latihan / Proyek
- Ubah frekuensi PWM menjadi 1000 Hz dan bandingkan hasil kecerahan; catat perbedaannya.
- Serangkaian dua LED, satu dikendali PWM halus dan satu berkedip, lalu kombinasikan efeknya.
- Jelaskan mengapa duty cycle 0% membuat LED padam dan 100% membuat LED menyala penuh.
Rekap & Tindak Lanjut
PWM dipahami sebagai teknik modulasi digital untuk menghasilkan keluaran analog semu. Mahasiswa berhasil membuat efek fade dan siap menerapkan prinsip ini pada pengendalian motor DC di pertemuan berikutnya.
