ANTARMUKA MIKROKONTROLER DENGAN SENSOR DAN AKTUATOR

1.Pendahuluan
Mikrokontroler berperan sebagai “otak” dalam sistem embedded untuk mengolah data dari sensor dan mengontrol aktuator. Antarmuka (interface) adalah penghubung antara mikrokontroler dengan komponen eksternal seperti sensor (input) dan aktuator (output). Pemahaman antarmuka ini penting untuk membangun sistem yang responsif, akurat, dan efisien.
2.Penghubung Mikrokontroler dengan Sensor
A.Sensor Analog vs. Digital
- Sensor Analog:
- Mengeluarkan sinyal kontinu (misalnya: tegangan 0-5V).
- Contoh: LM35 (suhu), MPX5050 (tekanan), LDR (cahaya).
- Antarmuka: Menggunakan ADC (Analog-to-Digital Converter) untuk mengonversi sinyal analog ke digital.
- Sensor Digital:
- Mengeluarkan sinyal diskrit (HIGH/LOW atau data serial).
- Contoh: DHT11 (suhu dan kelembaban), ultrasonik HC-SR04 (jarak).
- Antarmuka: Komunikasi via protokol I2C, SPI, atau UART.
B.Prinsip Dasar Interfacing Sensor
- Kebutuhan Daya: Pastikan sensor mendapat suplai tegangan sesuai (3.3V atau 5V).
- Filter Sinyal: Gunakan kapasitor decoupling untuk mengurangi noise.
- Skema Pengkondisi Sinyal: Op-amp atau resistor pull-up/pull-down untuk sinyal analog/digital.
3.Sistem Antarmuka untuk Sensor
A.Sensor Suhu (Contoh: LM35)
- Prinsip Kerja: Output analog linear (10mV/°C).
- Antarmuka:
float bacaSuhu() { int raw = analogRead(A0); float voltage = raw * (5.0 / 1023.0); return voltage * 100; // Konversi ke °C }
Penjelasan:
analogRead(A0)
:- Fungsi untuk membaca nilai analog dari pin A0 (nilai 0–1023 pada ADC 10-bit).
- ADC (Analog-to-Digital Converter) mengubah sinyal analog (misal: 0-5V) ke nilai digital.
raw * (5.0 / 1023.0)
:- Konversi nilai ADC (raw) ke tegangan (0–5V).
- 5.0: Tegangan referensi ADC (jika menggunakan Arduino UNO).
- 1023.0: Nilai maksimal ADC 10-bit (2^10 – 1 = 1023).
voltage * 100
:- LM35 memiliki sensitivitas 10mV/°C. Contoh:
- 0.25V = 25°C →
0.25 * 100 = 25
.
- 0.25V = 25°C →
- LM35 memiliki sensitivitas 10mV/°C. Contoh:
B.Sensor Tekanan (Contoh: MPX5050)
- Prinsip Kerja: Output analog (0.2–4.7V untuk 0–50 kPa).
- Antarmuka:
float bacaTekanan() { int raw = analogRead(A1); return (raw / 1023.0) * 50; // Konversi ke kPa }
Penjelasan:
analogRead(A1)
:- Membaca nilai analog dari pin A1.
(raw / 1023.0) * 50
:- MPX5050 memiliki rentang 0–50 kPa dengan output tegangan 0.2–4.7V.
- Normalisasi nilai ADC ke rentang 0–50 kPa.
C.Sensor Aliran (Contoh: YF-S201)
- Prinsip Kerja: Output pulsa frekuensi proporsional dengan laju aliran.
- Antarmuka: Hitung pulsa menggunakan interrupt atau input capture.
D.Sensor Level (Contoh: Ultrasonik HC-SR04)
- Prinsip Kerja: Mengukur waktu tunda pantulan gelombang ultrasonik.
- Antarmuka:
// Trigger pin OUTPUT, Echo pin INPUT digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; // Konversi ke cm
Penjelasan:
digitalWrite(trigPin, HIGH)
:- Mengirim sinyal trigger ke sensor untuk memulai pengukuran.
delayMicroseconds(10)
:- Menahan sinyal trigger HIGH selama 10µs (sesuai spesifikasi HC-SR04).
pulseIn(echoPin, HIGH)
:- Mengukur durasi pulsa HIGH pada pin echo (waktu tempuh gelombang ultrasonik).
duration * 0.034 / 2
:- 0.034: Kecepatan suara di udara (34 cm/ms atau 0.034 cm/µs).
- /2: Jarak tempuh gelombang bolak-balik (pergi-pantul).
4.Interfacing Mikrokontroler dengan Aktuator
A.Jenis Aktuator
- Motor:
- DC Motor: Kontrol kecepatan dengan PWM.
- Stepper Motor: Kontrol langkah menggunakan driver (contoh: A4988).
- Servo Motor: Kontrol sudut dengan sinyal PWM (1–2 ms pulse).
- Solenoid: Aktifkan dengan transistor/MOSFET (arus tinggi).
- Valve: Kontrol ON/OFF via relay atau driver MOSFET.
B.Prinsip Dasar Kontrol Aktuator
- Driver Eksternal:
- Motor: H-bridge (L298N) untuk mengontrol arah dan kecepatan.
- Solenoid/Relay: Transistor (TIP120) atau optocoupler untuk isolasi.
- Proteksi:
- Gunakan diode flyback untuk mencegah spike tegangan dari induktor.
- Isolasi galvanik dengan optocoupler untuk sistem high-voltage.
5.Penggunaan ADC dan DAC dalam Mikrokontroler
A.Analog-to-Digital Converter (ADC)
- Fungsi: Mengubah sinyal analog (sensor) ke nilai digital.
- Parameter Penting:
- Resolusi: Jumlah bit (contoh: 10-bit ADC → 1024 nilai).
- Sampling Rate: Kecepatan konversi (contoh: 100 kS/s).
- Contoh Kode Arduino:
int nilaiADC = analogRead(A0); // Baca nilai 0–1023
B.Digital-to-Analog Converter (DAC)
- Fungsi: Mengubah nilai digital ke sinyal analog (untuk aktuator).
- Aplikasi: Kontrol motor via PWM, audio output, atau pengaturan tegangan.
- Implementasi:
- Mikrokontroler dengan DAC internal (contoh: ESP32).
- DAC eksternal (contoh: MCP4725 via I2C).
// Contoh menggunakan PWM sebagai DAC sederhana analogWrite(pinPWM, nilaiDigital); // Nilai 0–255 (8-bit)
Penjelasan:
analogWrite(pinPWM, nilaiDigital)
:- Menghasilkan sinyal PWM (Pulse Width Modulation) pada pin yang mendukung PWM (misal: pin 3, 5, 6, 9, 10, 11 di Arduino UNO).
- nilaiDigital: Nilai 0–255 (8-bit) untuk mengatur duty cycle:
- 0 = 0% (motor mati), 255 = 100% (kecepatan maksimal).
6.Studi Kasus Integrasi Sensor-Aktuator
Contoh Sistem: Kontrol Suhu Otomatis
- Sensor LM35 membaca suhu ruangan.
- Mikrokontroler membandingkan suhu dengan setpoint.
- Jika suhu > setpoint, aktifkan kipas (motor DC) via PWM.
- Tampilkan data suhu di LCD dan kirim ke komputer via UART.
Diagram Blok:
[Sensor LM35] → [ADC Mikrokontroler] → [Algoritma PID] → [PWM → Motor DC]
7.Aplikasi Industri
- IoT: Sensor suhu/kelembaban + aktuator valve untuk smart farming.
- Otomasi Pabrik: Sensor level cairan + kontrol pompa.
- Robotika: Sensor jarak + kontrol motor servo.
8.Evaluasi Pemahaman
- Kuis Singkat:
- Jelaskan perbedaan antarmuka sensor analog dan digital!
- Mengapa driver H-bridge diperlukan untuk motor DC?
- Apa fungsi diode flyback pada rangkaian solenoid?
- Tugas Desain:
- Rancang sistem untuk mengontrol kecepatan motor DC berdasarkan pembacaan sensor tekanan.
NOTE:
- ADC 10-bit:
- Nilai analog dibaca dalam 10-bit (0–1023), sehingga resolusi = 5V / 1024 ≈ 4.88mV.
- PWM (Pulse Width Modulation):
- Teknik simulasi sinyal analog dengan mengubah lebar pulsa digital.
- Duty cycle = (nilaiDigital / 255) * 100%.
- Komunikasi Serial:
- Protokol untuk mengirim data antara mikrokontroler dan komputer.
- Baud rate harus sama di kedua perangkat (misal: 9600).
- Fungsi
delay()
dandelayMicroseconds()
:delay(ms)
: Menunda eksekusi program dalam satuan milidetik.delayMicroseconds(µs)
: Menunda dalam satuan mikrodetik.
Pertanyaan Umum
Q: Mengapa menggunakan 5.0 / 1023.0
dan bukan 5 / 1023
?
A: Penggunaan 5.0 (float) menghindari pembagian integer yang menghasilkan 0. Contoh:
5 / 1023 = 0
(integer division),5.0 / 1023.0 ≈ 0.00488
(float division).
Q: Apa beda Serial.print()
dan Serial.println()
?
A: Serial.println()
menambahkan karakter newline (\n
) di akhir data, sehingga output di serial monitor lebih rapi.
Q: Mengapa jarak sensor ultrasonik dibagi 2?
A: Durasi (duration
) adalah waktu tempuh gelombang pergi-pantul, sehingga jarak sebenarnya adalah setengahnya.
Q: Apa fungsi pulseIn()
?
A: Mengukur durasi pulsa (HIGH/LOW) pada pin tertentu. Contoh:
pulseIn(pin, HIGH)
mengukur lama waktu pin dalam keadaan HIGH.
Referensi
- Datasheet: LM35, MPX5050, L298N.
- Buku: Embedded Systems with ARM Cortex-M Microcontrollers by Dr. Yifeng Zhu.
- Tutorial: Arduino ADC & PWM.