mPuP M2 P4 K7




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 kendali yang menggunakan Raspberry Pi Pico sebagai pusat kontrol, dengan potensiometer sebagai input, servo motor sebagai aktuator, dan buzzer sebagai alat pemberi sinyal peringatan. Potensiometer menghasilkan sinyal analog berupa perubahan tegangan berdasarkan putaran knop, yang kemudian dibaca melalui pin input analog Raspberry Pi Pico dan dikonversi menjadi data digital. Data digital tersebut digunakan untuk mengendalikan sudut putar servo motor dengan mengatur sinyal PWM (Pulse Width Modulation). Dengan cara ini, posisi servo motor akan mengikuti perubahan posisi potensiometer secara linier. Selain itu, Raspberry Pi Pico juga dapat mengaktifkan buzzer untuk memberikan tanda peringatan suara apabila nilai dari potensiometer atau posisi servo melebihi batas yang telah ditetapkan dalam program. Sistem semacam ini umumnya diterapkan dalam praktik pembelajaran mikrokontroler, kontrol aktuator, dan sistem monitoring sederhana yang 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

# Fungsi untuk 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)

while True:
    val = pot.read_u16()  # Baca nilai ADC 16-bit (0 - 65535)

    # === Servo Motor ===
    pot_value = pot.read_u16()
    angle = map_value(pot_value, 0, 65535, 180, 0)
    duty = map_value(angle, 0, 180, 1500, 7500)
    servo.duty_u16(duty)

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

    # === Buzzer ===
    if 0 < angle < 180:
        # Jika sudut servo lebih dari 0 dan kurang dari 180
        freq = int(200 + (val / 65535) * (2000 - 200))  # Map ke 200-2000 Hz
        buzzer.freq(freq)
        buzzer.duty_u16(30000)  # Buzzer bunyi
    else:
        buzzer.duty_u16(0)      # Buzzer mati

    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 [LINK]
















Komentar

Postingan populer dari blog ini