Laporan Akhir 2 M2


 [KEMBALI KE MENU SEBELUMNYA]


Percobaan 4

Motor Servo, Buzzer & Potensiometer

1. Prosedur [kembali]
  1. Membuat rangkaian sesuai dengan percobaan 4
  2. Buat program untuk Thonny IDE sesuai dengan yang ada pada modul
  3. Setelah program selesai di buat, sambungkan laptop ke rangkaian yang telah dibuat
  4. Untuk simulasi, ketika potensiometer diputar ke arah input tegangan, maka motor servo akan bergerak searah jarum jam dan buzzer menghasilkan suara yang besar, apabia potensiometer ke arah ground maka akan menghasilkan kondisi sebaliknya.
  5. Selesai.
2. Hardware dan Diagram Blok [kembali]
Hardware 
  • Raspberry Pi Pico

  • Potensiometer


  • Breadboard


  • Jumper male to male

  • Buzzer


Diagram Blok :




3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

Rangkaian Simulasi :


Prinsip kerja : 

    Rangkaian ini menggunakan potensiometer sebagai input analog untuk mengontrol posisi servo motor dan frekuensi buzzer. Potensiometer bekerja dengan membaca perubahan resistansi akibat rotasi knop, yang kemudian diterjemahkan menjadi nilai ADC (Analog-to-Digital Converter) dalam rentang 0 hingga 65535. Nilai ini digunakan untuk mengatur dua fungsi utama dalam sistem: pengendalian posisi servo dan pengaturan frekuensi buzzer.

    Dalam pengaturan servo motor, nilai ADC dari potensiometer dikonversi terlebih dahulu menjadi sudut antara 0° hingga 180°. Sudut ini kemudian diubah menjadi nilai duty cycle PWM dalam kisaran 1500 hingga 7500. Nilai PWM tersebut menentukan posisi akhir dari servo motor, memungkinkan pengguna mengontrol secara presisi arah atau posisi mekanis dari perangkat yang digerakkan oleh servo.

    Sementara itu, nilai ADC yang sama juga digunakan untuk mengatur frekuensi buzzer. Nilai ADC dikonversi menjadi frekuensi dalam rentang 200 Hz hingga 2000 Hz. Dengan demikian, saat pengguna memutar potensiometer, frekuensi suara yang dihasilkan oleh buzzer akan berubah secara proporsional — semakin besar nilai ADC, semakin tinggi nada yang terdengar. Volume buzzer dikendalikan oleh duty cycle PWM tetap sebesar 30000, yang menjaga keluaran suara pada tingkat volume konstan.

    Seluruh proses berlangsung dalam loop yang terus-menerus, di mana sistem secara berkala membaca input dari potensiometer, memperbarui sudut servo, dan mengatur frekuensi buzzer secara real-time. Dengan mekanisme ini, potensiometer berfungsi sebagai pengendali tunggal yang secara simultan memengaruhi dua keluaran berbeda — satu dalam bentuk gerakan mekanis (servo motor) dan satu lagi dalam bentuk suara (buzzer).


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]




7. Download file [kembali]

Komentar

Postingan populer dari blog ini