Kamis, 22 Mei 2025

LA Modul 3 Mikro



Percobaan 6

I2C (Pico-LCD)

1. Prosedur [Kembali]

  1. Rangkai semua komponen 
  2. Buat program di aplikasi Thonny
  3. Jalankan program dan inputkan program 
  4. Jalankan rangkaian

2. Hardware dan Diagram Blok [Kembali]

  • 1. Mikrokontroler STM32F103C8
    STM32F103C8 board – Microscale

    2. Mikrokontroler Raspberry Pi Pico
    Raspberry Pi Pico - Seeed Studio | Mouser 
     
    3. Development Board
    BREADBOARD / PROJECTBOARD / PROTOBOARD 400 HOLES di M-kontrol | Tokopedia




     
    4. LCD OLED
     

     


    5. Potensiometer

  • 6. Motor Servo

Diagram Blok



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali] 





Prinsip Kerja :

Rangkaian ini dirancang untuk mengendalikan sudut putar motor servo menggunakan input dari sebuah potensiometer, serta menampilkan nilai sudut atau nilai ADC hasil pembacaan potensiometer pada modul LCD 16x2. Sistem dikendalikan oleh mikrokontroler Raspberry Pi Pico.

Potensiometer berfungsi sebagai sumber input analog yang menghasilkan tegangan bervariasi antara 0 hingga 3.3 volt tergantung pada posisi putarannya. Tegangan ini dibaca oleh mikrokontroler melalui pin ADC (Analog-to-Digital Converter), kemudian dikonversi menjadi nilai digital.

Nilai digital hasil konversi ADC selanjutnya digunakan untuk dua keperluan:

  1. Mengendalikan posisi motor servo, dengan cara mengubah nilai ADC menjadi sinyal PWM (Pulse Width Modulation). Sinyal PWM tersebut dikirimkan ke pin kontrol servo motor, yang kemudian menggerakkan poros motor sesuai dengan lebar pulsa. Semakin besar nilai ADC, semakin besar pula sudut putar motor servo.

  2. Menampilkan nilai pada LCD 16x2, di mana nilai ADC atau nilai sudut servo dikirim dalam bentuk data karakter ke LCD menggunakan mode 4-bit. Hal ini memungkinkan pengguna dapat memantau secara langsung nilai yang dihasilkan dari potensiometer.

Secara keseluruhan, saat potensiometer diputar, nilai ADC akan berubah, menyebabkan perubahan posisi sudut motor servo, dan nilai tersebut juga ditampilkan secara real-time pada LCD.

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. Download File [Kembali]

Download Video Demo [download]

Download Datasheet Mikrokontroler Raspberry Pi Pico [download]


Related Posts:

0 komentar:

Posting Komentar