M2 - Laporan Akhir 2



Percobaan 4
   Motor Servo, Buzzer, & Potensiomter


1. Prosedur[Kembali]

1. Siapkan alat dan bahan yaitu dengan komponen utama Rapsberry Pi Pico, Buzzer, Potensiometer dan Motor Servo

2. Rangkai sesuai gambar percobaan
3. Rancang kerja rangkaian sesuai flowchat
4. Tekan tombol “Play” untuk menjalankan simulasi
5. Selesai.


2. Hardware dan Diagram Blok[Kembali]

Hardware :

  • Raspberry pi pico
  • Push button


  • LED
  • Resistor
  • Jumper Cable Wire


  • Beard board

  • Motor Servo





  • Potensiometer

  • Buzzer


Diagram Blok








3. Rangkaian Simulasi[Kembali]

Rangkailah seperti rangkaian percobaan 4 pada modul 2







  • Prinsip Kerja 
        Rangkaian dan program yang diberikan merupakan sebuah sistem berbasis Raspberry Pi Pico yang mengintegrasikan potensiometer sebagai input, serta servo motor dan buzzer sebagai output. Potensiometer berfungsi sebagai pengatur utama sistem: saat diputar, ia menghasilkan nilai analog yang dibaca oleh pin ADC pada Raspberry Pi Pico. Nilai ini kemudian diproses dalam bentuk digital 16-bit dengan rentang dari 0 hingga 65535.

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

from machine import Pin, PWM, ADC from time import sleep import utime # Inisialisasi pot = ADC(26) # GP26 = ADC0 servo = PWM(Pin(16)) buzzer = PWM(Pin(14)) # Konfigurasi PWM servo.freq(50) # 50 Hz untuk servo buzzer.freq(1000) # Awal frekuensi buzzer def map_value(value, in_min, in_max, out_min, out_max): return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

while True: val = pot.read_u16() # Nilai ADC 16-bit (0 - 65535) # === Servo Motor === # Membaca nilai potensiometer (0 - 65535) pot_value = pot.read_u16() # Konversi ke sudut servo (0° - 180°) angle = map_value(pot_value, 0, 65535, 0, 180) # Konversi sudut ke duty cycle (1500 - 7500) → sesuai servo PWM duty = map_value(angle, 0, 180, 1500, 7500) servo.duty_u16(duty) # Print untuk debugging print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}") # === Buzzer === # Ubah val ke frekuensi (200 Hz - 2000 Hz) freq = int(200 + (val / 65535) * (2000 - 200)) buzzer.freq(freq) buzzer.duty_u16(30000) # Volume/suaranya sleep(0.05)

5. Video Demo[Kembali]








6. Analisa[Kembali]

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.

2. Analisa bagaimana cara pembacaan nilai sensor analog menggunakan ADC pada STM32 dan Raspberry Pi Pico ?

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 ?

HAL_GetTick() di STM32 mengembalikan nilai millisecond sejak sistem mulai, menggunakan SysTick timer yang di-update oleh interrupt berkala. Fungsi ini bergantung pada konfigurasi HAL dan biasanya memiliki resolusi 1ms.

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.

 



7. Download File[Kembali]

HTML [Download]
Listing Program [Download]
Video Simulasi [Download]  
Datasheet LED [Download]
Datasheet Raspberry pi pico [Download]









Tidak ada komentar:

Posting Komentar

ELEKTRONIKA

 BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA C Disusun Oleh : Abdul Hadi Aldoreza 2210952008 Dosen Pengampu : Dr. Darwison, M.T JURUSAN ...