M2 LA 1



Percobaan 4
  Motor Servo, Buzzer, & Potensiomter

1. Prosedur[Kembali]

  1. Rangkailah sistem percobaan sesuai dengan diagram yang ada, dengan input berupa potensiometer, serta output berupa buzzer dan motor servo. Sambungkan potensiometer, motor servo dan buzzer menggunakan kabel jumper ke pin rapsberry pi pico yang sesuai dengan pengaturan program.
  2. Uploadlah program pada thonny IDE
  3. Setelah program selesai, percobaan dapat dilihat dengan menyesuaikan prinsip kerja rangkaian

A. Hardware

1. Raspberry Pi Pico







2. Potensiometer


3. Buzzer



4. Motor Servo







B. Blok Diagram









3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

A. Rangkaian Simulasi







B. Prinsip Kerja

Potensiometer berfungsi sebagai input analog yang mengirimkan nilai tegangan ke pin ADC (Analog to Digital Converter) pada Raspberry Pi Pico. Saat pengguna memutar knop potensiometer, nilai tegangan yang terbaca oleh mikrokontroler akan berubah, dan perubahan ini digunakan untuk mengatur posisi sudut pada servo motor. Raspberry Pi Pico akan mengolah nilai analog dari potensiometer dan mengubahnya menjadi sinyal PWM (Pulse Width Modulation) yang dikirimkan ke servo motor untuk menggerakkannya ke posisi tertentu sesuai dengan nilai potensiometer, perputaran motor servo benbanding terbalik dengan perputaran pada wiper potensiometer, dimana saat wiper di kearah kiri maka motor servo akan berputar berlawanan jarum jam sedangkan saat wiper diputar kearah kana maka motor servo akan bergerak mengikuti arah jarum jam. Selain itu, rangkaian ini juga dilengkapi dengan buzzer sebagai output audio. Buzzer kemungkinan besar akan diaktifkan ketika nilai potensiometer mencapai ambang batas tertentu, misalnya saat diputar ke posisi maksimum, sebagai bentuk peringatan atau notifikasi.

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]






7. Download File[Kembali]