
Halo, Sobat Maker! Pernah nggak sih kalian bikin project robot atau alat otomatis, tapi gerakannya nggak pas? Maunya berhenti di sudut 90 derajat, eh malah “kebablasan” atau malah kurang. Jujur, itu menyebalkan banget dan bikin hasil rakitan kita kelihatan kurang pro.
Nah, biar robot kamu nggak labil lagi, solusinya adalah sistem kendali posisi yang cerdas. Kali ini, kita bakal bedah rahasia di balik project keren dari Kelompok 6 yang sukses bikin sistem kendali posisi motor DC super akurat pakai Arduino dan algoritma PID. Nggak cuma itu, mereka juga nambahin joystick buat kontrol manual dan web dashboard buat monitoring biar tampilannya makin canggih. Yuk, kita kupas tuntas!
Mengenal PID Tanpa Bikin Pusing

Mungkin istilah PID terdengar kayak rumus fisika yang berat, tapi sebenarnya konsepnya simpel banget kalau dibayangin pakai logika sehari-hari:
- Proportional (Kp) – Si Gercep: Kp ini tugasnya nentuin seberapa kencang motor harus ngejar target. Makin besar nilainya, makin cepat motor sampai ke tujuan. Tapi hati-hati, kalau kebesaran, motor bisa “nabrak” target karena terlalu kencang.
- Integral (Ki) – Si Teliti: Kadang motor sudah dekat target tapi berhenti sedikit sebelum titik pas karena ada gesekan atau beban. Ki bakal ngumpulin “sisa error” itu dan kasih dorongan ekstra supaya posisi motor bener-bener pas di titik nol.
- Derivative (Kd) – Si Rem Otomatis: Kd berfungsi sebagai peredam. Saat motor sudah mau sampai ke target, Kd bakal “ngerem” lajunya supaya nggak goyang-goyang (osilasi) atau kelewat batas (overshoot).
Gear yang Dibutuhkan
Buat ngerakit sistem ini, Kelompok 6 pakai komponen yang ramah kantong. Total estimasi biayanya sekitar Rp270.000. Cek nih daftarnya:
| Komponen | Fungsi | Estimasi Harga |
|---|---|---|
| Arduino Uno | Otak utama untuk menjalankan logika PID | Rp95.000 |
| Motor DC JGA25-370 | Aktuator dengan magnetic encoder untuk memberikan informasi posisi ke Arduino | Rp62.000 |
| Driver Motor BTS7960 | Driver high power untuk mengatur putaran motor bolak-balik dengan arus yang stabil | Rp60.000 |
| Joystick Analog | Memberikan perintah posisi (setpoint) secara langsung | Rp8.000 |
| Adaptor 12V | Sumber daya untuk motor DC | Rp20.000 |
| Kabel Jumper & USB | Kabel pendukung untuk koneksi antar komponen | ±Rp25.000 |
| Total | ±Rp270.000 |
Skematik Rangkaian: Jangan Sampai Konslet!
Nah, ini bagian paling krusial. Merakit jalur kabel harus teliti, terutama bagian encoder biar datanya nggak ngaco.

Jalur Daya: Hubungkan Adaptor 12V ke terminal B+ dan B- pada Driver BTS7960. Ingat, kamu wajib hubungkan kabel ground adaptor ke pin GND Arduino. Teknik ini disebut common ground supaya semua komponen punya referensi tegangan yang sama. Kalau nggak, sistem bisa error atau nggak jalan sama sekali.
Jalur Sinyal & Kontrol:
- Encoder: Hubungkan pin A dan B ke D2 dan D3. Ini adalah pin interupsi yang bakal dengerin setiap pulsa putaran motor tanpa ada yang terlewat.
- Driver Motor: PWM masuk ke D5 dan D6. Nah, yang penting nih: pin D7 (R_EN) dan D8 (L_EN) harus dihubungkan dan diset HIGH di program supaya driver motornya “bangun” dan siap kerja.
- Joystick: Hubungkan VRx ke A0, VRy ke A1, dan yang nggak boleh lupa, pin D4 untuk tombol switch (SW) joystick sebagai pemicu ganti mode.
Sebelum merakit jalur yang kompleks ini, pastikan kamu sudah memahami dasar-dasar kabel jumper dan wiring komponen elektronik, seperti yang dibahas pada panduan Rangkaian Infrared Transmitter Receiver dengan VS1838B dan MMBT2222A. Dengan memahami dasar wiring, risiko short circuit atau salah koneksi bisa diminimalkan.
Cara Kerja dan Dashboard HMI yang Kece

Project ini punya antarmuka monitoring berbasis HTML (Human Machine Interface) yang keren banget. Alur kerjanya simpel:
- Input Parameter: Di dashboard web, kamu bisa ketik langsung nilai Kp, Ki, dan Kd yang mau dipakai.
- Homing (Kalibrasi): Ini penting! Kamu posisikan motor secara fisik ke sudut 90 derajat. Di titik ini, kamu tekan tombol “Set Home” di web atau klik tombol joystick (D4). Di mata program, posisi 90 derajat fisik ini akan dianggap sebagai titik nol (0) encoder.
- Mulai Simulasi: Setelah klik “Mulai Simulasi”, gerakkan joystick-nya. Motor bakal ngikutin gerakan tanganmu secara real-time dan kamu bisa lihat grafik responsnya langsung di layar.
Bedah Logika Software (FSM & Shortest Path)
Arduino di sini pakai logika Finite State Machine (FSM). Bayangin ini sebagai “tahapan berpikir” si robot:
- STATE_SETUP_HOME: Nunggu kamu nentuin titik awal (90 derajat tadi).
- STATE_STOPPED: Mode siaga setelah titik awal terkunci.
- STATE_RUNNING: PID aktif penuh ngejar setpoint dari joystick.
- STATE_HOMING: Kalau kamu klik stop, motor nggak langsung mati, tapi pulang dulu secara otomatis ke titik awal.
Ada satu fungsi cerdas namanya shortestPathError(). Contohnya gini: kalau motor lagi di posisi 350 derajat dan kamu minta ke posisi 10 derajat, motor nggak bakal muter jauh balik ke belakang sejauh 340 derajat. Motor bakal langsung ambil “jalan pintas” sejauh 20 derajat lewat depan. Cakep, kan?
Selain itu, perhitungan PID ini dijalankan setiap 10 milidetik pakai Timer Interrupt (OCR1A). Kenapa? Karena PID butuh “detak jantung” yang stabil buat ngitung rumus matematika Integral dan Derivative-nya. Kalau detaknya berantakan, gerakan motor juga bakal nggak karuan.
Hasil Pengujian
Berdasarkan eksperimen, settingan paling pas adalah Kp=1.5, Ki=0.05, dan Kd=0.8. Dengan angka ini, saat motor diminta ke posisi 90 derajat, posisi aslinya bisa sampai di 89 derajat. Artinya, error-nya cuma 1 derajat! Buat motor DC standar, ini sudah sangat presisi.

Kalau kamu coba sendiri dan motornya bergetar hebat pas mau berhenti, itu tandanya nilai Kd perlu ditambah dikit buat “ngerem” getarannya. Sebaliknya, kalau motor terasa “loyo” dan nggak sampai-sampai ke target, coba naikin nilai Kp pelan-pelan.
Kesimpulan
Bikin motor DC bergerak presisi itu seni menggabungkan sensor encoder sebagai mata, dan PID sebagai otaknya. Project Kelompok 6 ini membuktikan kalau pakai komponen terjangkau pun, kita bisa bikin sistem otomasi yang akurat asalkan logikanya terstruktur.
