Cari Blog Ini

Laporan Akhir 1 - M2 Prak. uP & uC



Percobaan 4
MOTOR, BUZZER DAN POTENSIOMETER

1. Prosedur[Kembali]

  1. Rangkai dengan inputnya yaitu potensiometer dan outputnya yaitu 1 motor servo dan 1 Buzzer.
  2. Buatlah program dengan konfigurasi pin input dan output berdasarkan pada pin GP Raspberry yang telah dirangkai sebelumnya. Kemudian buatlah program untuk menghasilkan output motor servo bergerak searah jarum jam dan output Buzzer berbunyi bertambah keras seiring diputar potensiometer kearah kiri.
  3. Run program, putar potensiometer untuk melihat output motor servo dan buzzer
  4. Program selesai

2. Hardware dan Diagram Blok[Kembali]

A. Hardware



B. Blok Diagram


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

A. Rangkaian Simulasi

B. Prinsip Kerja

Rangkaian ini bekerja dengan sebuah potensiometer sebagai input dan motor servo serta buzzer sebagai output. Seiiring potensiometer diperbesar nilainya maka akan menggerakkan motor servo searah jarum jam dan bunyi buzzer bertambah keras suaranya.


4. Flowchart dan Listing Program[Kembali]

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. Kondisi[Kembali]

Buatlah rangkaian seperti gambar pada percobaan 4, jika nilai pada potensiometer diperbesar maka servo bergerak searah jarum jam dan buzzer berbunyi bertambah frekuensinya.

7. Download File[Kembali]

Rangkaian Simulasi Klik Disini

Video Demo Klik Disini

DataSheet Raspberry Pi Pico Klik Disini 

DataSheet Buzzer Klik Disini

DataSheet Motor Servo Klik Disini

BAHAN PRESENTASI MATA KULIAH MIKROPROSESOR DAN MIKROKONTROLER 2024      Oleh : Zumar Ahmad (2210951027) Dosen Pengampu : Dr. Darwison, M.T. ...