Laporan Akhir M3

 [KEMBALI KE MENU SEBELUMNYA]




1. Prosedur
 [Kembali]

1. Rangkai semua komponen pada breadboard yang terhubung ke mikrokontroler Raspberry Pi Pico.
2. Buat program untuk mikrokontroler Raspberry Pi Pico di software Thonny.
3. Inputkan program ke dalam mikrokontroler melalui USB.
4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
5. Selesai.


2. Hardware dan Diagram Blok [Kembali]

Raspberry Pi Pico 

 

 

Potensiometer

 

Power Supply
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]





Prinsip Kerja

Sistem ini memanfaatkan Raspberry Pi Pico sebagai pengendali utama yang mengatur interaksi antara potensiometer, motor servo, dan LCD melalui jalur komunikasi dan kendali masing-masing. Potensiometer berperan sebagai sensor input yang menghasilkan tegangan analog berdasarkan posisi putarnya. Tegangan ini dibaca oleh salah satu pin ADC pada Raspberry Pi Pico dan dikonversi menjadi nilai digital yang merepresentasikan sudut tertentu.

Nilai sudut yang diperoleh selanjutnya digunakan untuk mengontrol posisi motor servo. Raspberry Pi Pico menghasilkan sinyal PWM (Pulse Width Modulation) melalui salah satu pin digitalnya, yang kemudian dikirim ke pin sinyal pada servo. Motor servo akan merespons dengan memutar porosnya sesuai dengan lebar pulsa PWM yang diterima, sejalan dengan nilai sudut dari potensiometer.

Selain itu, Raspberry Pi Pico juga mengirimkan informasi sudut tersebut ke layar LCD menggunakan protokol komunikasi I2C melalui dua jalur, yaitu SDA dan SCL. Modul LCD bertindak sebagai perangkat slave yang menerima data karakter dari Raspberry Pi Pico untuk ditampilkan secara real-time. Dengan cara ini, seluruh komponen dalam sistem bekerja secara terintegrasi: potensiometer sebagai input, Raspberry Pi Pico sebagai pemroses dan pengendali, motor servo sebagai aktuator, serta LCD sebagai media output informasi.



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: 50 Hz

# === 3. Setup LCD I2C 16x2 ===
I2C_ADDR = 0x27  # Alamat I2C LCD, bisa juga 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 dari satu rentang ke rentang lain ===
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 Duty Cycle Servo ===
SERVO_MIN_DUTY = 1500   # Duty cycle untuk sudut 0°
SERVO_MAX_DUTY = 7500   # Duty cycle untuk sudut 180°

# === Loop utama ===
while True:
    # Baca nilai dari potensiometer (0 - 65535)
    pot_value = pot.read_u16()

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

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

    # Tampilkan sudut pada 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 layar LCD

5. Video Demo [Kembali]




6. Analisa [Kembali]

1. Analisis Konfigurasi Rangkaian dan Program

Dalam percobaan ini, konfigurasi rangkaian dan program disesuaikan dengan jenis protokol komunikasi yang digunakan. Untuk UART (Universal Asynchronous Receiver Transmitter), komunikasi dilakukan melalui dua jalur utama, yaitu TX (Transmit) dan RX (Receive), yang dihubungkan langsung antara dua mikrokontroler atau antara mikrokontroler dan perangkat lain seperti modul Bluetooth atau GPS. Programnya menginisialisasi komunikasi serial dengan kecepatan baud tertentu (misalnya, 9600 bps) menggunakan fungsi `Serial.begin()`.

Pada protokol SPI (Serial Peripheral Interface), konfigurasi rangkaian melibatkan empat jalur utama: MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Serial Clock), dan SS/CS (Slave Select/Chip Select). Jalur-jalur ini menghubungkan mikrokontroler dengan perangkat periferal seperti sensor atau modul memori. Programnya mengatur mikrokontroler sebagai master atau slave, menginisialisasi SPI dengan fungsi `SPI.begin()`, dan menggunakan fungsi `SPI.transfer()` untuk mengirim dan menerima data.

Sementara itu, protokol I²C (Inter-Integrated Circuit) menggunakan dua jalur utama: SDA (Serial Data Line) dan SCL (Serial Clock Line). Jalur-jalur ini memungkinkan komunikasi antara mikrokontroler (sebagai master) dan beberapa perangkat slave dengan alamat unik masing-masing. Programnya menggunakan pustaka seperti `Wire.h` untuk Arduino, menginisialisasi komunikasi dengan `Wire.begin()`, dan menggunakan fungsi `Wire.write()` dan `Wire.read()` untuk mengirim dan menerima data.

2. Proses Komunikasi yang Terjadi pada Percobaan (UART/SPI/I²C)

Proses komunikasi pada percobaan ini berbeda tergantung pada protokol yang digunakan. Pada UART, komunikasi bersifat asinkron dan tidak memerlukan sinyal clock bersama. Data dikirim dalam bentuk frame yang terdiri dari start bit, data bit, optional parity bit, dan stop bit. Komunikasi terjadi secara dua arah antara dua perangkat.

Pada SPI, komunikasi bersifat sinkron dan menggunakan sinyal clock bersama. Mikrokontroler sebagai master mengontrol komunikasi dengan perangkat slave melalui jalur SS/CS. Data dikirim secara full-duplex, memungkinkan pengiriman dan penerimaan data secara simultan.

Sedangkan pada I²C, komunikasi juga bersifat sinkron dan memungkinkan multiple master dan multiple slave. Mikrokontroler sebagai master menginisiasi komunikasi dengan mengirimkan alamat slave yang dituju, diikuti dengan operasi baca atau tulis. Semua perangkat terhubung melalui dua jalur SDA dan SCL.

3. Proses Input dan Output yang Terjadi pada Percobaan

Dalam percobaan ini, proses input melibatkan penerimaan data atau sinyal oleh mikrokontroler dari perangkat eksternal seperti sensor, modul komunikasi, atau mikrokontroler lain. Misalnya, data suhu dari sensor melalui I²C atau data dari modul GPS melalui UART. Proses output melibatkan pengiriman data atau sinyal oleh mikrokontroler ke perangkat eksternal seperti menyalakan LED, mengirim data ke LCD, atau mengontrol motor. Misalnya, mengirimkan data ke layar OLED melalui I²C atau mengirimkan perintah ke modul Bluetooth melalui UART.

4. Algoritma Percobaan

Algoritma umum yang digunakan dalam percobaan komunikasi mikrokontroler ini meliputi beberapa tahap. Pertama, inisialisasi yang mencakup pengaturan konfigurasi pin dan inisialisasi protokol komunikasi yang digunakan (UART, SPI, atau I²C). Kedua, loop utama yang terdiri dari penerimaan data, pemrosesan data, dan pengiriman data. Pada tahap penerimaan data, sistem mengecek apakah ada data yang masuk melalui protokol komunikasi yang digunakan. Jika ada, data dibaca dan disimpan untuk diproses. Pada tahap pemrosesan data, data yang diterima diproses sesuai dengan kebutuhan aplikasi, seperti mengubah format data atau melakukan perhitungan tertentu. Pada tahap pengiriman data, data hasil pemrosesan dikirimkan ke perangkat lain melalui protokol komunikasi yang sesuai. Terakhir, penanganan kesalahan yang melibatkan implementasi mekanisme untuk mendeteksi dan menangani kesalahan komunikasi, seperti parity check pada UART atau acknowledgment pada I²C.


7. Link Download [Kembali]
Download File Rangkaian [Download]
Download Video Simulasi [Download]
Download Listing Program [Download]


Komentar

Postingan populer dari blog ini