Anda di sini

Elektronika

[TUTORIAL] Mengatur Kecepatan Putar Motor DC Menggunakan MATLAB

Kusuma Wardana - 08 Januari 2016 17:07:18 0

Pendahuluan

Motor DC adalah alat yang mengubah energi listrik menjadi energi gerak. Motor menjadi alat yang sangat vital untuk keperluan robotika dan dunia industri. Penyusun dasar dari suatu motor DC adalah arus listrik yang mengalir melalui armatur yang berakhir pada komutator. Ketika arus listrik melewati amartur (koil) dalam suatu medan magnet, gaya magnet akan memproduksi torsi yang akan memutar koil tersebut.

Kecepatan putar motor DC dapat diatur dengan cara memberikan variasi tegangan kepada kutub-kutub motor. Dengan demikian, masalah yang menjadi prinsip dasar kita adalah bagaimana cara kita melakukan sesuatu agar mikrokontroler dapat memberikan tegangan yang berbeda-beda ke kutub-kutub motor. Kita mengetahui bersama bahwa variasi tegangan listrik sifatnya adalah variasi sinyal analog, sedangkan mikrokontroler bekerja secara digital. Nah, untuk mengatasi hal ini, ada suatu teknik yang dikenal sebagai Pulse Width Modulation (PWM). Dengan bahasa sederhananya, PWM adalah modulasi lebar pulsa.

Motor Shield untuk Arduino

Seiring dengan perkembangan dunia elektronika (terutama ketika produk Arduino makin terkenal), motor shield untuk Arduino dari berbagai produsen telah tersedia banyak dipasaran. Bagi kita yang tidak ingin direpotkan dengan membuat rangkaian elektronika, kita dapat membeli salah satu shield dengan harga yang terjangkau.

Pada tulisan ini, kita akan membahas tentang salah satu motor shield, yang merupakan salah satu produk keluaran DFRobot. Driver ini menggunakan IC L298N dengan kontrol tegangan sebesar 5 Volt dari Arduino. Tegangan untuk suplai ke motor antara 4,8 sampai 35 Volt. Walaupun terdapat pemilihan sumber tegangan, namun sangat disarankan untuk menggunakan sumber tegangan dari luar dan jangan mengambil sumber tegangan dari papan Arduino kita. Dengan menggunakan IC L298N, masing-masing kanal dapat dialiri arus sampai maksimal 2 Ampere. Driver jenis ini memiliki dua kanal, yang berarti dapat digunakan untuk menggerakkan dua jenis motor DC sekaligus. Produk ini kompatibel dengan Arduino Uno dan Mega.

Gambar 1. Motor Shield keluaran DFRobot

Pada driver ini, tegangan output ke motor dapat dikontrol dengan dua teknik, yaitu dengan menggunakan PWM (Pulse Width Modulation) dan dengan menggunakan PLL (Phase Locked Loop). Namun, pada tulisan ini, kita akan membahas khusus teknik PWM. Dengan menggunakan sebuah shield, tentunya terdapat pin pada Arduino yang digunakan oleh shield tersebut untuk berkomunikasi. Pin digital 5 dan 6 masing-masing digunakan untuk mengontrol kecepatan motor 1 dan motor 2, sedangkan pin digital 4 dan 7 masing-masing digunakan untuk mengontrol arah motor 1 dan motor 2. Tabel 1 merangkum penjelasan tersebut.

PinFungsi
Tabel 1. Pengaturan Pin pada Mode PWM
Digital 4Kontrol arah motor 1
Digital 5Kontrol kecepatan (PWM) motor 1
Digital 6Kontrol kecepatan (PWM) motor 2
Digital 7Kontrol arah motor 1

Untuk mengontrol arah, cukup berikan sinyal LOW atau HIGH ke pin 4 untuk motor 1, atau ke pin 7 untuk motor 2. Arah putaran motor ketika diberikan sinyal LOW akan berbeda dengan arah putaran ketika diberikan sinyal HIGH. Untuk mengontrol kecepatan, cukup berikan besarnya sinyal PWM ke pin 5 untuk motor 1, atau ke pin 6 untuk motor 2. Besarnya sinyal PWM pada Arduino adalah antara 0 sampai 255. Cukup mudah, bukan? Perlu diperhatikan bahwa ketika kita menggunakan pin-pin tersebut untuk menggerakkan motor, pin-pin tersebut jangan digunakan untuk keperluan yang lain. Jika kita terpaksa sekali menggunakan pin-pin tersebut untuk keperluan lain dan tidak bisa digantikan, maka strateginya adalah memisahkan driver tersebut dengan Arduino (tidak menyatukannya/menumpuk seperti halnya sebuah shield). Pin digital 5 dan 6 dapat digantikan dengan pin yang lain (asalkan memiliki fungsi PWM) dengan cara menghubungkan Arduino dan shield menggunakan kabel jumper. Untuk kontrol arah, kita dapat gunakan pin mana saja, asalkan mampu menghasilkan logika LOW dan logika HIGH (bahkan dapat menggunakan pin analog A0 sampai A5 pada Arduino Uno).

Membangkitkan PWM pada MATLAB

Berbeda dengan pemrograman PWM pada Arduino yang harus memberikan nilai antara 0 sampai dengan 255 menggunakan perintah analogWrite(), pada MATLAB, nilai akan dipetakan menjadi antara 0 dan 1. Sederhananya, nilai 0 akan membuat motor berhenti, dan nilai 1 akan membuat motor berputar secara maksimal (sesuai dengan sumber tegangan ekternal yang diberikan). Ingat sekali lagi, selalulah gunakan sumber tegangan ekternal untuk menggerakkan motor, dan jangan mengambil sumber tegangan dari Arduino. Hal ini untuk mencegah kerusakan yang mungkin ditimbulkan jika motor mengkonsumsi arus terlalu besar.

Pertama, tancapkan motor shield ke Arduino Uno, dan rangkailah komponen pendukungnya (motor dan sumber tegangan eksternal), seperti yang terlihat pada Gambar 2. Jika Pembaca hanya mempunyai sebuah motor, pasanglah di Motor 1, seperti pada Gambar 2. Selanjutnya, koneksikan Arduino dengan komputer melalui kabel USB. Jalankan program MATLAB. Pada jendela Command Window, ketikklah sintaks untuk membuat objek Arduino. Sesuaikan dengan nomer Port COM kita. Berikut contohnya:

a = arduino('com33', 'uno');

Gambar 2. Contoh Pemasangan dua motor DC pada motor shield

Selanjutnya, tentukan arah putaran motor. Saat ini shield telah ditancapkan pada Arduino Uno, dan untuk arah motor 1 digunakan pin digital 4. Asumsi saat ini Penulis mengarahkan putaran forward. Berikut contoh sintaksnya:

writeDigitalPin(a,4,1);

Sekarang, tentukan kecepatan putar motor dengan menggunakan sintaks writePWMDutyCycle. Ingat pada MATLAB, nilai minimum adalah 0 dan maksimum adalah 1.

% motor 1 berhenti
writePWMDutyCycle(a, 5, 0);

% motor 1 setengah kecepatan
writePWMDutyCycle(a, 5, 0.5);

% motor 1 berputar maksimal
writePWMDutyCycle(a, 5, 1);

Jika kita menghubungkan motor ke motor shield kita, maka akan terlihat bagaimana perubahan kecepatan motor. Atau, jika saat ini kita tidak memiliki motor, kita dapat mengukur besarnya tegangan output yang dikeluarkan pada terminal motor shield menggunakan multimeter.

Jika ingin membalikkan arah putaran, gunakanlah sintaks berikut (dengan syarat motor bersifat reversible):

% balik arah putaran
writeDigitalPin(a,4,0);

Jika kita menggunakan dua motor (lihat Gambar 2), kita dapat memanfaatkan pin digital 7 untuk arah putaran, dan pin digital 6 untuk kecepatan putaran, seperti pada sintaks berikut:

writeDigitalPin(a,7,1);

% motor 2 berhenti
writePWMDutyCycle(a, 6, 0);

% motor 2 setengah kecepatan
writePWMDutyCycle(a, 6, 0.5);

% motor 2 berputar maksimal
writePWMDutyCycle(a, 6, 1);

% balik arah putaran
writeDigitalPin(a,7,0);

Referensi

Artikel ini sebagian diambil dari:

Wardana, Kusuma. 2015. Teknik Antarmuka MATLAB dan Arduino. MiaranaDIY

9.349
Image

Kusuma Wardana

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik Negeri Bali. Saat ini Ia menjadi salah satu penulis di tutorkeren.com.

Artikel Menarik Lainnya
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.