TP 1 MODUL 2 PRAKTIKUM UP UC
Tugas Pendahuluan 1 Modul 2
(Percobaan 4 Kondisi 4)
- Membuat rangkaian di proteus sesuai dengan kondisi 4 percobaan 4.
- Buat program untuk Raspbery Pi Pico di software Wokwi Simulator.
- Setelah program selesai di upload, jalankan simulasi rangkaian pada software wokwi.
- Untuk uji coba adanya gerakan servo motor, potensiometer divariasikan nilainya untuk mengubah putaran servo motor.
- Selesai.
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi Sebelum 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]
Datasheet Motor Servo [Download]
Komentar
Posting Komentar