● online
- Push Button Tactile Switch Saklar Tombol Tinggi - ....
- Water Level sensor ketinggian air - deteksi air....
- IIC I2C LCD 1602 16x2 2004 20x4 Backpack for LCD A....
- USB To RS485 High Speed Converter RS-485 RS 485 Ad....
- 5V 700mA (3.5W) Isolated switch Power Supply Modul....
- Breadboard 400 titik lubang Bread board Projectboa....
- B0505S-1W 5V to 5V converter DC DC power module co....
- PWM DC 10A Motor 12V-40V Pulse Width Modulation Sp....
- 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
LCD atau Liquid Crystal Display adalah perangkat yang berfungsi sebagai media penampil dengan memanfaatkan kristal cair sebagai objek penampil utama.... selengkapnya
Melanjutkan tutorial dari postingan sebelumnya tentang cara memulai menggunakan telegram pada NodeMCU, kali kita akan membahas cara membuat notifikasinya... selengkapnya
Oke pada artikel kali ini membahas telegram kembali menggunakan sensor DHT untuk mendeteksi suhu dan kelembaban. Jadi nanti akan... selengkapnya
Setelah kemarin-kemarin sudah sering membahas board esp8266 dengan jenis NodeMCU. Kali ini kita belajar dengan jenis lain yaitu ESP-01,... selengkapnya
Semangat pagi semua, kali ini kita akan belajar mengenai penggunaan LCD pada Arduino tanpa module I2C. Kenapa perlu belajar... selengkapnya
Software dari keluarga adobe, yaitu salah satunya Adobe Photoshop. Adobe Photoshop ini di ciptakan secara multi fungsi, mulai untuk... selengkapnya
8×8 LED dot matrix merupakan sebuah display yang terdiri dari kumpulan led yang disusun secara simetris sejumlah 8 baris... selengkapnya
Sensor IR adalah sebuah sensor yang dapat mendeteksi rintangan menggunakan cahaya inframerah yang dipantulkan. Sensor ini mempunyai dua bagian... selengkapnya
Bagi pegiat teknologi, komputer, elektronika, dan Internet Of Things (IoT) maka sudah tidak asing lagi dengan benda yang satu... selengkapnya
Pada kesempatan kali ini kita akan belajar bersama mengenai 7 segment. Berbeda dengan tutorial sebelumnya yang membahas 1 digit... selengkapnya
Bosan dengan modul arduino yang kalian punya, saatnya mencoba modul programmer yang lain yah ini dia RASPBERRY PI 4 COMPUTER… selengkapnya
Rp 1.570.000Product Name: Tactile Switch; Material: Metal, Plastic Package Content: 30 Pcs x Tactile Switch; Main Color: Black, Silver Tone Total… selengkapnya
Rp 4002000W SCR Electronic Voltage Regulator Speed Controller Dimmer Thermostat Aplikasi : Kontrol temperature heater, kontrol kecepatan fan/bor tangan/gurinda tangan, kompor… selengkapnya
Rp 19.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.300Tang Crimping Press Skun Ratchet YTH SN-48B Model YTH SN-48B FOR NON INSULATED TERMINAL YTH SN-48B dengan mata Press 0.5… selengkapnya
Rp 150.000Ini yang Seri SN – DS3231 I2C RTC Module khusus DS3231SN – Include Baterai – Module jam digital – Keperluan… selengkapnya
Rp 34.900Buruan dibeli gan….barang murah-berkualitas SIAPA CEPAT DIA DAPAT Spesifikasi: LCD 1602 / 16×2 (16 karakter, 2 baris) merek QAPASS (cek… selengkapnya
Rp 24.500Kabel Jumper Dupont Pelangi 10 cm.. male to female 1 lembar isi 40 kabel
Rp 9.000Dual Volt Amp Meter Digital Ampere Meter Voltmeter 10A 0-100V Ammeter Dilengkapi dengan pengukuran Voltmeter dan Amperemeter dalam 1 display… selengkapnya
Rp 26.500Bagaimana jika mikrokontroler yang anda gunakan tidak memiliki port ADC. atau anda masih kurang dengan spesifikasi resolusi ADC yang disediakan… selengkapnya
Rp 65.000Bikin Robot Anti Tumbang Panduan Lengkap Self-Balancing Robot Pakai Arduino
Kategori
Artikel Terkait
-
Jaga Kolam Ikan Tetap Stabil Pakai Arduino dan PID Biar Ikan Makin Happy
-
Bikin Lampu Belajar Pintar Pake PID & Arduino Cahaya Sat-Set, Mata Anti-Lelah!
-
Stabil Terus! Cara Bikin Kontrol Kelembapan Ruangan Otomatis Pakai Arduino dan PID
-
Bikin Mobil Parkir Otomatis Pakai Arduino dan PID dengan Budget di Bawah 100 Ribu
-
Bikin Stabilizer 1-Axis Low Budget Pakai Arduino dan PID

Saat ini belum tersedia komentar.