percobaan 4 kondisi 4

 

 By: Haykal Aqsara

2210951023



Percobaan 4 kondisi 4

1. Kondisi [Kembali]

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

2. Rangkaian Simulasi [Kembali]

Prosedur : 
  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
 Gambar Rangkaian Sebelum 

Gambar Rangkaian Sesudah

Gambar 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 ===
    # Buzzer hanya aktif saat sudut antara 0° dan 180° eksklusif
    if 0> angle > 180:
        # Ubah val ke frekuensi (200 Hz - 2000 Hz)
        freq = int(200 + (val / 65535) * (2000 - 200))
        buzzer.freq(freq)
        buzzer.duty_u16(30000)  # Volume/suaranya
    else:
        buzzer.duty_u16(0)             # Matikan suara

    sleep(0.05)


4. Prinsip Kerja [Kembali]



Video Penjelasan

Program ini dibuat untuk membaca input dari potensiometer melalui pin ADC (Analog to Digital Converter) dan mengendalikannya ke dua perangkat keluaran: motor servo dan buzzer. Potensiometer dihubungkan ke pin GP26 pada mikrokontroler Raspberry Pi Pico yang memiliki kemampuan ADC. Nilai yang diperoleh dari potensiometer berupa data 16-bit (kisaran 0 hingga 65535), yang merepresentasikan posisi fisik potensio. Pembacaan dilakukan secara terus-menerus dalam loop while True guna memperoleh data secara real-time.

Nilai dari potensiometer tersebut kemudian diubah menggunakan fungsi map_value() dari rentang 0–65535 ke sudut yang dapat dimengerti oleh motor servo, yakni antara 0° hingga 180°. Sudut ini kemudian dikonversi ke bentuk duty cycle PWM sesuai kebutuhan kontrol servo. Duty cycle ini berbentuk 16-bit (menggunakan duty_u16) dan dikalkulasi dari sudut menjadi nilai antara 1500 sampai 7500. Rentang ini dipilih karena motor servo umumnya menerima sinyal PWM dengan lebar pulsa antara 0,5 ms (untuk 0°) hingga 2,5 ms (untuk 180°) pada periode 20 ms (frekuensi 50 Hz). Nilai duty cycle ini kemudian dikirim ke pin PWM GP16 yang terhubung ke motor servo, sehingga gerakan servo mengikuti perubahan posisi potensiometer.

Untuk buzzer, program juga memanfaatkan nilai dari potensiometer untuk menentukan frekuensi bunyinya. Namun, berbeda dengan sebelumnya, buzzer hanya akan menyala jika sudut servo berada di luar rentang normal, yaitu kurang dari 0° atau lebih dari 180°. Kondisi ini mencerminkan bahwa potensiometer berada di luar batas kendali sudut yang diizinkan. Frekuensi buzzer ditentukan secara linier dari nilai ADC potensiometer, dalam rentang 200 Hz hingga 2000 Hz. Sinyal ke buzzer dikirim melalui pin PWM GP14 dengan duty cycle sebesar 30000 dari total 65535, yang menghasilkan suara dengan volume tertentu.

Dengan sistem ini, pengguna cukup memutar potensiometer untuk mengatur arah motor servo dan mendeteksi peringatan suara buzzer ketika sudut berada di luar batas yang ditentukan. Pendekatan ini menunjukkan konversi sinyal analog menjadi kontrol digital untuk perangkat output menggunakan mikrokontroler, dan sangat cocok digunakan dalam aplikasi interaktif seperti sistem peringatan posisi, kontrol servo berbasis sensor, serta pembelajaran dasar mekatronika dan pengendalian PWM.


5. Link Download [Kembali]

Komentar

Postingan populer dari blog ini