Skip to main content

Percobaan Display dan PWM

Section 1
Display OLED 

Pada percobaan kali ini kita akan mencoba menampilkan informasi ESP32 dengan sebuah display. Display yang akan kita gunakan adalah OLED (organic light-emiting diode) yaitu jenis teknologi tampilan layar yang menggunakan bahan organik sebagai unsur pemancar cahaya. Komponen yang akan kita gunakan adalah sebagaimana ditampilkan dalam tabel berikut.

ESP 32OLED
GPIO 22SCL
GPIO 21SDA
GNDGND
3V33V3

 

Rangkaian Sederhana_bb.png

Sketch, mencoba display OLED 128 x 64 (I2C) yang diambil dari contoh program di Arduino IDE (File > Examples > Adafruit SSD1306):

#include <Wire.h>

Pulse Width Modulation (PWM)

PWM singkatan dari Pulse Width Modulation (Modulasi Lebar Pulsa). Ini adalah teknik modulasi sinyal yang digunakan untuk mengendalikan daya atau besaran sinyal lain dengan cara mengubah lebar pulsa sinyal digital.

Cara kerja PWM:

  1. Sinyal digital: PWM menggunakan sinyal digital dengan dua level tegangan, biasanya 0V dan 5V.
  2. Lebar pulsa: Sinyal digital diubah menjadi serangkaian pulsa dengan lebar yang bervariasi.
  3. Duty cycle: Lebar pulsa dibandingkan dengan periode pulsa, disebut sebagai duty cycle. Duty cycle diukur dalam persen, dengan 0% berarti sinyal mati dan 100% berarti sinyal menyala terus menerus.
  4. Pengendalian daya/besaran: Duty cycle menentukan besarnya daya atau besaran sinyal yang dihasilkan. Semakin tinggi duty cycle, semakin besar daya atau besaran sinyal yang dihasilkan.

Aplikasi PWM:

  • Pengendalian motor: PWM digunakan untuk mengendalikan kecepatan motor DC dengan cara mengubah tegangan yang diberikan ke motor.
  • Pengendalian lampu: PWM digunakan untuk mengendalikan kecerahan lampu LED dengan cara mengubah duty cycle sinyal yang diberikan ke LED.
  • Konverter DC-AC: PWM digunakan untuk mengubah tegangan DC menjadi tegangan AC dengan cara menghasilkan gelombang pulsa dengan duty cycle yang bervariasi.
  • Komunikasi digital: PWM dapat digunakan untuk mentransmisikan data digital dengan cara mengubah lebar pulsa untuk mewakili bit data.

Dengan ESP 32 kita dapat membuat generator PWM dengan langkah-langkah sebagai berikut:

  1. Pertama, kita harus memilih kanal PWM, dimana kanal ini dapat diatur dari 0 sampai dengan 15.
  2. Kita mengatur frekuensi sinyal dari PWM. Pada percobaan kali ini kita akan menyalakan LED sehingga dengan frekuensi 5000 Hz akan cukup.
  3. Kita dapat mengatur resolusi duty-cycle, ESP 32 memilik resolusi 1 sampai 16 bits. Pada percobaan ini kita akan menggunakan resolusi 8-bits, sehingga kecerahan LED dapat kita ekspresikan dalam kemungkinan 28 = 255. 

Kita akan membuat rangkaian PWM sederhana untuk mengatur LED terang redup secara terus menerus berdasarkan duty cycle yang telah kita atur sebelumnya. Berikut adalah kode sketch yang kita gunakan (sumber): 

Rangkaian PWM_bb.png

Kode program

const int ledPin = 18;  
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;
 
void setup(){
  ledcSetup(ledChannel, freq, resolution);
  ledcAttachPin(ledPin, ledChannel);
}
 
void loop(){
  for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){   
    ledcWrite(ledChannel, dutyCycle);
    delay(15);
  }

  for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
    ledcWrite(ledChannel, dutyCycle);   
    delay(15);
  }
}