Laporan Akhir Percobaan 6 Modul 3


1. Prosedur [Kembali]

  1. Rangkai semua komponen pada breadboard yang terhubung ke  Raspberry Pi Pico.
  2. Hubungkan Raspberry Pi Pico dengan aplikasi Thony IDE menggunakan kabel  USB.
  3. Build program yang telah dibuat, lalu inputkan program ke dalam mikrokontroler melalui stlink.
  4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
  5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

    1. Raspberry Pi Pico


    2. Potensiometer

    3. Breadboard

BREADBOARD / PROJECTBOARD / PROTOBOARD 400 HOLES di M-kontrol | Tokopedia
 
    4. Push Button






    5LCD

Diagram Blok : 

3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

- Rangkaian 
- Prinsip Kerja
Potensiometer berfungsi sebagai input analog yang menghasilkan tegangan bervariasi sesuai dengan posisi putarannya. Tegangan ini dibaca oleh Raspberry Pi Pico melalui pin ADC (Analog-to-Digital Converter), lalu dikonversi menjadi nilai digital. Nilai tersebut kemudian digunakan untuk mengatur posisi sudut dari motor servo melalui sinyal PWM (Pulse Width Modulation) yang dikeluarkan oleh Pico. Dengan demikian, pengguna dapat mengatur sudut servo hanya dengan memutar potensiometer. Selain itu, nilai dari potensiometer atau sudut servo yang sedang aktif ditampilkan pada layar LCD, sehingga pengguna dapat memantau secara langsung hasil input dan respon dari sistem.

4. Flowchart dan Listing Program [Kembali]

- Flowchart



- Listing Program
from machine import Pin, ADC, PWM, I2C
from pico_i2c_lcd import I2cLcd
import utime
# 1. Setup Potensiometer (GP26 = ADC0)
pot = ADC(Pin(26))
# 2. Setup Servo (GP15)
servo = PWM(Pin(15))
servo.freq(50) # Frekuensi PWM standar servo
# 3. Setup LCD I2C 16x2
I2C_ADDR = 0x27 # Alamat I2C LCD, bisa 0x3F tergantung modul
I2C_NUM_ROWS = 2
I2C_NUM_COLS = 16
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) # GP0=SDA, GP1=SCL
lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)
# Fungsi untuk mapping nilai
def map_value(x, in_min, in_max, out_min, out_max):
 return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
# Kalibrasi servo
SERVO_MIN_DUTY = 1500 # Duty cycle untuk 0°
SERVO_MAX_DUTY = 7500 # Duty cycle untuk 180°
while True:
 # Baca nilai potensiometer
 pot_value = pot.read_u16()

 # Konversi ke sudut 0-180°
 angle = map_value(pot_value, 0, 65535, 0, 180)

 # Konversi sudut ke duty cycle
 duty = map_value(angle, 0, 180, SERVO_MIN_DUTY, SERVO_MAX_DUTY)
 servo.duty_u16(duty)

 # Tampilkan di LCD
 lcd.clear()
 lcd.putstr("Sudut Servo:")
 lcd.move_to(0, 1)
 lcd.putstr(f"{angle} derajat")

 utime.sleep_ms(200) # Delay untuk mengurangi flicker

5. Video Demo [Kembali]

6. Analisa [Kembali]

7. Video Simulasi [Kembali]


8. Download File [Kembali]

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

Komentar

Postingan populer dari blog ini

Tugas Besar

Modul 1 Prak. Sistem Digital