LA M3



Percobaan 6
I2C (PICO - LCD)

1. Prosedur[Kembali]

  1. Rangkai dengan inputnya yaitu potensiometer dan outputnya yaitu 1 motor servo. Kemudian LCD I2C sebagai slave dan raspberry pi pico sebagai master.
  2. Buatlah program dengan konfigurasi pin input dan output berdasarkan pada pin GP Raspberry yang telah dirangkai sebelumnya. Kemudian buatlah program untuk menghasilkan output motor servo bergerak searah jarum jam.
  3. Buat inisialisasi program LCD I2C, LCD diatur sebagai slave yang akan menampilkan data sudut servo
  4. Run program, putar potensiometer untuk melihat output motor servo dan tulisan sudut servo beserta nilainya
  5. Program selesai

2. Hardware dan Diagram Blok[Kembali]

A. Hardware



(Raspberry Pi Pico, Motor Servo, LCD, & Potensiometer)

B. Blok Diagram



3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

A. Rangkaian Simulasi


B. Prinsip Kerja

Rangkaian pada gambar menunjukkan sistem berbasis Raspberry Pi Pico yang terdiri dari potensiometer sebagai input analog, motor servo sebagai aktuator, dan LCD 16x2 sebagai tampilan. Prinsip kerjanya diawali dengan pembacaan nilai analog dari potensiometer oleh Raspberry Pi Pico melalui pin ADC. Tegangan analog ini dikonversi menjadi nilai digital yang mewakili posisi atau perubahan resistansi pada potensiometer. Nilai digital tersebut selanjutnya digunakan untuk mengatur sudut putar motor servo. Raspberry Pi Pico menghasilkan sinyal PWM (Pulse Width Modulation) pada salah satu pin GPIO untuk mengontrol servo. Semakin besar nilai dari potensiometer, maka duty cycle PWM akan meningkat, sehingga posisi sudut servo juga berubah sesuai nilai tersebut.

Selain itu, nilai yang dibaca dari potensiometer juga ditampilkan pada layar LCD 16x2 untuk memberikan umpan balik visual kepada pengguna. Komunikasi antara Raspberry Pi Pico dan LCD dilakukan melalui protokol I2C, yang memanfaatkan dua jalur komunikasi yaitu SDA dan SCL, sehingga hanya membutuhkan sedikit pin GPIO. Semua komponen dalam rangkaian ini terhubung ke sumber tegangan yang sesuai, dan ground dari setiap komponen dihubungkan ke ground utama agar memiliki referensi tegangan yang sama. Dengan demikian, sistem ini memungkinkan pengguna untuk mengontrol sudut motor servo secara interaktif menggunakan potensiometer, serta memantau hasilnya melalui tampilan LCD.

4. Flowchart dan Listing Program[Kembali]




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]






7. Download File[Kembali]

Rangkaian Simulasi Klik Disini

Video Demo Klik Disini

DataSheet Raspberry Pi Pico Klik Disini 

DataSheet Potensiometer Klik Disini

DataSheet I2C LCD Klik Disini

DataSheet Motor Servo Klik Disini

Tidak ada komentar:

Posting Komentar