Percobaan 4
Motor Servo, Buzzer, & Potensiomter
1. Siapkan alat dan bahan yaitu dengan komponen utama Rapsberry Pi Pico, Buzzer, Potensiometer dan Motor Servo
2. Hardware dan Diagram Blok[Kembali]
Hardware :
- Raspberry pi pico
- Push button
- LED
3. Rangkaian Simulasi[Kembali]
Rangkailah seperti rangkaian percobaan 4 pada modul 2
- Prinsip Kerja
Nilai dari potensiometer digunakan untuk dua fungsi utama. Pertama, sistem mengatur posisi sudut dari servo motor. Nilai ADC dikonversi menjadi sudut antara 0 hingga 180 derajat. Sudut ini kemudian diubah menjadi nilai duty cycle PWM (antara 1500 hingga 7500 dalam satuan 16-bit) yang dibutuhkan untuk mengatur posisi servo secara akurat. Dengan demikian, ketika potensiometer diputar, lengan servo akan bergerak ke sudut yang sesuai dengan nilai yang dihasilkan potensiometer.
Kedua, nilai potensiometer juga digunakan untuk mengatur frekuensi suara yang dihasilkan oleh buzzer. Nilai ADC dikonversi ke dalam rentang frekuensi antara 200 Hz hingga 2000 Hz. Semakin besar nilai dari potensiometer, semakin tinggi pula frekuensi suara buzzer. Volume buzzer diatur dengan menetapkan duty cycle sebesar 30000, yang menghasilkan suara dengan intensitas tetap namun frekuensinya dinamis sesuai putaran potensiometer.
Seluruh proses berjalan dalam loop tanpa henti, dengan pembacaan nilai potensiometer, perhitungan sudut servo dan frekuensi buzzer, serta pengaturan PWM dilakukan secara terus-menerus setiap 50 milidetik. Program ini juga mencetak nilai-nilai hasil konversi ke terminal sebagai alat debugging untuk memantau respons sistem terhadap perubahan nilai input. Secara keseluruhan, rangkaian dan program ini menciptakan sebuah sistem interaktif sederhana yang menghubungkan input analog dengan dua jenis output melalui pengolahan sinyal PWM oleh mikrokontroler Raspberry Pi Pico.
4. Flowchart dan Listing Program[Kembali]
- Flowchart
- Listing Program
ANALISA MODUL 2: PWM, ADC, INTERRUPT, & MILLIS
1. Analisa bagaimana perbedaan implementasi PWM antara STM32 dan Raspberry Pi Pico serta dampaknya terhadap kontrol motor dan Buzzer ?
STM32 menggunakan timer hardware yang dikonfigurasi melalui
register prescaler dan auto-reload untuk mengatur frekuensi PWM, sedangkan duty
cycle diatur melalui capture/compare register (CCR). Pendekatan ini memberikan
resolusi tinggi (hingga 16-bit) dan presisi yang baik, sehingga cocok untuk
aplikasi seperti kontrol motor yang membutuhkan respons halus atau buzzer yang
memerlukan frekuensi stabil.
Raspberry Pi Pico menggunakan modul PWM terpisah yang tidak
bergantung pada timer khusus. Frekuensi PWM diatur melalui pembagi integer,
yang kurang presisi dibanding STM32. Resolusi defaultnya 8-bit (dapat
ditingkatkan), sehingga lebih sederhana tetapi kurang akurat untuk aplikasi
yang membutuhkan ketepatan tinggi. Akibatnya, kontrol motor mungkin kurang
halus, dan frekuensi buzzer bisa memiliki variasi lebih besar.
Pada STM32, ADC bekerja dengan multi-channel dan dapat
menggunakan DMA untuk pembacaan efisien tanpa intervensi CPU. Sampling rate
diatur melalui konfigurasi clock dan sample time register, serta dilengkapi
kalibrasi internal untuk meningkatkan akurasi. Pembacaan nilai ADC biasanya
menggunakan fungsi HAL seperti HAL_ADC_Start() dan HAL_ADC_GetValue().
Raspberry Pi Pico memiliki ADC 12-bit dengan 4 channel
(termasuk satu channel untuk sensor suhu internal). Pembacaannya lebih
sederhana karena tidak memerlukan konfigurasi kompleks seperti STM32. Nilai ADC
dapat dibaca langsung menggunakan fungsi read_u16() dari library ADC
Pico. Namun, Pico tidak memiliki fitur kalibrasi otomatis, sehingga mungkin
memerlukan kalibrasi manual jika dibutuhkan akurasi tinggi.
3. Analisa bagaimana penggunaan interrupt eksternal dalam mendeteksi input dari sensor pada STM32 dan Raspberry Pi Pico ?
Di STM32, interrupt eksternal dikonfigurasi melalui EXTI
(External Interrupt) dan dihubungkan ke pin GPIO tertentu. Setiap perubahan
tegangan (rising/falling edge) dapat memicu interrupt handler yang ditentukan,
misalnya menggunakan HAL dengan callback seperti HAL_GPIO_EXTI_Callback().
Pendekatan ini efisien untuk respon cepat terhadap sensor seperti encoder atau
limit switch.
Pada Raspberry Pi Pico, interrupt eksternal diatur melalui fungsi gpio_set_irq_enabled_with_callback(), yang memungkinkan penanganan interrupt berbasis event pada pin tertentu. Pico menggunakan mekanisme IRQ handler yang fleksibel tetapi memerlukan pengaturan manual untuk filter debouncing atau prioritas interrupt.
4. Analisa bagaimana cara kerja fungsi HAL_GetTick() pada STM32 dan utime.ticks_ms() pada Raspberry Pi Pico dalam menghitung waktu sejak sistem dinyalakan ?
Pada Raspberry Pi Pico, utime.ticks_ms() juga
mengembalikan waktu dalam milidetik, tetapi menggunakan timer hardware internal
Pico yang tidak tergantung pada interrupt. Pico menggunakan timer 64-bit yang
terus bertambah, sehingga lebih stabil untuk penghitungan waktu jangka panjang
tanpa overflow.
5. Analisa bagaimana perbedaan konfigurasi dan kontrol pin PWM serta pemanfaatan timer internal pada STM32 dan Raspberry Pi Pico dalam menghasilkan sinyal gelombang persegi ?
STM32 menghasilkan PWM menggunakan timer hardware (seperti
TIM1, TIM2, dll.) yang dapat dikonfigurasi untuk frekuensi dan resolusi berbeda
melalui register prescaler dan auto-reload. Setiap channel PWM dihubungkan ke
capture/compare register (CCR) untuk mengatur duty cycle. Pendekatan ini
memungkinkan multiple PWM dengan sinkronisasi ketat dan fase terkontrol.
Raspberry Pi Pico menggunakan modul PWM independen yang
tidak terikat pada timer khusus. Frekuensi PWM diatur melalui pembagi integer
dan penghitung wrap, sedangkan duty cycle dikontrol via level threshold.
Meskipun lebih sederhana, Pico kurang fleksibel dalam sinkronisasi multiple PWM
dibanding STM32. Namun, Pico mendukung lebih banyak pin PWM secara bersamaan
tanpa konflik resource timer.
Tidak ada komentar:
Posting Komentar