Tugas Pendahuluan 1 Modul 2
(Percobaan 4 Kondisi 7)

1. Prosedur
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Buat program untuk mikrokontroler Raspberry Pi Pico dengan menggunakan website Wokwi
3. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

a) Raspberry Pi Pico




2. Motor DC (Dinamo DC, Motor Servo, dan Motor Stepper





3. Buzzer





4. Power Supply

 








3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:




Rangkaian Simulasi Setelah dirunning:
 




Prinsip Kerja : 

Rangkaian ini merupakan sistem kontrol berbasis Raspberry Pi Pico yang menggunakan potensiometer sebagai input, servo motor sebagai aktuator, dan buzzer sebagai alat pemberi peringatan. Potensiometer berfungsi menghasilkan sinyal analog berupa tegangan yang bervariasi sesuai dengan posisi knop-nya. Tegangan ini dibaca oleh salah satu pin analog pada Raspberry Pi Pico, kemudian dikonversi menjadi nilai digital. Nilai digital tersebut digunakan untuk menentukan posisi sudut dari servo motor melalui sinyal PWM (Pulse Width Modulation). Dengan demikian, posisi servo akan mengikuti putaran dari potensiometer secara proporsional. Selain itu, buzzer yang terhubung juga dapat diaktifkan oleh Raspberry Pi Pico untuk memberikan peringatan suara jika nilai potensiometer atau posisi servo melebihi batas tertentu yang telah ditentukan dalam program. Sistem ini sering digunakan dalam aplikasi pembelajaran mikrokontroler, kendali aktuator, serta sistem monitoring sederhana berbasis input manual.

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

# Variabel untuk menyimpan nilai potensiometer sebelumnya
prev_pot_value = pot.read_u16()

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 (0 - 65535)
    pot_value = pot.read_u16()
   
    # === Servo Motor ===
    # 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)
   
    # === Logika untuk buzzer ===
    # Buzzer menyala jika sudut >0° dan <180°
    if angle > 0 and angle < 180:
        buzzer.duty_u16(30000)  # Buzzer ON
        # Frekuensi buzzer tergantung sudut
        freq = map_value(angle, 0, 180, 200, 2000)
        buzzer.freq(freq)
    else:
        buzzer.duty_u16(0)  # Buzzer OFF
   
    # === Deteksi perubahan potensiometer ===
    if pot_value < prev_pot_value:
        # Jika nilai potensiometer diperkecil, servo bergerak searah jarum jam
        # (Sudut berkurang, sudah dihandle oleh mapping di atas)
        pass
   
    # Update nilai potensiometer sebelumnya
    prev_pot_value = pot_value
   
    # Print untuk debugging
    print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}")
    sleep(0.05)



5. Kondisi [Kembali]

Percobaan 4 Kondisi 7
Buatlah rangkaian seperti gambar pada percobaan 4, jika nilai pada potensiometer diperkecil maka servo bergerak searah jarum jam dan jika jika sudut servo >0 ° dan <180 ° buzzer berbunyi
6. Video Simulasi [Kembali]





7. Download File [Kembali]

Download File Rangkaian [Download]
Download Video Simulasi [Download]
















Komentar

Postingan populer dari blog ini