Laporan Akhir 2



1. Prosedur [Kembali]

1. Sediakan alat dan bahan percobaan

2. Rangkailah rangkaian di breadboard sesuai modul

3. Buka aplikasi thonny dan masukkan listing program ke dalam aplikasi tersebut

4. Hubungkan rangkaian dengan software dengan kabel USB

5. Jalankan program


 

2. Hardware dan Diagram Blok [Kembali]

a. Hardware

Hardware yang digunakan dalam rangkaian ini meliputi:

  • 1. Rasberry Pi Pico

                                                                                        (a)                                                (b)
    Gambar Mikrokontroler Rasberry Pi Pico (a) tampilan hardware, (b) tampilan simulasi

    Raspberry Pi Pico adalah papan mikrokontroler berbasis RP2040, sebuah chip yang dikembangkan oleh Raspberry Pi Foundation. Mikrokontroler ini menggunakan prosesor ARM Cortex-M0+ dual-core, memiliki 264KB RAM, dan mendukung berbagai antarmuka seperti GPIO, I2C, SPI, dan UART. Raspberry Pi Pico cocok untuk proyek embedded systemsIoT, dan otomasi

    2. Motor Servo




    (a)                                                                    (b)
    Gambar Motor Servo (a) tampilan hardware, (b) tampilan simulasi

    Motor servo adalah motor listrik yang dilengkapi dengan sistem kontrol umpan balik (feedback) untuk mengendalikan posisi, kecepatan, dan akselerasi dengan presisi tinggi. 


    3. Potensiometer



                    (a)                                                           (b)
    Gambar Potensiometer (a) tampilan hardware, (b) tampilan simulasi

    Potensiometer adalah resistor tiga terminal dengan sambungan geser yang membentuk pembagi tegangan dapat disetel.

    4. Buzzer


  •         (a)                                          (b)
    Gambar Buzzer (a) tampilan hardware, (b) tampilan simulasi

    Buzzer adalah komponen elektronik yang digunakan untuk menghasilkan suara atau bip. Ini adalah perangkat output yang mengubah sinyal listrik menjadi suara.

b. Diagram Blok

3. Rangkaian Simulasi [Kembali]

a. Rangkaian simulasi



b. Prinsip kerja

Pada rangkaian ini, Raspberry Pi Pico berfungsi sebagai pusat pengendali utama. Pico mendapatkan sumber listrik melalui kabel USB yang juga digunakan untuk menyuplai tegangan ke komponen lain seperti potensiometer, servo motor, dan buzzer.

Pertama-tama, potensiometer mendapatkan suplai tegangan sebesar 3.3V dari Raspberry Pi Pico. Ketika potensiometer diputar, resistansi internalnya berubah-ubah, sehingga menghasilkan perubahan tegangan analog pada kaki tengahnya. Tegangan ini dikirim ke pin GP26 pada Pico, yang dilengkapi dengan fitur ADC (Analog to Digital Converter). ADC mengubah sinyal analog tersebut menjadi nilai digital dengan rentang 0 hingga 65535.

Nilai digital hasil pembacaan potensiometer kemudian diolah. Pico melakukan pemetaan (mapping) nilai ini menjadi sudut servo antara 0 hingga 180 derajat. Uniknya, arah pemetaan dibalik: semakin besar nilai ADC, sudut servo semakin kecil. Setelah mendapatkan nilai sudut, Pico kembali melakukan pemetaan untuk mengubah sudut tersebut menjadi duty cycle PWM (antara 1638 hingga 8192) yang diperlukan untuk mengontrol posisi servo.

Servo motor yang terhubung ke pin GP16 kemudian menerima sinyal PWM ini. Sesuai lebar pulsa sinyal PWM yang diterima, servo akan bergerak ke sudut tertentu yang diinginkan. Raspberry Pi Pico juga melakukan pemeriksaan terhadap sudut servo. Jika sudut servo kurang dari atau sama dengan 0 derajat, atau lebih besar dari atau sama dengan 180 derajat, Pico akan mengaktifkan buzzer dengan memberikan sinyal PWM pada pin GP14 dengan frekuensi 1000 Hz. Duty cycle PWM disetel cukup besar untuk menghasilkan bunyi. Jika sudut masih berada dalam rentang aman (lebih dari 0 derajat dan kurang dari 180 derajat), buzzer akan dimatikan.

Semua proses ini berjalan dalam satu loop berulang setiap 50 milidetik. 




4. Flowchart dan Listing Program [Kembali]

a. Flowchart


b. Listing Program

from machine import Pin, PWM, ADC
from time import sleep

# 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) # Frekuensi buzzer

# Fungsi mapping
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:
    # Baca nilai potensiometer
    pot_value = pot.read_u16()

    # Konversi nilai potensiometer ke sudut servo (0-180 derajat)
    angle = map_value(pot_value, 0, 65535, 0, 180)

    # Konversi sudut ke duty cycle (rentang 1638 - 8192)
    duty = map_value(angle, 0, 180, 1638, 8192)
    servo.duty_u16(duty)

    # Debugging
    print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}")

    # === Buzzer ===
    if angle <= 0 or angle >= 180:
        # Jika sudut keluar batas, buzzer berbunyi
        buzzer.duty_u16(30000)  # Suara ON
    else:
        buzzer.duty_u16(0)  # Suara OFF

    # Delay untuk pembaruan
    sleep(0.05)
5. Video Demo [Kembali]





6. Kondisi [kembali]

Buatlah rangkaian seperti gambar pada percobaan 4, jika nilai pada potensiometer diperkecil maka servo bergerak berlawanan arah jarum jam dan jika jika sudut servo <0 ° dan >180 ° buzzer berbunyi.

7. Download File [Kembali]

Video Demo











Tidak ada komentar:

Posting Komentar

  Aldi Kurniawan 2210952047