M2 LA 1
Percobaan 4
Motor Servo, Buzzer, & Potensiomter
- Rangkailah sistem percobaan sesuai dengan diagram yang ada, dengan input berupa potensiometer, serta output berupa buzzer dan motor servo. Sambungkan potensiometer, motor servo dan buzzer menggunakan kabel jumper ke pin rapsberry pi pico yang sesuai dengan pengaturan program.
- Uploadlah program pada thonny IDE
- Setelah program selesai, percobaan dapat dilihat dengan menyesuaikan prinsip kerja rangkaian
A. Hardware
B. Blok Diagram
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
A. Rangkaian Simulasi
B. Prinsip Kerja
Potensiometer berfungsi sebagai input analog yang mengirimkan nilai tegangan ke pin ADC (Analog to Digital Converter) pada Raspberry Pi Pico. Saat pengguna memutar knop potensiometer, nilai tegangan yang terbaca oleh mikrokontroler akan berubah, dan perubahan ini digunakan untuk mengatur posisi sudut pada servo motor. Raspberry Pi Pico akan mengolah nilai analog dari potensiometer dan mengubahnya menjadi sinyal PWM (Pulse Width Modulation) yang dikirimkan ke servo motor untuk menggerakkannya ke posisi tertentu sesuai dengan nilai potensiometer, perputaran motor servo benbanding terbalik dengan perputaran pada wiper potensiometer, dimana saat wiper di kearah kiri maka motor servo akan berputar berlawanan jarum jam sedangkan saat wiper diputar kearah kana maka motor servo akan bergerak mengikuti arah jarum jam. Selain itu, rangkaian ini juga dilengkapi dengan buzzer sebagai output audio. Buzzer kemungkinan besar akan diaktifkan ketika nilai potensiometer mencapai ambang batas tertentu, misalnya saat diputar ke posisi maksimum, sebagai bentuk peringatan atau notifikasi.
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
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() # Nilai ADC 16-bit (0 -
65535)
# === Servo Motor ===
#
Membaca nilai potensiometer (0 - 65535)
pot_value = pot.read_u16()
# 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)
# Print untuk debugging
print(f"Pot Value:
{pot_value}, Angle: {angle}, Duty: {duty}")
# === Buzzer ===
#
Ubah val ke frekuensi (200 Hz - 2000 Hz)
freq = int(200 + (val / 65535) * (2000 - 200)) buzzer.freq(freq)
buzzer.duty_u16(30000) # Volume/suaranya
sleep(0.05)
- Download video demo klik disini
- Datasheet raspberry Pi Pico klik disini
- Datasheet buzzer klik disini
- Datasheet Motor servo klik disini
- File HTML klik disin