Modul 1 Percobaan 4
Motor Servo, Buzzer, & Potensiometer
- Siapkan komponen dan alat yang diperlukan seperti raspberry pi pico, buzzer, potensiometer, dan Motor servo
- Rangkailah komponen seperti gambar percobaan di modul.
- Jika komponen sudah selesai dirangkai, hubungkan ke sofware Thonny untuk mendapatkan program.
- Inputkan listring program ke dalam Thonny.
- Simulasikan rangkaian.
2. Hardware dan Diagram Blok[Kembali]
- Hardware :
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
- Rangkaian Simulasi
- Prinsip Kerja :
Buatlah rangkaian sesuai kondisi. Dimana ada rasberry pi pico. Buzzer kaki positif dihubungkan ke GP14 dan kaki negatif dihubungkan ke GND rasberry pi pico. Potensiometer kaki VCC dihubungka ke 3,3V pi pico, kaki GND dihubungkan ke GND pi pico, kaki out[ut tengah dihubungkan ke GP26 (ADC0). Servo motor kaki VCC dihubungkan ke 5V pipico, kaki GND dihubungkan ke GND pipico, kaki sinyal dihubungkan ke GP16 pi pico.
Kemudian buatkan listing program sesuai kondisi agar dapat menjalankan rangkaian. Pada program ada yang mengatur pin terhubung dengan potensiometer, servo, dan buzzer. Servo menggunakan frekuensi 50 Hz, buzzer 1000 Hz. Membaca nilai analog dari potensiometer (0–65535), kemudian di-mapping ke sudut 0°–180° untuk servo. Sudut diubah ke sinyal PWM dengan duty cycle yang sesuai agar servo bergerak. Jika sudut antara 0° dan 180°, buzzer akan berbunyi (duty 50%). Namun, logika ini bisa disederhanakan (lihat catatan di bawah).
Ketika potensiometer diputar, nilai ADC dari GP26 berubah.
Nilai tersebut dimapping ke sudut 0°–180°, kemudian servo bergerak sesuai sudut tersebut (searah jarum jam saat nilai potensiometer naik).
Selama sudut servo berada dalam rentang > 0° dan < 180°, buzzer akan menyala/bunyi karena diberikan sinyal PWM.
Jika servo tidak berada dalam rentang itu (idealnya jika sudut tepat di 0° atau 180°), buzzer akan mati.
- Flowchart :
- Listing Program :
from machine import Pin, PWM, ADC
from time import sleep
# Inisialisasi
pot = ADC(26) # Potensiometer di GP26 (ADC0)
servo = PWM(Pin(16)) # Servo di GP16
buzzer = PWM(Pin(14)) # Buzzer di GP14
# Konfigurasi frekuensi awal
servo.freq(50) # Frekuensi untuk servo (50 Hz)
buzzer.freq(1000) # Frekuensi awal buzzer
# Fungsi mapping dari satu rentang ke rentang lain
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)
# Loop utama
while True:
val = pot.read_u16() # Nilai ADC dari potensiometer (0 - 65535)
# === Kontrol Servo Motor ===
angle = map_value(val, 0, 65535, 0, 180) # Mapping ke sudut 0–180°
duty = map_value(angle, 0, 180, 1500, 7500) # Duty cycle untuk PWM servo
servo.duty_u16(duty)
# Debug output
print(f"Pot Value: {val}, Angle: {angle}, Duty: {duty}")
# === Kontrol Buzzer ===
freq = int(200 + (val / 65535) * (2000 - 200)) # Mapping ke frekuensi 200–2000 Hz
buzzer.freq(freq)
buzzer.duty_u16(30000) # Volume buzzer (50% duty cycle)
sleep(0.05) # Delay untuk kestabilan
Percobaan 4
Buatlah rangkaian jika nilai pada potensiometer diperbesar maka servo bergerak searah jarum jam dan jika jika sudut servo >0 ° dan <180 ° buzzer berbunyi.
- HTML [klik disini]
- Rangkaian simulasi [klik disini]
- Video demo [klik disini]
- Datasheet Rasberry Pi Pico [klik disini]
- Datasheet Buzzer [klik disini]
- Datasheet Motor Servo [klik disini]
- Datasheet Potentiometer [klik disini]
Tidak ada komentar:
Posting Komentar