LAPORAN PRAKTIKUM SIMULASI SIMULASI SISTEM PENGONTROL DUA MOTOR DC DENGAN INDIKATOR LCD 16X2 DAN LED BERBASIS ARDUINO NANO
Mata Kuliah Internet of Things
Disusun Oleh:
|
Amira Najihah Fadri Putri |
24051204002 |
|
Mareta Surya Tananjaya |
24051204006 |
|
Novasya Aulia Putri Hidayat |
24051204028 |
|
Sulthania Auliya Afandi |
24051204034 |
Prodi S1 Teknik Informatika UNIVERSITAS NEGERI SURABAYA
BAB I PENDAHULUAN
- Latar Belakang
Dalam era otomatisasi dan robotika, kontrol pergerakan motor DC merupakan salah satu fondasi utama dalam sistem embedded. Motor DC banyak digunakan karena kemampuannya menghasilkan gerakan maju dan mundur dengan pengendalian yang relatif sederhana. Penggunaan mikrokontroler seperti Arduino Nano memungkinkan pengendalian aktuator dan pemrosesan sinyal dari sensor maupun tombol secara efisien, sehingga sistem dapat bekerja secara otomatis tanpa intervensi manual yang berlebihan.
Selain itu, kebutuhan akan informasi status sistem menjadi penting agar pengguna dapat memahami kondisi operasi secara real-time. Oleh karena itu, integrasi dengan layar LCD 16x2 dan indikator LED menjadi solusi praktis untuk menampilkan status seperti Ready, Forward, dan Reverse. Tampilan visual ini tidak hanya berfungsi sebagai antarmuka sederhana, tetapi juga sebagai sarana monitoring yang meningkatkan keandalan sistem.
Proyek ini disusun untuk mensimulasikan sistem kontrol dua motor DC berbasis Arduino Nano yang terintegrasi dengan LCD 16x2 dan push-button melalui perangkat lunak Proteus 8 Professional. Proteus dipilih karena mampu menggabungkan simulasi rangkaian elektronik dengan kode program Arduino, sehingga memudahkan proses perancangan, pengujian, dan validasi sistem sebelum diwujudkan dalam bentuk fisik.
-
Rumusan Masalah
- Bagaimana merangkai komponen Arduino Nano, driver motor L298, LCD 16x2, LED, dan tombol tekan dalam Proteus?
- Bagaimana logika pemrograman C/C++ pada Arduino untuk mengatur pergerakan maju (forward), mundur (reverse), dan pemberhentian otomatis (stop) pada motor DC?
- Bagaimana menampilkan status pergerakan motor dan counter secara real-time pada LCD 16x2?
-
Tujuan Laporan
- Mendesain serta menginterkoneksikan skema rangkaian elektronik yang melibatkan komponen Arduino Nano, driver motor L298N, LCD 16x2, LED, dan push button pada perangkat lunak Proteus secara akurat dan berfungsi dengan baik.
- Menyusun dan mengimplementasikan algoritma pemrograman berbasis C/C++ pada Mikrokontroler Arduino untuk mengendalikan arah pergerakan motor DC
(maju/forward, mundur/reverse, dan berhenti/stop) secara otomatis berbasis masukan tombol (input).
- Mengintegrasikan modul LCD 16x2 untuk menampilkan informasi status pergerakan motor DC beserta nilai penghitung (counter) secara real-time dan responsif terhadap perubahan sistem.
- Manfaat Penulisan
- Mengembangkan pemahaman praktis mengenai arsitektur I/O pada mikrokontroler.
- Membantu memahami simulasi hardware-software sebelum tahap implementasi fisik.
BAB II TINJAUAN PUSTAKA
-
Dasar Teori
- Mikrokontroler Arduino Nano: Papan pengembang berbasis ATmega328P yang menangani instruksi I/O digital dan analog, pembacaan register, serta pengolahan timer.
- Driver Motor L298: Rangkaian jembatan-H (H-Bridge) yang berfungsi mengontrol arah putaran dan kecepatan motor DC menggunakan sinyal PWM (Pulse Width Modulation).
- LCD 16x2 (HD44780): Display kristal cair yang dikendalikan dalam mode 4-bit data untuk menghemat penggunaan pin I/O pada mikrokontroler.
-
Komponen
|
No |
Nama Komponen |
Fungsi dalam Rangkaian |
|
1. |
Arduino Nano |
Mikrokontroler pemroses logika utama |
|
2. |
Driver Motor L298 |
Pengendali daya dan arah putaran motor DC |
|
3. |
2 Unit Motor DC |
Aktuator mekanik utama |
|
4. |
LCD 16x2 (LM016L) |
Indikator tampilan status & counter |
|
5. |
2 Unit Push Button |
Input kontrol manuver (Forward/Reverse) |
|
6. |
2 Unit LED Indikator |
Indikator visual mode gerak |
BAB III PEMBAHASAN
-
Penjelasan simulasi
Rangkaian ini bekerja berdasarkan 3 kondisi operasi:
- Mode Standby: Saat sistem diaktifkan tanpa adanya penekanan tombol, LCD baris 1 menampilkan teks Ready, sedangkan baris 2 menampilkan angka counter (hitung++) yang bertambah secara bertahap setiap 1 detik.
- Mode Forward: Penekanan tombol pada pin 13 memicu logika LOW. Sistem mengubah pesan LCD menjadi Forward, menyalakan LED Forward (pin A3), dan memutar motor A & B ke arah maju dengan kecepatan PWM penuh (255) selama 2 detik.Mode Reverse: Penekanan tombol pada pin 12 memicu logika LOW. Sistem mengubah pesan LCD menjadi Reverse, menyalakan LED Reverse (pin A4), dan memutar motor A & B ke arah sebaliknya (reverse).
- Selama 2 detik.
Sistem Keamanan (Auto-Stop): Setelah durasi pererakan 2 detik selesai, fungsi stopMotor() secara otomatis dieksekusi untuk mematikan daya ke motor dan LED, lalu mengembalikan sistem ke kondisi standby.
-
Program
int hitung = 0;
void setup() { lcd.begin(16, 2);
lcd.print("Ready");
pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
pinMode(buttonForward, INPUT_PULLUP); pinMode(buttonReverse, INPUT_PULLUP);
pinMode(ledForward, OUTPUT); pinMode(ledReverse, OUTPUT);
}
void loop() {
// Tampilkan hitungan di LCD lcd.setCursor(0, 1); // Kolom 0, Baris 2
lcd.print(hitung++); // Tampilkan nilai variabel hitung delay(1000);
// Cek tombol Forward
if (digitalRead(buttonForward) == LOW) { lcd.setCursor(0, 0);
lcd.print("Forward ");
triggerMotors(2000); // Menyalakan motor selama 2 detik
}
// Cek tombol Reverse
if (digitalRead(buttonReverse) == LOW) { lcd.setCursor(0, 0);
lcd.print("Reverse ");
reverseMotors(2000); // Menyalakan motor mundur selama 2 detik
}
}
// Fungsi untuk menyalakan motor maju void triggerMotors(int duration) {
analogWrite(ENA, 255); // Kecepatan maksimal untuk motor A analogWrite(ENB, 255); // Kecepatan maksimal untuk motor B
// ledForward Menyala digitalWrite(ledForward, HIGH); digitalWrite(ledReverse, LOW);
// Motor A maju digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
// Motor B maju digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
// Jalankan motor selama durasi (2 detik) delay(duration);
// Matikan motor setelah durasi selesai stopMotor();
}
// Fungsi untuk menyalakan motor mundur void reverseMotors(int duration) {
analogWrite(ENA, 255); // Kecepatan maksimal untuk motor A analogWrite(ENB, 255); // Kecepatan maksimal untuk motor B
// ledReverse Menyala digitalWrite(ledForward, LOW); digitalWrite(ledReverse, HIGH);
// Motor A mundur digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
// Motor B mundur digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
delay(duration); // Jalankan motor mundur selama durasi (2 detik)
// Matikan motor setelah durasi selesai stopMotor();
}
// Fungsi untuk menghentikan motor void stopMotor() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW);
BAB IV
PENUTUP
-
Kesimpulan
- Rangkaian pengontrol dua motor DC berhasil disimulasikan menggunakan Proteus dengan mengintegrasikan Arduino Nano, driver L298, LCD 16x2, LED, dan tombol input.
- Pemrograman logika active low menggunakan INPUT_PULLUP berjalan efektif untuk membaca input tombol, serta fungsi timer delay() mampu membatasi durasi pergerakan motor secara tepat selama 2 detik.
- LCD 16x2 dan LED indikator dapat menampilkan status pergerakan dan counter sistem secara akurat dan real-time.
-
Saran
- Pengembangan selanjutnya dapat menambahkan sensor jarak (seperti HC-SR04) agar penghentian motor tidak hanya berbasis durasi waktu, melainkan berdasarkan halangan fisik.
- Penggunaan modul komunikasi nirkabel (seperti Bluetooth/Wi-Fi) dapat diterapkan untuk mengintegrasikan sistem ini ke dalam arsitektur Internet of Things (IoT).
DAFTAR PUSTAKA
Banzi, M., & Shiloh, M. (2014). Getting Started with Arduino. O'Reilly Media.
Mazidi, M. A., Naimi, S., & Naimi, S. (2016). The AVR Microcontroller and Embedded Systems: Using Assembly and C. Pearson.
LAMPIRAN
Link Video Penjelasan
https://drive.google.com/file/d/1xxVdY1Oy0Aj7qr9zBo4MpwSPhtM3UW0v/view?usp=shar ing
Tidak ada komentar:
Posting Komentar