Mengontrol Posisi Brushed DC Motor
Pada artikel ini, saya akan menjelaskan bagaimana mengontrol posisi (sudut) brushed DC motor. Untuk melakukan hal ini, kita perlu menerapkan “closed-loop control”. Ini bisa kita lakukan dengan menggunakan encoder. “Low-cost brushed DC motor” cukup banyak yang dijual dengan dilengkapi magnetic encoder yang menjadi satu paket dengan motor. Bisa juga memakai optical encoder yang memberikan presisi yang lebih tinggi namun harganya juga lebih mahal.
Encoder yang dipasang pada brushed DC motor ini paling tidak memiliki empat kabel, yaitu Vcc, GND, Sinyal A, dan Sinyal B. Vcc dan GND digunakan untuk memberikan power kepada encoder, sedangkan Sinyal A dan B memberikan bacaan encoder. Dengan sinyal A dan B yang berasal dari encoder, kita bisa tahu arah putaran motor dan seberapa jauh motor berputar. Adapun brushed DC motor itu sendiri memiliki dua kabel, yaitu V+ dan V-.
Kita bisa menggunakan PID control untuk mengontrol posisi brushed DC motor. Error antara posisi aktual motor (yang ditunjukkan oleh sinyal A dan B) terhadap posisi yang diinginkan akan menjadi input bagi PID control sehingga bisa memberikan kompensasi yang diperlukan. Sebagaimana dijelaskan dalam konsep “closed-loop control” (disebut juga “feedback control”), sinyal dari encoder (yakni sinyal A dan B dalam hal ini) perlu diberikan kepada controller, lalu controller memberikan sinyal kontrol digital untuk kompensasi kepada drive.
Kita akan menerapkan ini dengan menggunakan Arduino Uno (sebagai controller) dan L298N H-bridge driver sebagai drive. Adapun komponen-komponen yang diperlukan adalah:
- Brushed DC motor
- Encoder (dirangkai pada motor)
- Arduino Uno
- L298N H-Bridge Driver
- Power supply
- Kabel
Kita perlu merangkai komponen-komponen diatas sesuai dengan diagram berikut:

Penjelasan diagram:
Pada artikel ini kita hanya fokus pada kontrol posisi motor. Penjelasan mengenai kontrol kecepatan motor sama dengan yang dijelaskan pada artikel ini.
H-bridge driver membutuhkan dua supply. Pertama adalah supply untuk motor yang bisa berkisar dari 5V sampai 35V. Ini kita ambilkan dari DC power supply atau baterai dengan besaran voltase yang disesuaikan dengan voltase motor. Kedua adalah supply sebesar 5V sampai 7V untuk mengontrol rangkaian H-bridge. Dalam hal ini kita bisa mengambil 5V dari Arduino Uno. Untuk melakukan hal ini, hubungkan pin 5V dan GND pada bagian “Power” Arduino Uno ke terminal 5V dan GND pada H-Bridge.
Adapun power untuk Arduino Uno bisa di-supply dari USB yang dihubungkan ke komputer atau dari power supply eksternal yang dimasukkan ke pin Vin dan GND. Power untuk Arduino Uno ini tidak digambar dalam rangkaian diatas.
Untuk mengontrol posisi motor, kita menggunakan encoder. Encoder ini membutuhkan supply 5V. Ini bisa kita ambil dari pin 5V dan GND yang ada di Arduino Uno. Data dari encoder diberikan melalui dua pin: A dan B. Kedua pin ini mengandung sinyal digital berbentuk square wave (quadrature), karena itu harus dimasukkan ke dua pin digital yang ada di Arduino Uno agar bisa dibaca oleh Arduino Uno.
Untuk melakukan kontrol posisi ini, kita perlu memiliki program “PID control” pada Arduino Uno. Saat ini cukup banyak library “PID Control” yang sudah di-develop oleh komunitas untuk Arduino, sehingga kita bisa dengan mudah meng-include-kannya dalam kode Arduino kita, tanpa perlu men-develop-nya dari nol.