MODUL 2
MODUL 1
PWM,ADC & INTERRUPT
1. Pendahuluan[Kembali]
a) Asistensi dilakukan 1x
b) Praktikum dilakukan 1x
a) Asistensi dilakukan 1x
b) Praktikum dilakukan 1x
2. Tujuan[Kembali]
a) Memahami cara penggunaan PWM, ADC, dan Interrupt pada
Development Board yang digunakan
b) Memahami cara menggunakan komponen input dan output yang
mengimplementasikan PWM, ADC, dan Interrupt pada Development Board
yang digunakan
a) Memahami cara penggunaan PWM, ADC, dan Interrupt pada Development Board yang digunakan
b) Memahami cara menggunakan komponen input dan output yang mengimplementasikan PWM, ADC, dan Interrupt pada Development Board yang digunakan
3. Alat dan Bahan[Kembali]
1. STM 32 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.
2. 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.
1. STM 32 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.
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.
1. Heart Rate
Indikator
- STM32F103C8T6
- HeartBeat Sensor
- Push Button
- LED
- Buzzer
- Resistor
- Breadboard
- STM32 NUCLEO-G474RE
- LED Sensor
- Push Button
- Moto Servo
- Adaptor
- Breadboard
4. Dasar Teori[Kembali]
A. 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.
B. 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 (%). 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.
C. 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.
A. 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.
B. 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 (%). 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.
C. 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.
5. Percobaan[Kembali]
1. Heart Rate Indikator
Alat dan Bahan - STM32F103C8T6
- HeartBeat Sensor
- Push Button
- LED
- Buzzer
- Resistor
- Breadboard
Rangkaian :
Flowchart :Flowchart :
- STM32F103C8T6
- HeartBeat Sensor
- Push Button
- LED
- Buzzer
- Resistor
- Breadboard
Komentar
Posting Komentar