● online
- TANG CRIMPING PRESS SKUN RATCHET YTH SN-48B....
- 10X RESISTOR 1K 1KOHM 1/4W 1% METAL FILM....
- Water Level sensor ketinggian air - deteksi air....
- ADS1115 16 Bit I2C Module ADC 4 channel with Pro G....
- Kapton Tape Polymide Film 20mm Polimida 20 mm Isol....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to M....
- E18-D80NK Infrared Obstacle Avoidance Sensor Proxi....
- LCD CHARACTER 16X2 1602 5V GREEN HIJAU BACKLIGHT 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
I think I need to make a virtual personal assistant that can help me make a self-service video tutorial... selengkapnya
Halo, Sobat Makers! Pernah nggak sih ngerasa pusing atau pengap pas lagi asyik nyolder project atau eksperimen kimia di kamar/lab?... selengkapnya
SMS gateway merupakan layanan yang berguna untuk meneruskan pesan ke jaringan seluler lain... selengkapnya
Pada postingan artikel kali ini akan mengupas tentang penggunaan LCD 20×4 pada Arduino. Maksud dari 20×4 adalah lcd ini... selengkapnya
Mau membuat LED-mu berkedip tanpa perlu menekannya secara manual? Di tutorial ini, kamu akan belajar cara mengatur LED menyala dan... selengkapnya
LDR merupakan sebuah resistor yang nilai resistansinya dapat berubah-ubah sesuai dengan cahaya di sekelilingnya. Untuk pemanfaatan sensor ini sudah... selengkapnya
Untuk membuat sebuah perangkat otomatis (di artikel ini lampu LED) sebenarnya dapat menggunakan berbagai macam sensor misalnya sensor suhu,... selengkapnya
IC AtMega328p pada Arduino Uno anda rusak? panas? atau anda ingin membuat sistem minimum sendiri? tenang solusinya adalah dengan... selengkapnya
Pada artikel kali ini saya akan membahas penggunaan sensor DHT11, dimana sensor ini fungsinya untuk mengukur suhu dan kelembaban... selengkapnya
Sensor suara merupakan sensor yang dapat mengubah besaran suara menjadi besaran listrik dimana nilai diperoleh dari besarnya gelombang suara... selengkapnya
Features – Calibrated directly in Celsius (Centigrade) – Linear + 10.0 mV/C scale factor – 0.5C accuracy guaranteeable (at +25C)… selengkapnya
Rp 8.000The power supply is isolated industrial power modules, with a temperature protection, overcurrent and short circuit full protection, high and… selengkapnya
Rp 15.900Tang 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.000Bosan dengan modul arduino yang kalian punya, saatnya mencoba modul programmer yang lain yah ini dia RASPBERRY PI 4 COMPUTER… selengkapnya
Rp 1.570.000Deskripsi Produk “LED Dot Matrix Display dengan 32×8 pixel, berwarna Merah, menggunakan IC MAX7219 sebagai driver dan dapat dikoneksikan ke… selengkapnya
Rp 47.500Kabel Jumper Dupont Pelangi 10 cm female to female 1 lembar = 40 kabel
Rp 9.0002000W SCR Electronic Voltage Regulator Speed Controller Dimmer Thermostat Aplikasi : Kontrol temperature heater, kontrol kecepatan fan/bor tangan/gurinda tangan, kompor… selengkapnya
Rp 19.500Features and Specs: Dual-Core, 32-bit ARM Cortex M0+ Processor Clocked at 48MHz (default), configurable max to 133MHz. Ready with USB… selengkapnya
Rp 82.900Item Deskripsi : This module performance is stable, measure the distance accurately. performance nearly the same as SRF05, SRF02 SRF05,… selengkapnya
Rp 13.900Support terus UKM indonesia dengan membeli produk-produk dalam negeri. Untuk kualitas tidak usah diragukan, udah kita tes QC dengan sangat… selengkapnya
Rp 8.500Bikin Robot Anti Tumbang Panduan Lengkap Self-Balancing Robot Pakai Arduino
Kategori
Artikel Terkait
-
Cara Bikin Sistem Monitoring Getaran Gempa dan Stabilitas Kemiringan Pakai ESP32 dan MPU 6050
-
Cara Bikin Sistem Monitoring Kelembapan Tanah Berbasis Arduino Uno dan Sensor YL69
-
Bikin Sistem Monitor Volume Air Tandon Otomatis Pakai Arduino Uno dan Sensor Ultrasonik
-
Cara Bikin Kipas Angin Otomatis Berbasis Suhu Pakai Arduino Uno dan Sensor LM35
-
Bikin Smart Medicine Box Otomatis Pakai Arduino Nano dan Sensor Suhu DHT11

Saat ini belum tersedia komentar.