j) Adaptor
k) Breadboard
4. Dasar Teori [kembali]
4.1 ADC
ADC
atau Analog to Digital Converter merupakan salah satu perangkat
elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal
analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah
sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal
digital dengan bentuk kode-kode digital.
Pada
mikrokontroler STM32, terdapat dua ADC (Analog-to-Digital Converter)
12-bit yang masing-masing memiliki hingga 16 kanal eksternal. ADC ini
dapat beroperasi dalam mode single-shot atau scan mode. Pada scan mode,
konversi dilakukan secara otomatis pada sekelompok input analog yang
dipilih. Selain itu, ADC ini memiliki fitur tambahan seperti
simultaneous sample and hold, interleaved sample and hold, serta single
shunt. ADC juga dapat dihubungkan dengan DMA untuk meningkatkan
efisiensi transfer data.
Mikrokontroler
ini dilengkapi dengan fitur analog watchdog yang memungkinkan
pemantauan tegangan hasil konversi dengan akurasi tinggi, serta dapat
menghasilkan interupsi jika tegangan berada di luar ambang batas yang
telah diprogram. Selain itu, ADC dapat disinkronkan dengan timer
internal (TIMx dan TIM1) untuk memulai konversi, pemicu injeksi, serta
pemicu DMA, sehingga memungkinkan aplikasi untuk melakukan konversi ADC
secara terkoordinasi dengan timer.
Pada
STM32 Nucleo G474RE, terdapat blok ADC (Analog-to-Digital Converter)
yang digunakan untuk mengubah sinyal analog menjadi data digital. STM32
G474RE memiliki beberapa unit ADC (seperti ADC1, ADC2, ADC3, dan ADC4)
yang memungkinkan proses konversi dilakukan secara paralel untuk
meningkatkan kecepatan akuisisi data. Setiap ADC mendukung resolusi
hingga 12-bit, dengan fitur tambahan seperti oversampling untuk
meningkatkan akurasi dan mengurangi noise pada sinyal.
Setiap
unit ADC dapat mengakses banyak channel input yang terhubung ke
berbagai pin GPIO, sehingga memungkinkan pembacaan berbagai sensor
secara fleksibel. ADC pada STM32 G474RE juga dilengkapi dengan fitur
scan mode untuk membaca beberapa channel secara berurutan, serta mode
continuous conversion yang memungkinkan pembacaan data secara
terus-menerus tanpa intervensi CPU. Selain itu, terdapat injected
channel yang berfungsi sebagai channel prioritas untuk kebutuhan
real-time.
ADC
ini juga mendukung berbagai sumber trigger, seperti timer (TIM) atau
sinyal eksternal, sehingga dapat disinkronkan dengan modul lain seperti
PWM untuk aplikasi kontrol tertutup (closed-loop). Proses konversi
dilakukan melalui tahap sampling dan quantization, dengan hasil akhir
disimpan pada register data ADC. Dengan fitur-fitur tersebut, ADC pada
STM32 G474RE sangat cocok digunakan dalam aplikasi seperti pembacaan
sensor, monitoring tegangan, serta sistem kendali berbasis sinyal analog
yang membutuhkan kecepatan dan presisi tinggi.
4.2 PWM
PWM
(Pulse Width Modulation) adalah salah satu teknik modulasi dengan
mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi
yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di
zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan
amplitudo sinyal asli yang belum termodulasi.
Duty
Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan
perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).
Gambar 1. Duty Cycle
Duty Cycle = tON / ttotal
Ton = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (high atau 1)
Toff = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah (low atau 0)
Ttotal = Waktu satu siklus atau penjumlahan antara Ton dengan Toff atau disebut juga dengan “periode satu gelombang”
PWM
pada STM32 dihasilkan menggunakan timer internal yang berfungsi sebagai
penghitung waktu dengan berbagai mode operasi. Mikrokontroler ini
memiliki empat timer 16-bit (TIM1–TIM4), yang dapat dikonfigurasi untuk
menghasilkan sinyal dengan frekuensi dan duty cycle tertentu. Timer
bekerja dengan menghitung hingga nilai tertentu berdasarkan frekuensi
clock, lalu mengubah status register untuk menghasilkan gelombang
persegi.
STM32
memiliki 15 pin yang mendukung PWM, beberapa di antaranya berasal dari
timer tingkat lanjut seperti TIM1, yang memiliki fitur tambahan seperti
complementary output. Selain menghasilkan sinyal PWM, timer juga bisa
digunakan untuk mengukur sinyal eksternal (input capture), menghasilkan
sinyal berbasis waktu (output compare), dan membuat satu pulsa
berdasarkan trigger (one pulse mode). PWM sering digunakan untuk
mengontrol kecepatan motor, mengatur kecerahan LED, dan berbagai
aplikasi berbasis waktu lainnya.
Pada
STM32 Nucleo G474RE, PWM dihasilkan melalui blok timer (TIM) yang
terdiri dari beberapa jenis, seperti advanced-control timer (TIM1,
TIM8), general-purpose timer (TIM2–TIM5), dan basic timer. Setiap timer
memiliki beberapa channel yang dapat digunakan untuk menghasilkan sinyal
PWM, sehingga memungkinkan banyak output PWM dikendalikan secara
bersamaan pada berbagai pin GPIO. Timer pada STM32 G474RE umumnya
memiliki resolusi hingga 16-bit atau lebih (tergantung jenis timer),
dilengkapi dengan prescaler untuk pengaturan frekuensi yang presisi,
serta register pembanding (CCR) untuk mengatur duty cycle dari 0–100%.
Selain
itu, setiap channel PWM dapat dikonfigurasi secara independen, baik
dalam mode edge-aligned maupun center-aligned, sehingga cocok untuk
aplikasi seperti kontrol motor dan konversi daya. STM32 G474RE juga
mendukung fitur lanjutan seperti complementary output, dead-time
insertion, break input, dan sinkronisasi antar timer, yang sangat
penting dalam sistem power electronics dan inverter. Pengaturan PWM
dapat dilakukan secara fleksibel melalui register timer atau menggunakan
library seperti HAL/LL, serta dapat diaktifkan atau dihentikan secara
terpusat, memungkinkan sinkronisasi beberapa sinyal PWM untuk aplikasi
yang lebih kompleks dan presisi tinggi.
4.3 INTERRUPT
Interrupt
adalah mekanisme yang memungkinkan suatu instruksi atau perangkat I/O
untuk menghentikan sementara eksekusi normal prosesor agar dapat
diproses lebih dulu seperti memiliki prioritas tertinggi. Misalnya, saat
prosesor menjalankan tugas utama, ia juga dapat terus memantau apakah
ada kejadian atau sinyal dari sensor yang memicu interrupt. Ketika
terjadi interrupt eksternal, prosesor akan menghentikan sementara tugas
utamanya untuk menangani interrupt terlebih dahulu, kemudian melanjutkan
eksekusi normal setelah selesai menangani interrupt tersebut. Fungsi
yang menangani interrupt disebut Interrupt Service Routine (ISR), yang
dieksekusi secara otomatis setiap kali interrupt terjadi.
Pada
STM32F103C8, semua pin GPIO dapat digunakan sebagai pin interrupt,
berbeda dengan Arduino Uno yang hanya memiliki pin tertentu (misalnya
pin 2 dan 3). Untuk mengaktifkan interrupt di STM32 menggunakan Arduino
IDE, digunakan fungsi attachInterrupt(digitalPinToInterrupt(pin), ISR,
mode). Parameter pin menentukan pin mana yang digunakan untuk interrupt,
ISR adalah fungsi yang dijalankan saat interrupt terjadi, dan mode
menentukan jenis perubahan sinyal yang memicu interrupt. Mode yang
tersedia adalah RISING (dari LOW ke HIGH), FALLING (dari HIGH ke LOW),
dan CHANGE (baik dari LOW ke HIGH maupun HIGH ke LOW). Saat menggunakan
lebih dari satu interrupt secara bersamaan, terkadang perlu
memperhatikan batasan tertentu dalam pemrograman.
Pada
STM32 Nucleo G474RE, sistem interrupt merupakan mekanisme yang
memungkinkan mikrokontroler merespons suatu kejadian (event) secara
langsung tanpa harus terus-menerus melakukan polling. Dengan interrupt,
CPU dapat menghentikan sementara proses utama untuk menjalankan fungsi
khusus yang disebut Interrupt Service Routine (ISR), sehingga
meningkatkan efisiensi dan respons sistem secara real-time.
STM32
G474RE menggunakan NVIC (Nested Vectored Interrupt Controller) untuk
mengatur berbagai sumber interrupt, seperti dari timer (TIM), ADC, UART,
GPIO (external interrupt), dan periferal lainnya. Setiap sumber
interrupt memiliki prioritas tertentu yang dapat diatur, sehingga
memungkinkan penanganan beberapa interrupt secara bersamaan (nested
interrupt). Selain itu, sistem ini mendukung preemption dan subpriority
untuk pengelolaan interrupt yang lebih kompleks.
Interrupt
dapat dipicu oleh berbagai kondisi, seperti perubahan logika pada pin
GPIO (EXTI), selesainya konversi ADC, overflow pada timer, atau
penerimaan data komunikasi. Ketika interrupt terjadi, program akan
lompat ke ISR yang sesuai, kemudian setelah selesai, eksekusi akan
kembali ke program utama. STM32 G474RE juga menyediakan fitur
enable/disable interrupt secara fleksibel melalui register maupun
library seperti HAL.
Dengan
adanya interrupt, STM32 G474RE sangat cocok untuk aplikasi real-time
seperti sistem kendali, monitoring sensor, komunikasi data, dan otomasi,
karena mampu merespons kejadian penting dengan cepat tanpa membebani
CPU secara terus-menerus.
4.4 STM32 NUCLEO G474RE
STM32
NUCLEO-G474RE merupakan papan pengembangan (development board) berbasis
mikrokontroler STM32G474RET6 yang dikembangkan oleh STMicroelectronics.
Board ini dirancang untuk memudahkan proses pembelajaran, pengujian,
dan pengembangan aplikasi sistem tertanam (embedded system), baik untuk
pemula maupun tingkat lanjut. STM32 Nucleo-G474RE mengintegrasikan
antarmuka ST-LINK debugger/programmer secara onboard sehingga pengguna
dapat langsung melakukan pemrograman dan debugging tanpa perangkat
tambahan.
Adapun spesifikasi dari STM32 NUCLEO-G474RE adalah sebagai berikut:
Gambar 2. STM32 Nucleo G474RE
Gambar 3. PinOut STM32 Nucleo G474RE
4.5 STM32F103C8
STM32F103C8
adalah mikrokontroler berbasis ARM Cortex-M3 yang dikembangkan oleh
STMicroelectronics. Mikrokontroler ini sering digunakan dalam
pengembangan sistem tertanam karena kinerjanya yang baik, konsumsi daya
yang rendah, dan kompatibilitas dengan berbagai protokol komunikasi.
Pada praktikum ini, kita menggunakan STM32F103C8 yang dapat diprogram
menggunakan berbagai metode, termasuk komunikasi serial (USART), SWD
(Serial Wire Debug), atau JTAG untuk berhubungan dengan komputer maupun
perangkat lain. Adapun spesifikasi dari STM32F4 yang digunakan dalam
praktikum ini adalah sebagai berikut:
Gambar 4. STM32F103C8
Gambar 5. Pinout Stm32 F103C8T6
A. BAGIAN-BAGIAN PENDUKUNG
1. STM32 NUCLEO G474RE
1. RAM (Random Access Memory)
RAM
(Random Access Memory) pada STM32 NUCLEO-G474RE digunakan sebagai
memori sementara untuk menyimpan data selama program berjalan.
Mikrokontroler STM32G474RET6 memiliki RAM sebesar 128 KB yang berfungsi
untuk menyimpan variabel, buffer data, stack, dan heap.
2. Memori Flash Eksternal
STM32
NUCLEO-G474RE tidak menggunakan memori flash eksternal. Seluruh program
dan data permanen disimpan pada memori Flash internal mikrokontroler
STM32G474RET6 dengan kapasitas 512 KB. Memori flash ini bersifat
non-volatile, sehingga data dan program tetap tersimpan meskipun catu
daya dimatikan.
3. Crystal Oscillator
STM32
NUCLEO-G474RE menggunakan osilator internal (HSI – High Speed Internal)
sebagai sumber clock utama secara default. Penggunaan clock internal
ini membuat board dapat beroperasi tanpa memerlukan crystal oscillator
eksternal. Clock berfungsi sebagai sumber waktu untuk mengatur kecepatan
kerja CPU dan seluruh peripheral.
4. Regulator Tegangan
Untuk memastikan pasokan tegangan yang stabil ke mikrokontroler.
5. Pin GPIO (General Purpose Input/Output):
Pin GPIO pada STM32 NUCLEO-G474RE digunakan sebagai antarmuka input dan output digital yang fleksibel
2. STM32
1. RAM (Random Access Memory)
STM32F103C8
dilengkapi dengan 20KB SRAM on-chip. Kapasitas RAM ini memungkinkan
mikrokontroler menjalankan berbagai aplikasi serta menyimpan data
sementara selama eksekusi program.
2. Memori Flash Internal
STM32F103C8
memiliki memori flash internal sebesar 64KB atau 128KB, yang digunakan
untuk menyimpan firmware dan program pengguna. Memori ini memungkinkan
penyimpanan kode program secara permanen tanpa memerlukan media
penyimpanan eksternal.
3. Crystal Oscillator
STM32F103C8
menggunakan crystal oscillator eksternal (biasanya 8MHz) yang bekerja
dengan PLL untuk meningkatkan frekuensi clock hingga 72MHz. Sinyal clock
yang stabil ini penting untuk mengatur kecepatan operasi mikrokontroler
dan komponen lainnya.
4. Regulator Tegangan
STM32F103C8
memiliki sistem pengaturan tegangan internal yang memastikan pasokan
daya stabil ke mikrokontroler. Tegangan operasi yang didukung berkisar
antara 2.0V hingga 3.6V.
5. Pin GPIO (General Purpose Input/Output)
STM32F103C8
memiliki hingga 37 pin GPIO yang dapat digunakan untuk menghubungkan
berbagai perangkat eksternal seperti sensor, motor, LED, serta
komunikasi dengan antarmuka seperti UART, SPI, dan I²C.