Laporan Akhir 2


Percobaan 4

Motor Servo, Buzzer, & Potensiomter

1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di website wokwi
  • Jalankan program dan cobakan sesuai kondisi

Hardware :

  • Raspberry pi pico



  • Buzzer

  • Motor Servo

  • Potensiometer

Diagram Blok


  • Rangkaian
  • Prinsip Kerja

Pada rangkaian ini, potensiometer dihubungkan ke pin GP26 yang berfungsi sebagai input analog (ADC0) pada Raspberry Pi Pico. Potensiometer ini akan digunakan untuk menghasilkan nilai analog yang kemudian diubah oleh mikrokontroler menjadi nilai digital 16-bit dengan rentang antara 0 hingga 65535. Nilai tersebut dibaca secara terus-menerus dalam loop utama program.

Nilai digital dari potensiometer kemudian digunakan untuk dua fungsi sekaligus. Pertama, nilai ini dipetakan ke dalam rentang sudut 0 hingga 180 derajat untuk menentukan posisi servo motor. Sudut tersebut kemudian dikonversikan menjadi nilai duty cycle PWM (antara 1500 hingga 7500) agar sesuai dengan kebutuhan sinyal servo, dan dikirimkan melalui pin GP16. Akibatnya, ketika pengguna memutar potensiometer, posisi lengan servo akan bergerak secara proporsional mengikuti nilai sudut yang dihasilkan.

Fungsi kedua dari nilai potensiometer adalah untuk mengatur frekuensi nada yang dihasilkan oleh buzzer. Nilai potensiometer yang sama dipetakan ke dalam rentang frekuensi 200 Hz hingga 2000 Hz dan kemudian dikirimkan sebagai sinyal PWM ke buzzer melalui pin GP14. Duty cycle buzzer diatur tetap pada nilai 30000 untuk menjaga suara tetap terdengar jelas. Dengan demikian, ketika potensiometer diputar, pengguna tidak hanya melihat perubahan posisi pada servo, tetapi juga mendengar perubahan frekuensi suara buzzer.

Program berjalan secara terus-menerus, membaca nilai potensiometer dan memperbarui sinyal PWM untuk servo dan buzzer, sehingga sistem ini sangat responsif terhadap perubahan posisi potensiometer.

  • Flowchart
  • Listing Program
from machine import Pin, PWM, ADC from time import sleep # Inisialisasi pin pot = ADC(26) # GP26 sebagai input ADC0 servo = PWM(Pin(16)) # Servo di GP16 buzzer = PWM(Pin(14)) # Buzzer di GP14 # Konfigurasi frekuensi PWM servo.freq(50) # Frekuensi 50Hz untuk servo buzzer.freq(1000) # Frekuensi awal buzzer # Fungsi untuk mapping nilai 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) # Loop utama while True: val = pot.read_u16() # Baca nilai ADC (0 - 65535) # === Servo Motor === angle = map_value(val, 0, 65535, 0, 180) # Sudut servo (0° - 180°) duty = map_value(angle, 0, 180, 1500, 7500) # Duty cycle untuk servo servo.duty_u16(duty) # Debugging print print(f"Pot Value: {val}, Angle: {angle}, Duty: {duty}") # === Buzzer === freq = int(200 + (val / 65535) * (2000 - 200)) # Ubah val jadi frekuensi buzzer buzzer.freq(freq) buzzer.duty_u16(30000) # Volume buzzer sleep(0.05)


5. Video Demo [Kembali]

6. Analisa [Kembali]

TIDAK ADA SOAL ANALISA

HTML [Download]
Rangkaian [Download
Video Simulasi [Download 
Listring Program [Download 


Tidak ada komentar:

Posting Komentar

   BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA 2023 Nama : Hadi Andhika Jafta NIM : 2210951009 Dosen Pengampu : Dr. Darwison, MT...