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
- Mempelajari
fungsi dan cara kerja MCP3008 sebagai ADC 10-bit dalam sistem berbasis
Raspberry Pi.
- Memahami
langkah-langkah integrasi antara Raspberry Pi dan sensor analog
menggunakan protokol komunikasi SPI.
- Mengimplementasikan
program Python yang mampu membaca data ADC dan mengkonversinya menjadi
tegangan.
- Mengamati
dan menganalisis perubahan nilai ADC dan tegangan sebagai respons dari
putaran trimpot.
- Mengembangkan
keterampilan praktik dalam menghubungkan perangkat keras dan debugging
sistem berbasis RTKA.
1.3 Rumusan Masalah
- Apa
alasan Raspberry Pi membutuhkan ADC eksternal untuk membaca sinyal analog?
- Bagaimana
cara kerja komunikasi SPI antara MCP3008 dan Raspberry Pi?
- Bagaimana
konversi data digital dari ADC menjadi tegangan dapat dilakukan secara
akurat?
- Apa
saja tantangan teknis yang mungkin muncul saat menghubungkan MCP3008
dengan Raspberry Pi?
- 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:
- Raspberry
Pi 4B (terintegrasi pada RTKA)
- MCP3008
– Analog to Digital Converter 10-bit
- Trimpot
(trimmer potensiometer) sebagai sensor tegangan
- Kabel
jumper (male-male dan female-female)
- Breadboard
(jika diperlukan)
- Power
supply 5V/3A
- Laptop
dengan aplikasi MobaXterm (untuk remote SSH)
- 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
- Persiapan
Perangkat:
- Pastikan
Raspberry Pi telah terhubung dengan RTKA dan laptop melalui jaringan
Wi-Fi.
- Remote
ke Raspberry Pi menggunakan MobaXterm via SSH.
- 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)
- Aktivasi
SPI:
- Jalankan
perintah berikut pada terminal Raspberry Pi:
sudo raspi-config
- Pilih
Interfacing Options → SPI → Pilih Yes → Reboot jika diminta.
- Instalasi
Library:
- Pastikan
pustaka spidev sudah terinstal. Jika belum, jalankan:
sudo pip3 install spidev
- Penulisan
Program Python:
- Buat
file Python bernama adc_trimpot.py
- Tulis
program untuk membaca dan menampilkan nilai ADC serta tegangan
- 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
- 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:
- Trimpot
bekerja sebagai sensor input analog yang menghasilkan tegangan bervariasi
antara 0–3.3V.
- MCP3008
mampu mengkonversi sinyal analog tersebut menjadi nilai digital dengan
akurasi tinggi.
- Protokol
SPI antara MCP3008 dan Raspberry Pi berjalan dengan baik dan tidak
menunjukkan delay signifikan.
- Program
Python dapat membaca data ADC dan mengubahnya menjadi nilai tegangan
menggunakan rumus:
- 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:
- 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.
- 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.
- 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.
Komentar
Posting Komentar