TP 1 MODUL 2 PRAKTIKUM UP UC




Tugas Pendahuluan 1 Modul 2
(Percobaan 4 Kondisi 4)

1. Prosedur
[Kembali]
  1. Membuat rangkaian di proteus sesuai dengan kondisi 4 percobaan 4.
  2. Buat program untuk Raspbery Pi Pico di software Wokwi Simulator.
  3. Setelah program selesai di upload, jalankan simulasi rangkaian pada software wokwi.
  4. Untuk uji coba adanya gerakan servo motor, potensiometer divariasikan nilainya untuk mengubah putaran servo motor.
  5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

A. Hardware 
1. Software Wokwi Simulator


2. Raspbery Pi Pico


3. Buzzer 



4. Potensiometer 



5. Servo Motor 


B. Blok Diagram


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:


Rangkaian Simulasi Setelah dirunning:
 

Prinsip Kerja : 
Pada rangkaian tersebut terdapat beberapa komponen yaitu Raspbery Pi Pico, Potensiometer, Buzzer, Servo Motor. Masing-masing dihubungkan dengan pin pada Raspbery Pi Pico sehingga membentuk rangkaian seperti pada gambar diatas.

Komponen yang berperan sebagai input disini adalah Potensiometer, dimana ketika nilai potensiometer diperkecil maka motor servo akan merespon dan berputar berlawanan arah jarum jam. dan ketika sudut servo <0 ° dan >180 ° buzzer berbunyi. 

Saat simulasi di running, maka terdapat output berupa:
Terdapat output print berupa pot value, inverted, sudut, duty. Semua output print berikut akan berubah sesuai nilai dari potensiometer yang divariasikan.

4. Flowchart dan Listing Program [Kembali]

Flowchart :


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)  # 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:
    # Membaca nilai potensiometer
    pot_value = pot.read_u16()
   
    # Membalik pembacaan potensiometer supaya kecil → sudut besar
    inverted_value = 65535 - pot_value
   
    # Konversi ke sudut (tanpa dibatasi 0–180 dulu)
    angle = map_value(inverted_value, 0, 65535, -30, 210)  # Diperluas sedikit (-30° sampai 210°)

    # Konversi sudut ke duty cycle (1500 - 7500)
    # Tetapi duty cycle tetap dibatasi untuk servo
    if angle < 0:
        angle_for_servo = 0
    elif angle > 180:
        angle_for_servo = 180
    else:
        angle_for_servo = angle

    duty = map_value(angle_for_servo, 0, 180, 1500, 7500)
    servo.duty_u16(duty)

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

    # Cek jika keluar dari 0°–180°
    if angle < 0 or angle > 180:
        buzzer.duty_u16(30000)  # Buzzer bunyi
    else:
        buzzer.duty_u16(0)       # Buzzer mati

    sleep(0.05)



5. Kondisi [Kembali]

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


6. Video Simulasi [Kembali]



7. Download File [Kembali]

Download HTML [Download]
Download File Rangkaian [Download]
Download Video Simulasi [Download]
Download Listing Program [Download]
Datasheet Raspberry pi pico [Download]
Datasheet Potensiometer [Download]
Datasheet Motor Servo [Download]

Komentar

Postingan populer dari blog ini

MODUL 1 PRAKTIKUM UP & UC

Modul 1 Praktikum Sistem Digital

Modul 3 Praktikum Sistem Digital