Pengendalian Motor DC dengan Modul L298N pada STM32

3 min read 22-08-2024
Pengendalian Motor DC dengan Modul L298N pada STM32

Pengendalian motor DC adalah salah satu aplikasi penting dalam sistem otomasi dan robotika. Salah satu cara untuk mengendalikan motor DC adalah dengan menggunakan modul L298N. Modul ini memungkinkan kita untuk mengemudikan motor DC dengan kontrol arah dan kecepatan yang mudah. Pada artikel ini, kita akan membahas bagaimana cara mengendalikan motor DC menggunakan modul L298N dengan mikrokontroler STM32.

Apa Itu Modul L298N?

Modul L298N adalah sebuah pengendali motor yang dapat menggerakkan motor DC secara bidirectional. Modul ini menggunakan IC L298, yang merupakan driver motor dual H-Bridge. Dengan adanya H-Bridge, kita bisa membalik arah putaran motor DC dengan mudah. Selain itu, modul ini juga dapat digunakan untuk mengontrol kecepatan motor dengan metode PWM (Pulse Width Modulation).

Fungsi Utama Modul L298N

  1. Pengendalian Arah Putaran: Modul ini memungkinkan kita untuk mengendalikan arah motor, apakah ke depan atau mundur.
  2. Pengendalian Kecepatan: Dengan menggunakan PWM, kita bisa mengubah kecepatan motor sesuai dengan kebutuhan.
  3. Daya yang Cukup: L298N dapat mengendalikan motor dengan arus maksimum hingga 2A per channel dan tegangan jangkauan dari 5V hingga 35V, membuatnya cocok untuk berbagai aplikasi.

Komponen yang Diperlukan

Untuk membuat sistem pengendalian motor DC dengan modul L298N dan STM32, Anda memerlukan beberapa komponen berikut:

  • Mikrokontroler STM32: Pilih STM32 sesuai dengan kebutuhan, misalnya STM32F103C8T6.
  • Modul L298N: Pastikan Anda memiliki modul ini untuk mengendalikan motor.
  • Motor DC: Pilih motor DC yang sesuai untuk proyek Anda.
  • Power Supply: Sesuaikan dengan kebutuhan motor dan modul.
  • Kabel Jumper: Untuk menghubungkan semua komponen.
  • Breadboard atau PCB: Jika diperlukan untuk merakit semua komponen.

Schematic Koneksi

Untuk menghubungkan STM32 dengan modul L298N, berikut adalah skema sederhana:

  • Pin IN1 dari L298N ke pin GPIO STM32 (misal: PA0).
  • Pin IN2 dari L298N ke pin GPIO STM32 (misal: PA1).
  • Pin ENA dari L298N ke pin PWM STM32 (misal: PA2).
  • Pin GND L298N ke GND STM32 dan power supply.
  • Pin VCC L298N ke power supply positif.
  • Motor dihubungkan pada terminal OUT1 dan OUT2 modul L298N.

Mengatur Lingkungan Pengembangan

Sebelum memulai pemrograman, Anda perlu mengatur lingkungan pengembangan untuk STM32. Anda dapat menggunakan:

  • STM32CubeIDE: IDE resmi dari STMicroelectronics untuk pengembangan dengan STM32.
  • STM32CubeMX: Untuk konfigurasi awal pin dan opsi lainnya.

Langkah-langkah Pemrograman

  1. Buat Proyek Baru: Buat proyek baru di STM32CubeIDE dan pilih jenis mikrokontroler STM32 yang Anda gunakan.
  2. Konfigurasi Pin: Atur GPIO untuk IN1, IN2, dan ENA sebagai output.
  3. Aktifkan PWM: Konfigurasikan timer pada STM32 untuk menghasilkan sinyal PWM pada pin yang sesuai.
  4. Tulis Kode: Tulis kode untuk mengendalikan motor.

Contoh Kode Pengendalian Motor DC

Berikut adalah contoh kode sederhana yang dapat Anda gunakan untuk mengendalikan motor DC:

#include "stm32f4xx.h"

void delay(uint32_t delayTime) {
    for(uint32_t i = 0; i < delayTime * 1000; i++);
}

void motorForward(uint8_t speed) {
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // IN1 HIGH
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // IN2 LOW
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, speed); // PWM
}

void motorBackward(uint8_t speed) {
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // IN1 LOW
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // IN2 HIGH
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, speed); // PWM
}

void motorStop() {
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // IN1 LOW
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // IN2 LOW
}

int main(void) {
    HAL_Init();
    // Konfigurasi clock, GPIO, dan timer
    // ... 

    while(1) {
        motorForward(50); // Motor maju dengan kecepatan 50
        delay(1000);
        motorStop();
        delay(1000);
        motorBackward(75); // Motor mundur dengan kecepatan 75
        delay(1000);
        motorStop();
        delay(1000);
    }
}

Penjelasan Kode

  • Fungsi motorForward() digunakan untuk menggerakkan motor maju. Anda dapat mengatur kecepatan PWM berdasarkan argumen speed.
  • Fungsi motorBackward() memperbolehkan motor mundur.
  • Fungsi motorStop() digunakan untuk menghentikan motor.
  • Di dalam fungsi main(), motor akan bergerak maju selama 1 detik, berhenti, mundur selama 1 detik, dan berhenti lagi.

Kesimpulan

Mengendalikan motor DC dengan modul L298N menggunakan STM32 adalah solusi yang efisien dan mudah diimplementasikan. Dengan menguasai konsep dasar ini, Anda dapat memperluas aplikasi pengendalian motor di proyek-proyek yang lebih kompleks, seperti robotika, otomasi rumah, dan banyak lagi. Dengan latihan, Anda bisa menciptakan aplikasi yang memanfaatkan kemampuan motor DC dengan kontrol yang akurat.

Ingatlah selalu untuk merujuk pada datasheet komponen dan dokumentasi STM32 untuk informasi lebih lanjut dan detail konfigurasi yang diperlukan. Selamat berkreasi!