● online
- Dimmer SCR 2000W Motor Speed Controller 220V AC PW....
- Dual Volt Amp Meter Digital Ampere Meter Voltmeter....
- Kabel Jumper 20cm Dupont 20 cm Male to Male Pelang....
- Kapton Tape Polymide Film 20mm Polimida 20 mm Isol....
- Resistor 220 Ohm 220R Ohm 220Ohm 1/4W 1% Metal fil....
- Kabel Jumper Arduino Dupont 20 cm Female to Male P....
- Modul Sensor Tegangan AC Bolak balik 220V Listrik ....
- ESR Meter Digital LCR-T4 Tester Transistor Diode M....
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Bikin Robot Anti Tumbang Panduan Lengkap Self-Balancing Robot Pakai Arduino
Sobat Maker, pernah terpikir tidak kenapa robot beroda dua bisa berdiri tegak tanpa jatuh? Secara alami, robot dua roda itu bersifat tidak stabil atau underactuated system yang gampang banget tumbang gara-gara gaya gravitasi. Tapi tenang, solusinya ada di sistem kontrol yang cerdas. Proyek Self-Balancing Robot ini adalah cara paling keren buat kamu belajar sistem kontrol tingkat lanjut. Menariknya, prinsip keseimbangan ini juga mirip dengan teknologi yang dipakai pada proyek robotika lainnya, seperti saat kita mencoba bikin mobil parkir otomatis pakai arduino dan pid dengan budget di bawah 100 ribu yang pernah kita bahas sebelumnya.
Nah, kalau kemarin kita mainan budget di bawah 100 ribu, kali ini kita naik level sedikit ke sistem balance yang butuh presisi ekstra. Yuk, kita bedah rahasia di balik robot yang “anti tumbang” ini!

Alat dan Bahan
Untuk merakit robot ini, kamu butuh beberapa komponen utama yang punya tugas spesifik:
| Komponen | Fungsi |
|---|---|
| Arduino Uno | Sebagai “otak” utama yang memproses algoritma PID dan menerima data dari sensor. |
| Sensor MPU6050 | Modul IMU yang dilengkapi giroskop dan akselerometer untuk mengukur sudut kemiringan (pitch) secara real-time. |
| Driver Motor L298N | Modul H-Bridge yang mengatur arah dan kecepatan putaran motor berdasarkan perintah PWM dari Arduino. |
| Motor DC | Aktuator mekanis yang bergerak maju atau mundur untuk menjaga keseimbangan robot. |
| Baterai Lithium 18650 | Sumber tenaga utama dengan tegangan 7,4–8,4V. Gunakan dua sel secara seri agar robot memiliki tenaga yang cukup untuk manuver cepat. |
Skematik Rangkaian
Agar robot bisa bekerja, semua komponen harus terhubung dengan benar.

Catatan Penting (WAJIB): Pastikan semua komponen menggunakan common ground. Artinya, pin GND dari baterai, driver motor, dan Arduino harus saling terhubung. Tanpa common ground, referensi sinyal kendali bakal berantakan dan robotmu bakal glitch terus!
Cara Kerja Sistem
Sistem ini bekerja dalam sebuah lingkaran tertutup atau closed-loop system. Sensor MPU6050 akan terus membaca sudut kemiringan robot. Agar pembacaan gerakan lebih stabil dan tidak terlalu terganggu noise, kita memanfaatkan fitur DMP (Digital Motion Processor) pada chip MPU6050. Untuk memahami lebih detail mengenai fitur dan kemampuan sensor ini, kamu bisa melihat datasheet MPU6050 sebagai referensi teknisnya.
Target kita adalah membuat robot tetap tegak pada “angka ajaib” atau setpoint sebesar 175,7 derajat. Kenapa tidak 180 derajat? Karena 175,7 adalah mechanical balance point hasil kalibrasi fisik—titik di mana berat rangka robot benar-benar seimbang secara mekanis. Jika sudutnya bergeser dari angka ini, Arduino akan menghitung error dan memerintahkan motor untuk bergerak mengejar posisi seimbang tersebut.

Implementasi Kontrol PID
Agar gerakan robot halus dan tidak kaku, kita menggunakan kontrol PID. Bayangkan PID ini sebagai tiga asisten yang bekerja sama:
- Kp (Proportional) Pemberi torsi instan. Makin jauh robot miring, makin kencang motor menendang balik.
- Ki (Integral) Si teliti yang menghapus sisa error kecil. Tanpa Ki, robot mungkin berdiri tapi agak miring sedikit. Ki memastikan robot benar-benar tegak lurus.
- Kd (Derivative) Si peredam agar gerakan robot tidak “lebay” atau overshoot. Kd mencegah robot berayun terlalu heboh saat mengoreksi diri.

Berdasarkan hasil pengujian laboratorium, nilai paling stabil untuk proyek ini adalah Kp = 70, Ki = 200, dan Kd = 1,4.
Pemrograman Arduino
Pada bagian pemrograman, robot menggunakan beberapa library utama seperti PID_v1, LMotorController, I2Cdev, dan MPU6050_6Axis_MotionApps20. Beberapa pengaturan penting dalam kode dapat dilihat pada contoh berikut:
#include <PID_v1.h>
#include <LMotorController.h>
#include <I2Cdev.h>
#include <MPU6050_6Axis_MotionApps20.h>
MPU6050 mpu;
// ===============================
// PID
// ===============================
double input;
double output;
double setpoint = 175.7;
double Kp = 70;
double Ki = 200;
double Kd = 1.4;
PID pid(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT);
// ===============================
// Konfigurasi Motor
// ===============================
#define MIN_ABS_SPEED 20
double motorSpeedFactor = 0.9;
// ===============================
// Hardware Interrupt MPU6050
// Pin D2
// ===============================
#define INTERRUPT_PIN 2
volatile bool mpuInterrupt = false;
void dmpDataReady()
{
mpuInterrupt = true;
}
void setup()
{
Serial.begin(115200);
// Inisialisasi MPU6050
mpu.initialize();
// Hardware interrupt pada pin D2
pinMode(INTERRUPT_PIN, INPUT);
attachInterrupt(
digitalPinToInterrupt(INTERRUPT_PIN),
dmpDataReady,
RISING
);
// Aktifkan PID
pid.SetMode(AUTOMATIC);
// PID dihitung setiap 10 ms
pid.SetSampleTime(10);
// Batas output PWM
pid.SetOutputLimits(-255, 255);
}
void loop()
{
// MPU6050 memberi tanda saat data baru tersedia
if (mpuInterrupt)
{
mpuInterrupt = false;
// Baca sudut dari MPU6050
// input = sudut robot;
// Hitung koreksi PID
pid.Compute();
// Ambil nilai PWM
int motorPWM = abs(output);
// Anti-stalling
if (motorPWM > 0 && motorPWM < MIN_ABS_SPEED)
{
motorPWM = MIN_ABS_SPEED;
}
// Penyeimbang kecepatan motor kiri dan kanan
int leftMotorPWM = motorPWM;
int rightMotorPWM = motorPWM * motorSpeedFactor;
// Perintah motor
// leftMotor.setSpeed(leftMotorPWM);
// rightMotor.setSpeed(rightMotorPWM);
}
}
Kode menggunakan interrupt D2 untuk merespons data baru dari MPU6050, sedangkan SetSampleTime(10) membuat PID bekerja setiap 10 ms. motorSpeedFactor = 0.9 digunakan untuk mengimbangi perbedaan kecepatan motor kiri dan kanan, sementara MIN_ABS_SPEED = 20 mencegah motor berhenti atau hanya berdengung saat menerima PWM yang terlalu kecil.
Pengujian dan Hasil
Setelah di-ngoprek dan di-tuning, robot ini menunjukkan performa yang sangat solid:
- Pemulihan Cepat: Hanya butuh 1,3 detik untuk kembali stabil setelah didorong.
- Stabilitas Tinggi: Toleransi goyangan saat diam (steady state) cuma sekitar 0,3 derajat.
Berikut adalah data bagaimana algoritma PID mengubah error sudut menjadi gerakan motor (PWM):
| Sudut Aktual (°) | Nilai Error (°) | Nilai PWM Digital | Respon Pergerakan Roda |
|---|---|---|---|
| 175,7 | 0 | 0 | Diam (Seimbang) |
| 174,5 | -1,2 | 35 | Bergerak lambat ke depan |
| 172,0 | -3,7 | 110 | Bergerak sedang ke depan |
| 168,0 | -7,7 | 255 | Bergerak maksimum ke depan |
| 180,0 | 4,3 | 135 | Bergerak sedang ke belakang |
Kesimpulan
Proyek ini membuktikan bahwa kombinasi Arduino, sensor MPU6050, dan algoritma PID adalah paket lengkap buat bikin sistem keseimbangan yang andal. Kuncinya ada di tiga hal: pembacaan sensor yang bersih (pakai DMP), penggunaan hardware interrupt, dan ketepatan tuning nilai Kp, Ki, serta Kd.
Buat Sobat Maker yang mau coba, jangan takut bereksperimen dengan nilai PID kalian sendiri. Ingat, beda berat robot, beda juga nilai “angka ajaibnya”. Selamat mengoprek!
Bikin Robot Anti Tumbang Panduan Lengkap Self-Balancing Robot Pakai Arduino
Pada beberapa profesi yang menggunakan bantuan suatu aplikasi ataupun perangkat lunak sangatlah banyak. Nyatanya dengan adanya berbagai macam perangkat... selengkapnya
Menjaga kondisi lingkungan ruang server tetap stabil adalah hal yang sangat krusial bagi kelangsungan operasional sistem TI. Jika suhu dan... selengkapnya
Halo Sobat Tech! Pernah nggak sih lo ngerasa gerah banget di kamar, tapi pas nyalain kipas angin biasa malah jadi... selengkapnya
Dalam dunia elektronika untuk hobi dan prototyping, Arduino sering kali dianggap sebagai jalan termudah untuk mulai mengerjakan proyek mikrokontroler. Namun, ketika proyek mulai lebih komplikatif misalnya, jika ingin mengecilkan ukuran papan, mengurangi biaya produksi, atau membuat casing yang khusus,... selengkapnya
Oke kali ini kita akan membahas salah satu board wifi yaitu kakak dari NodeMcu yang memiliki fungsi lebih +... selengkapnya
LCD atau Liquid Crystal Display adalah perangkat yang berfungsi sebagai media penampil dengan memanfaatkan kristal cair sebagai objek penampil utama.... selengkapnya
Setelah kemarin sudah belajar Blynk dan sensor LDR DISINI, sekarang lanjut ke sensor berikutnya yaitu sensor DHT11 untuk memonitoring... selengkapnya
Halo semuanya, pada kesempatan kali ini Saya ingin membahas tentang simulasi penggunaan sensor LDR (sensor cahaya) menggunakan Arduino untuk... selengkapnya
Android merupakan sistem operasi untuk perangkat seluler dengan pengguna terbesar di dunia termasuk di Indonesia, dengan market share 90%... selengkapnya
Keypad 4×4 berfungsi sebagai penghubung antara perangkat (mesin) elektronik dengan manusia atau dikenal dengan istilah Human Machine Interface (HMI). Papan... selengkapnya
Bosan dengan modul arduino yang kalian punya, saatnya mencoba modul programmer yang lain yah ini dia RASPBERRY PI 4 COMPUTER… selengkapnya
Rp 1.199.000This is a set of transmitter and receiver in one of the photoelectric sensor. Detection distance can be adjusted according… selengkapnya
Rp 37.500Features: It is of high power density, high efficiency, high-reliability, small size and lightweight. It can isolate unsteady single-way voltage… selengkapnya
Rp 18.500MERK : TOWER PRO MG995 180 derajat Specifications Weight: 55 g Dimension: 40.7 x 19.7 x 42.9 mm approx. Stall… selengkapnya
Rp 36.300Features and Specs: Dual-Core, 32-bit ARM Cortex M0+ Processor Clocked at 48MHz (default), configurable max to 133MHz. Ready with USB… selengkapnya
Rp 82.900sg90 towerpro penggerak pada robot-robot kecil, dan bisa digunakan sebagai alat untuk hobi membuat robot dsb, dengan berat sekitar 9g… selengkapnya
Rp 15.500Kabel Jumper Dupont Pelangi 30cm female to Female 1 lembar = 40 kabel
Rp 13.500Item Deskripsi : This module performance is stable, measure the distance accurately. performance nearly the same as SRF05, SRF02 SRF05,… selengkapnya
Rp 13.900Modul sensor tegangan AC bolak balik 3 fasa ini menggunakan optocoupler sehingga tegangan input (AC) tidak akan mengganggu/membahayakan tegangan output… selengkapnya
Rp 57.000Putaran = 180º Specifications • Weight: 55 g • Dimension: 40.7 x 19.7 x 42.9 mm approx. • Stall torque:… selengkapnya
Rp 36.400Bikin Robot Anti Tumbang Panduan Lengkap Self-Balancing Robot Pakai Arduino
Kategori
Artikel Terkait
-
Bikin Sistem Parkir Otomatis dengan Penghitung Kendaraan dan Indikator Slot Kosong
-
Rancang Sistem Pendeteksi Kebakaran dengan Kipas Otomatis dan Alarm Peringatan
-
Bikin Alat Monitoring Konsumsi Listrik Rumah Secara Real-Time Berbasis ESP32
-
Bikin Sistem Keamanan Pintu Berbasis RFID dengan Notifikasi Telegram
-
Rancang Sistem Penyiram Tanaman Otomatis Berbasis ESP32 dengan Monitoring Smartphone

Saat ini belum tersedia komentar.