MEMBACA TEGANGAN ANALOG DENGAN RASPBERRY PI TRAINER KIT ADVANCED (RTKA) - TUTORIAL 7

 

LAPORAN PRAKTIKUM

MEMBACA TEGANGAN ANALOG DENGAN RASPBERRY PI TRAINER KIT ADVANCED (RTKA)

TUTORIAL 7

LAPORAN PRAKTIKUM LABORATORIUM MIKROKONTROLER II

 

 

 



 

Dosen Pengampu:
Dr. Samuel Beta K., Ing. Tech., M.T.

Disusun oleh:
Kelompok 1

06 - Bagas Agung Pramudya

RE-3A (4.34.22.0.06)

15 - M. Ajik Al-Khusain

RE-3A (4.34.22.0.16)

20 - Roytua Daud S.

RE-3A (4.34.22.0.22)

22 - Tiara Hande Dias K.

RE-3A (4.34.22.0.25)

 

PROGRAM STUDI TEKNOLOGI REKAYASA ELEKTRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2025

BAB I

PENDAHULUAN

1.1 Latar Belakang

Dalam dunia elektronika dan sistem kendali, pembacaan data dari lingkungan sekitar sering kali menggunakan sensor yang menghasilkan sinyal analog. Sinyal analog ini harus diubah menjadi sinyal digital agar dapat diproses oleh sistem digital seperti komputer atau mikrokontroler. Raspberry Pi sebagai salah satu platform populer dalam pengembangan sistem embedded tidak memiliki fitur pembacaan sinyal analog secara langsung. Oleh karena itu, diperlukan konverter analog ke digital (ADC) eksternal seperti MCP3008 agar Raspberry Pi mampu membaca data dari sensor analog.

Penggunaan Raspberry Pi Trainer Kit Advanced (RTKA) memberikan solusi praktis dan terintegrasi bagi mahasiswa dan pengembang untuk belajar sistem kendali cerdas secara menyeluruh. RTKA menyediakan berbagai komponen pendukung dan materi pembelajaran dari tingkat dasar hingga lanjut, yang memungkinkan eksplorasi konsep-konsep penting dalam elektronika digital, pengolahan sinyal, dan kendali perangkat keras.

Dalam praktikum ini, salah satu fokus utama adalah membaca tegangan dari trimpot (trimmer potensiometer), sebuah sensor sederhana yang menghasilkan sinyal analog tergantung pada posisi putarnya. Sinyal dari trimpot akan dibaca oleh MCP3008 dan diteruskan ke Raspberry Pi melalui antarmuka SPI. Selanjutnya, nilai digital hasil pembacaan akan dikonversi menjadi nilai tegangan dan ditampilkan melalui terminal. Kegiatan ini memberikan pemahaman mendalam tentang cara kerja sistem konversi ADC, antarmuka komunikasi SPI, serta pemrograman pada Raspberry Pi menggunakan Python.

1.2 Tujuan

  1. Mempelajari fungsi dan cara kerja MCP3008 sebagai ADC 10-bit dalam sistem berbasis Raspberry Pi.
  2. Memahami langkah-langkah integrasi antara Raspberry Pi dan sensor analog menggunakan protokol komunikasi SPI.
  3. Mengimplementasikan program Python yang mampu membaca data ADC dan mengkonversinya menjadi tegangan.
  4. Mengamati dan menganalisis perubahan nilai ADC dan tegangan sebagai respons dari putaran trimpot.
  5. Mengembangkan keterampilan praktik dalam menghubungkan perangkat keras dan debugging sistem berbasis RTKA.

1.3 Rumusan Masalah

  1. Apa alasan Raspberry Pi membutuhkan ADC eksternal untuk membaca sinyal analog?
  2. Bagaimana cara kerja komunikasi SPI antara MCP3008 dan Raspberry Pi?
  3. Bagaimana konversi data digital dari ADC menjadi tegangan dapat dilakukan secara akurat?
  4. Apa saja tantangan teknis yang mungkin muncul saat menghubungkan MCP3008 dengan Raspberry Pi?
  5. Bagaimana sistem ini dapat dikembangkan lebih lanjut untuk membaca sensor analog lainnya?

 

BAB II

TINJAUAN PUSTAKA

2.1 Raspberry Pi Trainer Kit Advanced (RTKA)

Raspberry Pi Trainer Kit Advanced (RTKA) merupakan kit pembelajaran elektronik yang dirancang untuk memfasilitasi pengajaran dan eksplorasi teknologi berbasis Raspberry Pi. RTKA dikembangkan agar pengguna dapat memahami konsep sistem kendali mulai dari level pemula hingga lanjutan, mencakup bidang pemrograman, pengendalian input/output, sensor, aktuator, serta aplikasi kecerdasan buatan.

RTKA berisi berbagai komponen elektronik, seperti Raspberry Pi 4B, sensor PIR, ultrasonic, LDR, trimpot, kamera Raspberry Pi, IR line follower, dan lain sebagainya. Selain itu, tersedia juga aktuator seperti motor DC dan buzzer, serta komponen tambahan seperti MCP3008 (ADC), LED, L298N motor driver, power supply, dan kabel-kabel pendukung. Materi pembelajaran yang menyertainya mencakup lebih dari 10 tutorial terstruktur mulai dari menyalakan LED hingga mengenali wajah menggunakan OpenCV.

Keunggulan RTKA terletak pada ketersediaan dokumentasi yang lengkap, kemudahan integrasi antar komponen, serta penggunaan antarmuka komunikasi standar industri seperti SPI dan I2C. Dengan fitur-fitur tersebut, RTKA menjadi pilihan ideal sebagai media pembelajaran sistem kendali cerdas berbasis Raspberry Pi.

2.2 MCP3008

MCP3008 adalah ADC (Analog to Digital Converter) 10-bit dari Microchip yang memiliki 8 saluran input analog. Chip ini menggunakan protokol komunikasi SPI untuk berinteraksi dengan mikrokontroler atau komputer seperti Raspberry Pi. Dalam pembacaan 10-bit, MCP3008 mampu mengubah sinyal analog dalam rentang 0 hingga 3.3V menjadi nilai digital antara 0 hingga 1023. Nilai ini kemudian dapat dikonversi ke dalam bentuk tegangan kembali dengan menggunakan rumus matematis:

Penggunaan MCP3008 sangat penting dalam sistem Raspberry Pi karena menyediakan jembatan antara sensor analog dan sistem digital. Fleksibilitas dan dokumentasi yang luas menjadikan MCP3008 sebagai salah satu ADC eksternal paling banyak digunakan di dunia pendidikan dan industri.

2.3 Trimpot

Trimpot (trimmer potensiometer) adalah resistor variabel tiga kaki yang digunakan untuk menghasilkan tegangan analog yang dapat diatur. Trimpot digunakan sebagai input ke MCP3008 karena mudah dioperasikan dan nilainya dapat dikontrol dengan memutar sumbu potensiometernya. Saat trimpot diputar, resistansi internal berubah, yang menyebabkan perubahan pada tegangan output di pin tengah. Tegangan inilah yang dibaca oleh ADC.

Dalam praktiknya, trimpot sering digunakan untuk mengkalibrasi perangkat atau mengatur level input sensor sebelum masuk ke sistem digital. Pada eksperimen ini, trimpot berfungsi sebagai penghasil sinyal analog yang mewakili masukan variabel dari lingkungan.

2.4 SPI (Serial Peripheral Interface)

SPI adalah protokol komunikasi sinkron yang umum digunakan untuk pertukaran data kecepatan tinggi antara mikrokontroler dan perangkat periferal seperti ADC, DAC, sensor, dan memori eksternal. SPI bekerja dengan prinsip master-slave, di mana Raspberry Pi bertindak sebagai master dan MCP3008 sebagai slave.

Empat jalur utama dalam SPI:

  • MISO (Master In Slave Out)
  • MOSI (Master Out Slave In)
  • SCLK (Serial Clock)
  • CS (Chip Select)

SPI memiliki keunggulan dalam hal kecepatan komunikasi dan kemudahan implementasi, terutama untuk aplikasi real-time seperti pembacaan sensor.

2.5 Python dan Spidev Library

Python adalah bahasa pemrograman yang fleksibel, mudah dibaca, dan memiliki pustaka yang sangat kaya. Raspberry Pi secara default mendukung Python, dan banyak pengembang sistem embedded menggunakannya untuk interaksi dengan perangkat keras.

Untuk mengakses protokol SPI di Raspberry Pi, digunakan library Python bernama spidev. Library ini memungkinkan pengguna membuka jalur komunikasi SPI, mengatur parameter SPI (seperti kecepatan dan mode), serta membaca dan menulis data ke perangkat slave seperti MCP3008. Kombinasi Python dan spidev memberikan antarmuka yang kuat dan efisien dalam mengembangkan aplikasi berbasis sensor.


 

BAB III

PERANCANGAN SISTEM

3.1 Alat dan Bahan

Adapun alat dan bahan yang digunakan dalam praktikum ini adalah sebagai berikut:

  1. Raspberry Pi 4B (terintegrasi pada RTKA)
  2. MCP3008 – Analog to Digital Converter 10-bit
  3. Trimpot (trimmer potensiometer) sebagai sensor tegangan
  4. Kabel jumper (male-male dan female-female)
  5. Breadboard (jika diperlukan)
  6. Power supply 5V/3A
  7. Laptop dengan aplikasi MobaXterm (untuk remote SSH)
  8. Software Python dengan pustaka spidev

3.2 Diagram Blok

Sistem pembacaan tegangan menggunakan trimpot melalui MCP3008 dan Raspberry Pi dapat digambarkan dalam bentuk diagram blok berikut:

Diagram blok menunjukkan bahwa trimpot menghasilkan tegangan analog yang masuk ke MCP3008. Nilai analog dikonversi menjadi digital melalui SPI dan diteruskan ke Raspberry Pi, kemudian ditampilkan melalui terminal.

3.3 Diagram Alir

Diagram alir berikut menjelaskan alur kerja sistem secara umum:







3.4 Langkah-Langkah Praktikum

  1. Persiapan Perangkat:
    • Pastikan Raspberry Pi telah terhubung dengan RTKA dan laptop melalui jaringan Wi-Fi.
    • Remote ke Raspberry Pi menggunakan MobaXterm via SSH.
  2. Rangkaian Perangkat Keras:
    • Hubungkan kaki kiri trimpot ke GND
    • Hubungkan kaki kanan trimpot ke 3.3V
    • Hubungkan kaki tengah trimpot ke channel 0 (CH0) MCP3008
    • Hubungkan MCP3008 ke Raspberry Pi melalui SPI:
      • VDD dan VREF ke 3.3V
      • AGND dan DGND ke GND
      • CLK ke GPIO11 (SCLK)
      • DOUT ke GPIO9 (MISO)
      • DIN ke GPIO10 (MOSI)
      • CS/SHDN ke GPIO8 (CE0)
  3. Aktivasi SPI:
    • Jalankan perintah berikut pada terminal Raspberry Pi:

sudo raspi-config

    • Pilih Interfacing Options → SPI → Pilih Yes → Reboot jika diminta.
  1. Instalasi Library:
    • Pastikan pustaka spidev sudah terinstal. Jika belum, jalankan:

sudo pip3 install spidev

  1. Penulisan Program Python:
    • Buat file Python bernama adc_trimpot.py
    • Tulis program untuk membaca dan menampilkan nilai ADC serta tegangan
  2. Eksekusi Program:
    • Jalankan program dengan perintah:

python3 adc_trimpot.py

    • Amati hasil pembacaan nilai ADC dan konversi tegangan di terminal
    • Putar trimpot dan perhatikan perubahan nilai
  1. Pengamatan:
    • Nilai ADC dan tegangan akan berubah sesuai posisi putar trimpot.
    • Uji kestabilan sistem dan keakuratan pembacaan.

 

BAB IV

HASIL DAN PEMBAHASAN

4.1 Hasil Pengamatan

Setelah sistem dirangkai dan program dijalankan, nilai ADC yang dibaca oleh Raspberry Pi dari MCP3008 ditampilkan pada terminal bersama dengan hasil konversi tegangan. Berikut ini adalah contoh hasil pembacaan:

Putaran Trimpot

Nilai ADC

Tegangan (V)

Minimum

0

0.00

1/4

256

~0.83

1/2

512

~1.65

3/4

768

~2.48

Maksimum

1023

~3.30

Pengamatan menunjukkan bahwa nilai tegangan naik secara linier seiring putaran trimpot ke arah maksimum. Nilai ADC akan selalu berada pada rentang 0–1023 sesuai dengan resolusi 10-bit MCP3008.

4.2 Analisis Sistem

Dari hasil di atas, dapat disimpulkan bahwa:

  1. Trimpot bekerja sebagai sensor input analog yang menghasilkan tegangan bervariasi antara 0–3.3V.
  2. MCP3008 mampu mengkonversi sinyal analog tersebut menjadi nilai digital dengan akurasi tinggi.
  3. Protokol SPI antara MCP3008 dan Raspberry Pi berjalan dengan baik dan tidak menunjukkan delay signifikan.
  4. Program Python dapat membaca data ADC dan mengubahnya menjadi nilai tegangan menggunakan rumus:
  5. Sistem responsif terhadap perubahan posisi trimpot secara real-time.

4.3 Permasalahan dan Solusi

Beberapa kendala yang sempat ditemukan selama praktikum antara lain:

  • Koneksi kabel longgar: menyebabkan nilai ADC tidak terbaca stabil. Solusi: periksa ulang koneksi jumper, pastikan tidak goyang.
  • SPI tidak aktif: program gagal dijalankan. Solusi: aktifkan SPI via raspi-config.
  • Nilai ADC tidak berubah: kemungkinan trimpot tidak terhubung benar. Solusi: cek orientasi kaki trimpot.

Setelah penyesuaian, sistem berjalan lancar dan seluruh data dapat dibaca dengan akurat.

4.4 Tangkapan Layar

Berikut adalah tangkapan layar hasil eksekusi program Python yang membaca nilai ADC dari MCP3008 dan menampilkan hasil konversi ke tegangan:





Tampilan tersebut menunjukkan bahwa:

  • Nilai ADC meningkat secara bertahap sesuai pergerakan trimpot.
  • Nilai tegangan terhitung secara otomatis dari nilai ADC.
  • Sistem bekerja real-time dan cukup stabil.

 

4.5 Listing Program

Berikut adalah contoh program Python untuk pembacaan ADC dari MCP3008:

import spidev

import time

 

# Inisialisasi SPI

spi = spidev.SpiDev()

spi.open(0, 0)  # SPI bus 0, device 0

spi.max_speed_hz = 1350000  # Kecepatan SPI

 

def read_adc(channel):

    """

    Membaca nilai ADC dari channel tertentu pada MCP3008.

    Channel harus antara 0 dan 7.

    """

    adc = spi.xfer2([1, (8 + channel) << 4, 0])

    data = ((adc[1] & 3) << 8) + adc[2]

    return data

 

def convert_to_voltage(adc_value, vref=3.3):

    """

    Mengkonversi nilai ADC ke tegangan.

    """

    return (adc_value * vref) / 1023

 

try:

    while True:

        # Baca nilai ADC dari channel 0 (CH0)

        adc_value = read_adc(0)

       

        # Konversi nilai ADC ke tegangan

        voltage = convert_to_voltage(adc_value)

       

        # Tampilkan hasil

        print(f"ADC Value: {adc_value}, Voltage: {voltage:.2f}V")

       

        # Jeda 1 detik

        time.sleep(1)

 

except KeyboardInterrupt:

    # Hentikan program dengan Ctrl+C

    spi.close()

    print("Program dihentikan.")

 

Program ini secara berkala membaca nilai ADC dari channel 0 MCP3008 dan mengkonversinya ke dalam tegangan. Nilai ditampilkan ke terminal setiap 0.5 detik.


 

BAB V

PENUTUP

5.1 Kesimpulan

Berdasarkan hasil praktikum yang telah dilakukan, dapat disimpulkan bahwa:

  1. Sistem pembacaan tegangan analog menggunakan trimpot melalui ADC MCP3008 dan Raspberry Pi berhasil diimplementasikan dengan baik. Trimpot menghasilkan sinyal analog yang dapat dikonversi menjadi data digital 10-bit oleh MCP3008 dan diteruskan ke Raspberry Pi melalui protokol SPI.
  2. Raspberry Pi dengan bantuan pustaka Python spidev mampu memproses data digital dari MCP3008 dan mengubahnya menjadi tegangan dengan akurasi yang baik. Sistem bekerja secara real-time dan responsif terhadap perubahan posisi trimpot.
  3. Seluruh rangkaian sistem mulai dari perangkat keras, komunikasi SPI, hingga pemrograman Python terintegrasi secara fungsional dan memberikan pemahaman mendalam mengenai pembacaan sensor analog pada sistem digital.

5.2 Tanya Jawab

1. Apa alasan Raspberry Pi membutuhkan ADC eksternal seperti MCP3008 untuk membaca trimpot, dan mengapa MCP3008 dipilih dalam praktikum ini? (Adinda L. – 02)

Jawaban:
Raspberry Pi tidak memiliki pin input analog bawaan, sehingga tidak bisa membaca langsung sinyal analog dari sensor seperti trimpot. Oleh karena itu, digunakan chip ADC eksternal yaitu MCP3008. MCP3008 dipilih karena memiliki resolusi 10-bit, 8 channel input, dan menggunakan antarmuka SPI yang didukung penuh oleh Raspberry Pi. Ini membuatnya sangat kompatibel untuk sistem pembacaan sinyal analog berbasis Python.

2. Bagaimana cara kerja komunikasi SPI dalam mentransfer data dari MCP3008 ke Raspberry Pi selama pembacaan tegangan? (Sigit Triwibowo – 21)

Jawaban:
SPI bekerja sebagai protokol sinkron full-duplex, di mana Raspberry Pi bertindak sebagai master dan MCP3008 sebagai slave. Saat membaca data, Raspberry Pi mengirimkan 3 byte data (start bit, konfigurasi channel, dan dummy byte), lalu MCP3008 merespons dengan dua byte yang berisi hasil konversi nilai ADC. Proses ini dilakukan melalui pin SPI: MOSI, MISO, SCLK, dan CS.

3. Apa yang terjadi jika SPI belum diaktifkan pada Raspberry Pi sebelum menjalankan program, dan bagaimana solusinya? (Gabriella Monica – 09)

Jawaban:
Jika SPI belum diaktifkan, Raspberry Pi tidak akan dapat berkomunikasi dengan MCP3008. Akibatnya, program Python tidak akan bisa membaca data ADC dan bisa menghasilkan error atau nilai tetap (misalnya 0).

4.  Mengapa nilai ADC yang ditampilkan bisa tidak stabil atau tidak berubah? (Gery Alghifari -10)

Jawaban:
Nilai ADC yang tidak stabil bisa disebabkan oleh:

  • Koneksi jumper yang longgar atau tidak kuat.
  • Trimpot tidak terhubung dengan benar ke CH0 MCP3008.
  • Ground tidak tersambung antara Raspberry Pi dan MCP3008.

Solusinya adalah memeriksa ulang semua sambungan kabel, memastikan trimpot terpasang dengan orientasi benar, dan memastikan tidak ada gangguan fisik pada breadboard atau jumper. Praktikum membuktikan bahwa kestabilan sambungan sangat memengaruhi hasil pembacaan.

5. Bagaimana Raspberry Pi mengubah nilai dari MCP3008 menjadi tegangan, dan mengapa perlu dikonversi? (Yahya Umar – 23)

Jawaban:
MCP3008 hanya memberikan data dalam bentuk angka digital dari 0 sampai 1023, yang mewakili besar kecilnya tegangan analog dari sensor (dalam praktikum: trimpot). Namun angka ini belum menunjukkan tegangan dalam satuan volt. Agar lebih mudah dipahami, nilai ini harus dikonversi ke tegangan menggunakan rumus:



Dengan 3.3 sebagai tegangan referensi (Vref) Raspberry Pi. Proses ini dilakukan dalam program Python agar pengguna bisa melihat hasil pembacaan dalam satuan volt seperti “1.65V”, bukan hanya angka 512. Konversi ini penting untuk mengetahui besarnya sinyal analog secara nyata.

 

 

Untuk video selengkapnya dapat diakses melalui:

https://youtu.be/AFgd2LQIsLE

Komentar

Postingan populer dari blog ini

PROTOTYPE SMART HOME DENGAN ESP32 BERBASIS INTERNET OF THINGS

IoT Health Monitoring System for Sports: Real-Time Heart Rate and Temperature Tracking

MONITORING PENETAS TELUR BERBASIS IoT