Langsung ke konten utama

Modul 2 - PWM, ADC, & INTERRUPT



Modul 2 - PWM, ADC, & INTERRUPT

1. Pendahuluan [Kembali]

a) Asistensi dilakukan 1x

b) Praktikum dilakukan 1x

2. Tujuan [Kembali]

a) Memahami cara penggunaan PWM, ADC, dan Interrupt

b) Memahami implementasi komponen input dan output

3. Alat dan Bahan [Kembali]

inherit;"> • STM32F103C8T6 
STM32F103C8T6 merupakan mikrokontroler yang berfungsi sebagai pusat kendali sistem. Komponen ini membaca data dari sensor heartbeat, memproses sinyal, lalu mengatur keluaran LED dan buzzer.

 • HeartBeat Sensor 
HeartBeat Sensor berfungsi mendeteksi denyut jantung manusia melalui perubahan aliran darah pada jari atau bagian tubuh tertentu, kemudian mengubahnya menjadi sinyal listrik.

 • Push Button 
 Push Button berfungsi sebagai tombol input manual, misalnya untuk memulai pengukuran, mereset alat, atau mengganti mode kerja.

 • LED 
LED berfungsi sebagai indikator visual kondisi denyut jantung, misalnya normal, rendah, atau tinggi.

 • Buzzer 
Buzzer berfungsi sebagai indikator suara atau alarm apabila denyut jantung berada di luar batas normal.

 • Resistor 
Resistor berfungsi membatasi arus listrik agar LED dan komponen lain tidak rusak, serta sebagai penstabil rangkaian.

 • Breadboard 
Breadboard berfungsi sebagai media perakitan rangkaian sementara tanpa perlu penyolderan sehingga mudah diuji dan dimodifikasi.

2. Percobaan 2 Jemuran Otomatis

a. Alat dan Bahan 

 • STM32 Nucleo G474RE 

STM32 Nucleo G474RE berfungsi sebagai mikrokontroler utama yang membaca data sensor LDR dan mengontrol gerakan motor servo sesuai program.

 • LDR Sensor 

LDR Sensor berfungsi mendeteksi intensitas cahaya. Jika cahaya terang maka jemuran dapat dibuka, sedangkan saat gelap atau mendung jemuran dapat ditutup.

 • Push Button 

Push Button berfungsi sebagai tombol input manual untuk membuka, menutup, atau mereset sistem.

 • Motor Servo 

Motor Servo berfungsi sebagai aktuator penggerak jemuran otomatis, yaitu membuka atau menutup posisi jemuran sesuai perintah mikrokontroler.

 • Breadboard 

Breadboard berfungsi sebagai tempat merangkai komponen elektronik sementara agar mudah dilakukan pengujian.

 • Adaptor

Adaptor berfungsi sebagai sumber tegangan listrik untuk menyalakan rangkaian dan memberikan daya pada motor servo maupun mikrokontroler.

4. Dasar Teori [Kembali]

1.1 ADC (Analog to Digital Converter)

ADC (Analog to Digital Converter) merupakan komponen elektronika yang berfungsi sebagai antarmuka antara sinyal analog dan sistem digital. Peran utamanya adalah mengubah sinyal input yang masih berbentuk analog menjadi data digital dalam bentuk kode biner sehingga dapat diproses oleh mikrokontroler.

Pada mikrokontroler STM32, tersedia ADC beresolusi 12-bit dengan jumlah kanal eksternal yang dapat mencapai 16 channel. ADC ini dapat dioperasikan dalam mode single conversion maupun scan mode. Pada mode scan, beberapa kanal dapat dikonversi secara berurutan secara otomatis. Selain itu, ADC STM32 dilengkapi fitur seperti simultaneous sample and hold, interleaved mode, serta single shunt. Untuk meningkatkan efisiensi transfer data, ADC dapat diintegrasikan dengan DMA. Terdapat juga fitur analog watchdog yang memungkinkan pemantauan nilai tegangan hasil konversi dan menghasilkan interrupt jika nilai melewati batas tertentu. Sinkronisasi dengan timer internal (TIM) juga dimungkinkan untuk mengatur waktu konversi, trigger injeksi, maupun pemicu DMA.

Pada board STM32 Nucleo G474RE, tersedia beberapa unit ADC seperti ADC1 hingga ADC4 yang memungkinkan proses konversi dilakukan secara paralel sehingga meningkatkan kecepatan akuisisi data. Setiap ADC mendukung resolusi hingga 12-bit serta fitur oversampling untuk meningkatkan akurasi dan mereduksi noise.

Setiap ADC memiliki banyak channel input yang terhubung ke pin GPIO sehingga fleksibel untuk membaca berbagai sensor. Fitur tambahan seperti scan mode dan continuous conversion memungkinkan pembacaan data secara berurutan maupun kontinu tanpa intervensi CPU. Selain itu, terdapat injected channel yang memiliki prioritas tinggi untuk kebutuhan real-time.

ADC juga mendukung berbagai sumber trigger seperti timer atau sinyal eksternal, sehingga dapat disinkronkan dengan modul lain seperti PWM dalam sistem kontrol tertutup. Proses konversi mencakup tahap sampling dan quantization, dengan hasil akhir disimpan dalam register data ADC. Dengan kemampuan tersebut, ADC STM32 G474RE sangat sesuai untuk aplikasi monitoring, pembacaan sensor, dan sistem kontrol berbasis sinyal analog dengan kebutuhan akurasi dan kecepatan tinggi.

1.2 PWM (Pulse Width Modulation)

PWM (Pulse Width Modulation) adalah teknik modulasi yang dilakukan dengan mengatur lebar pulsa (duty cycle) pada sinyal dengan amplitudo dan frekuensi tetap. Dalam satu periode, sinyal PWM terdiri dari kondisi HIGH dan LOW, di mana perbandingan durasi HIGH terhadap periode total disebut duty cycle dan biasanya dinyatakan dalam persen.

Pada STM32, sinyal PWM dihasilkan menggunakan timer internal yang berfungsi sebagai pencacah waktu dengan berbagai mode operasi. Timer ini dapat dikonfigurasi untuk menghasilkan frekuensi dan duty cycle tertentu sesuai kebutuhan aplikasi. Mekanisme kerja timer adalah menghitung hingga nilai tertentu berdasarkan clock, kemudian mengubah status output untuk menghasilkan gelombang persegi.

STM32 menyediakan beberapa pin yang mendukung PWM, termasuk yang berasal dari advanced timer seperti TIM1 yang memiliki fitur tambahan seperti complementary output. Selain menghasilkan PWM, timer juga dapat digunakan untuk input capture, output compare, dan one pulse mode. Aplikasi PWM antara lain untuk pengaturan kecepatan motor, pengendalian intensitas LED, serta sistem berbasis waktu lainnya.

Pada STM32 Nucleo G474RE, PWM dihasilkan oleh berbagai jenis timer seperti advanced-control timer (TIM1, TIM8), general-purpose timer (TIM2–TIM5), dan basic timer. Setiap timer memiliki beberapa channel sehingga memungkinkan pengendalian banyak sinyal PWM secara simultan. Timer ini umumnya memiliki resolusi hingga 16-bit atau lebih, dilengkapi prescaler untuk pengaturan frekuensi, serta register CCR untuk menentukan duty cycle dari 0–100%.

Setiap channel PWM dapat diatur secara independen, baik dalam mode edge-aligned maupun center-aligned. Selain itu, tersedia fitur lanjutan seperti complementary output, dead-time insertion, break input, dan sinkronisasi antar timer yang penting dalam aplikasi elektronika daya seperti inverter dan kontrol motor. Konfigurasi PWM dapat dilakukan melalui register secara langsung maupun menggunakan library seperti HAL atau LL, sehingga memberikan fleksibilitas tinggi dalam implementasi sistem.

1.3 Interrupt

Interrupt adalah mekanisme pada sistem mikrokontroler yang memungkinkan penghentian sementara eksekusi program utama untuk menangani suatu kejadian dengan prioritas lebih tinggi. Ketika sebuah interrupt terjadi, prosesor akan menghentikan sementara proses yang sedang berjalan dan berpindah untuk mengeksekusi rutin khusus yang disebut Interrupt Service Routine (ISR).

Sebagai contoh, saat sistem sedang menjalankan program utama, mikrokontroler tetap dapat memantau sinyal dari sensor. Jika terjadi kondisi tertentu yang memicu interrupt, maka ISR akan dijalankan terlebih dahulu. Setelah ISR selesai dieksekusi, sistem akan kembali melanjutkan program utama.

1.4 STM32 NUCLEO G474RE

STM32 NUCLEO-G474RE adalah papan pengembangan berbasis mikrokontroler STM32G474RET6 yang diproduksi oleh STMicroelectronics. Board ini dirancang untuk mendukung proses pembelajaran, pengujian, dan pengembangan sistem tertanam, baik untuk pemula maupun pengguna tingkat lanjut.

Board ini telah dilengkapi dengan ST-LINK debugger/programmer secara onboard, sehingga pengguna dapat langsung melakukan proses pemrograman dan debugging tanpa memerlukan perangkat tambahan.

1.5 STM32F103C8

STM32F103C8 merupakan mikrokontroler berbasis ARM Cortex-M3 yang juga dikembangkan oleh STMicroelectronics. Perangkat ini banyak digunakan dalam sistem embedded karena menawarkan performa yang baik, konsumsi daya rendah, serta dukungan berbagai protokol komunikasi.

Mikrokontroler ini dapat diprogram melalui beberapa metode seperti USART, SWD, maupun JTAG untuk komunikasi dengan komputer atau perangkat lain.

A. Bagian-Bagian Pendukung

1. STM32 NUCLEO G474RE

  • RAM
    Digunakan sebagai memori sementara selama program berjalan. STM32G474RET6 memiliki RAM sebesar 128 KB yang digunakan untuk menyimpan variabel, buffer, stack, dan heap.
  • Memori Flash
    Board ini tidak menggunakan flash eksternal, melainkan memanfaatkan flash internal sebesar 512 KB yang bersifat non-volatile untuk menyimpan program dan data.
  • Clock (Oscillator)
    Menggunakan osilator internal HSI sebagai sumber clock utama, sehingga tidak memerlukan crystal eksternal. Clock ini mengatur kecepatan kerja CPU dan peripheral.
  • Regulator Tegangan
    Berfungsi untuk menjaga kestabilan suplai tegangan ke sistem.
  • GPIO
    Pin GPIO digunakan sebagai antarmuka input dan output digital yang fleksibel.

2. STM32F103C8

  • RAM
    Memiliki SRAM sebesar 20 KB yang digunakan untuk penyimpanan data sementara saat program berjalan.
  • Memori Flash
    Tersedia flash internal sebesar 64 KB atau 128 KB untuk penyimpanan program secara permanen.
  • Crystal Oscillator
    Menggunakan crystal eksternal (umumnya 8 MHz) yang dikombinasikan dengan PLL untuk mencapai frekuensi hingga 72 MHz.
  • Regulator Tegangan
    Mendukung tegangan operasi antara 2.0V hingga 3.6V dengan sistem regulasi internal.
  • GPIO
    Memiliki hingga 37 pin GPIO yang dapat digunakan untuk berbagai kebutuhan interfacing seperti sensor, aktuator, dan komunikasi (UART, SPI, I2C). 

5. Percobaan [Kembali]

1. Percobaan 3 Kondisi 6




Tahap 1: Persiapan Komponen Utama

Cari dan masukkan komponen-komponen berikut dari Library Proteus (tekan tombol P pada keyboard):

  • STM32F103C8 (Mikrokontroler utama).

  • POT-HG atau POT-LIN (Potensiometer sebagai simulator detak/BPM).

  • LED-REDLED-GREENLED-BLUE (Indikator visual).

  • RES (Resistor, ubah nilainya menjadi 220 Ohm untuk pengaman LED).

  • BUZZER (Indikator suara).

  • Opsional: Modul Heartbeat Sensor (Hanya sebagai pajangan/animasi visual agar proyek terlihat lebih nyata).

Tahap 2: Merangkai Jalur Input (Sensor / Potensiometer)

Di sinilah trik utamanya agar pembacaan ADC berjalan mulus dan tidak meloncat-loncat:

  1. Ambil Potensiometer (RV2) dan letakkan di lembar kerja.

  2. Sambungkan kaki paling atas potensiometer ke sumber listrik +3.3V atau +5V (Terminal Power).

  3. Sambungkan kaki paling bawah potensiometer ke Ground (Terminal Ground).

  4. Tarik kabel dari kaki tengah potensiometer (wiper) dan sambungkan langsung ke Pin PA0 (Pin 10) pada STM32.

  5. Catatan: Jangan menyambungkan pin PA0 ke pin OUT milik Heartbeat Sensor. Biarkan sensor tersebut terhubung ke suplai listrik saja agar animasinya tetap berdetak, tapi datanya kita manipulasi dari potensiometer.

Tahap 3: Merangkai Jalur Output (LED Indikator)

Sekarang kita hubungkan lampu indikator ke Port B STM32 sesuai dengan urutan kodingan:

  1. Siapkan 3 buah resistor yang nilainya sudah diubah menjadi 220 Ohm. Pasang masing-masing secara seri dengan kaki Anoda (positif) LED Merah, Hijau, dan Biru.

  2. Tarik kabel dari resistor LED Merah (D1), sambungkan ke Pin PB0 (Pin 18).

  3. Tarik kabel dari resistor LED Hijau (D3), sambungkan ke Pin PB1 (Pin 19).

  4. Tarik kabel dari resistor LED Biru (D2), sambungkan ke Pin PB10 (Pin 21).

  5. Sambungkan semua kaki Katoda (negatif) dari ketiga LED tersebut menjadi satu jalur, lalu hubungkan ke Ground.

Tahap 4: Merangkai Jalur Output (Buzzer Peringatan)

Untuk memberikan peringatan suara saat kondisi bahaya:

  1. Letakkan komponen Buzzer di lembar kerja.

  2. Sambungkan kaki positif Buzzer ke Pin PB11 (Pin 22) pada STM32.

  3. Sambungkan kaki negatif Buzzer ke Ground.

Tahap 5: Memasukkan Program dan Menjalankan Simulasi

Setelah semua kabel terhubung dengan benar, rangkaian belum bisa hidup tanpa "otak"-nya:

  1. Buka software STM32CubeIDE, pastikan Anda menekan tombol Build (ikon palu) pada kodingan main.c terakhir yang sudah kita buat hingga muncul tulisan 0 errors, 0 warnings.

  2. Kembali ke Proteus, klik dua kali (double-click) pada komponen STM32F103C8.

  3. Pada kolom Program File, klik ikon folder dan cari file berekstensi .hex atau .elf dari project STM32CubeIDE Anda (biasanya ada di dalam folder Debug).

  4. Klik OK.

  5. Tekan tombol Play di pojok kiri bawah Proteus.

2. Percobaan 4 kondisi 6



1. Tujuan dan Fungsi Sistem (Pendahuluan)

"Rangkaian ini adalah purwarupa (prototype) sistem jemuran otomatis berbasis mikrokontroler STM32 Nucleo. Sistem ini dirancang untuk membaca intensitas cahaya matahari secara real-time dan menggerakkan jemuran secara proporsional menyesuaikan tingkat kecerahan cahaya tersebut, dengan sistem keamanan tambahan berupa tombol aktuasi."

2. Penjelasan Komponen (Hardware)

Jelaskan masing-masing komponen dan perannya pada wiring yang ada di gambar:

  • STM32 Nucleo-C031C6 (Pusat Kendali): Berfungsi sebagai "otak" utama yang menerima data dari sensor cahaya, memproses logika perhitungannya, dan mengirimkan perintah gerak ke motor.

  • Modul Sensor LDR (Input Analog): Bertugas mendeteksi tingkat iluminasi (terang/gelap). Perubahan cahaya akan mengubah nilai hambatannya, yang menghasilkan perubahan tegangan. Pin Analog Output pada sensor ini terhubung ke mikrokontroler (secara fisik pada gambar terhubung ke pin A5) untuk dibaca nilainya.

  • Push Button (Input Digital / Sakelar Enable): Berfungsi sebagai pengaman atau syarat kerja sistem. Menggunakan konfigurasi Active-Low (terhubung ke Ground). Mikrokontroler diatur menggunakan pull-up resistor internal, sehingga (terhubung di pin A3) tombol harus ditekan agar sistem otomatisasi mulai bekerja.

  • Motor Servo (Output / Aktuator): Berfungsi sebagai penggerak mekanis yang akan menarik (masuk ke atap) atau mendorong (keluar dari atap) jemuran. Kabel sinyalnya terhubung ke pin yang mendukung PWM (Pulse Width Modulation) pada mikrokontroler (terhubung di pin D10) untuk mengatur sudut putarannya.

3. Alur Kerja Rangkaian (Cara Kerja)

Jelaskan bagaimana komponen-komponen tersebut saling berinteraksi saat kodingan dijalankan:

  1. Tahap Stand-by: Saat alat pertama kali dihidupkan, mikrokontroler akan terus memantau pin digital dari Push Button. Selama tombol tidak ditekan, sistem tidak akan membaca sensor LDR dan motor servo akan diam.

  2. Tahap Pembacaan (Sensing): Ketika Push Button ditekan, mikrokontroler mulai mengaktifkan pembacaan pada pin analog sensor LDR.

  3. Tahap Pemrosesan (Processing): Mikrokontroler menerima nilai cahaya (lux) tersebut dan mengolahnya menggunakan metode mapping proporsional. Mikrokontroler mencocokkan skala cahaya dengan skala sudut motor. Rentang pembacaan dibatasi (constrain) agar sesuai dengan batas aman pergerakan mekanis.

  4. Tahap Eksekusi (Acting): Mikrokontroler mengirimkan sinyal PWM ke motor servo. Jika sensor membaca lingkungan perlahan menjadi cerah, motor servo akan bergerak perlahan membuka jemuran (menuju 180°). Sebaliknya, jika cuaca perlahan mendung atau gelap, servo akan perlahan menarik jemuran masuk (menuju 0°).

                                        





 

Komentar

Postingan populer dari blog ini

Modul 1 - General input dan output

Modul 3 - Shift Counter Shift Registerr