TP 2 PERCOBAAN 3 KONDISI 4



1. Prosedur [Kembali]

  • Persiapan komponen: Siapkan mikrokontroler STM32F103C8 (Blue Pill), driver motor L298, sensor suhu LM35, motor DC, resistor 10kΩ, dan catu daya terpisah untuk motor.

  • Koneksi sensor LM35 (U2):

    • Hubungkan pin 1 (VCC) ke +3.3V
    • Hubungkan pin 2 (VOUT) ke pin PA0 (ADC input) pada STM32
    • Hubungkan pin 3 (GND) ke ground
  • Koneksi STM32 ke L298 (U3):

    • Hubungkan PA4 ke IN1 pada L298
    • Hubungkan PA5 ke IN2 pada L298
    • Hubungkan pin PWM (misal PA6/PA7) ke ENA untuk kontrol kecepatan
    • Hubungkan SENSA dan SENSB ke ground melalui resistor atau langsung ke ground jika tidak digunakan untuk current sensing
  • Koneksi motor:

    • Hubungkan motor DC ke terminal OUT1 dan OUT2 pada L298
  • Koneksi power L298:

    • Hubungkan VCC (pin 9) ke +5V untuk logic supply
    • Hubungkan VS (pin 4) ke catu daya motor terpisah (+5V hingga +35V sesuai kebutuhan motor)
    • Hubungkan GND (pin 8) ke common ground
  • Pull-up resistor: Pasang resistor R1 (10kΩ) dari pin NRST ke +3.3V untuk menjaga stabilitas reset.

  • Koneksi ground: Pastikan ground STM32, ground L298, dan ground catu daya motor semuanya terhubung bersama.

  • 2. Hardware dan Diagram Blok[Kembali]

    1. STM32F103C8

    Bagian - bagian 




    2. Resistor

    Resistor adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika (V=I R). 
    Jenis Resistor yang digunakan disini adalah Fixed Resistor, dimana merupakan resistor dengan nilai tetap terdiri dari film tipis karbon yang diendapkan subtrat isolator kemudian dipotong berbentuk spiral. Keuntungan jenis fixed resistor ini dapat menghasilkan resistor dengan toleransi yang lebih rendah.
    Cara menghitung nilai resistor:
    Tabel warna

    Contoh :
    Gelang ke 1 : Coklat = 1
    Gelang ke 2 : Hitam = 0
    Gelang ke 3 : Hijau   = 5 nol dibelakang angka gelang ke-2; atau kalikan 105
    Gelang ke 4 : Perak  = Toleransi 10%
    Maka nilai resistor tersebut adalah 10 * 105 = 1.000.000 Ohm atau 1 MOhm dengan toleransi 10%.

    Spesifikasi

    3. L298N



    Modul L298N bekerja berdasarkan prinsip H-Bridge (jembatan-H), yaitu rangkaian yang memungkinkan motor DC berputar ke dua arah (maju dan mundur) dengan cara mengatur polaritas tegangan pada motor.

    Di dalamnya terdapat dua kanal driver sehingga dapat mengontrol:

    • 2 motor DC secara independen, atau
    • 1 motor stepper

    Pengendalian dilakukan melalui:

    • Pin IN1–IN4 → menentukan arah putaran motor
    • Pin ENA dan ENB → mengatur kecepatan motor menggunakan sinyal PWM

    Cara kerja dasar:

    • IN1 = HIGH, IN2 = LOW → Motor A berputar maju
    • IN1 = LOW, IN2 = HIGH → Motor A berputar mundur
    • IN1 = IN2 = LOW atau HIGH → motor berhenti (brake/stop)
    • ENA/ENB diberi PWM → mengatur kecepatan motor (0–100%)

    Selain itu, modul ini menggunakan suplai:

    • 12V (Vs) → untuk motor
    • 5V → untuk logika (Arduino dan IC driver)
    • GND → harus disatukan (common ground)

    2. Prosedur Kerja Penggunaan L298N

    a. Persiapan Komponen

    • Modul L298N
    • Motor DC
    • Mikrokontroler (Arduino/STM32)
    • Sumber tegangan (baterai 5–12V atau lebih sesuai motor)

    b. Rangkaian Koneksi

    1. Hubungkan motor ke terminal:
      • Motor A → OUT1 dan OUT2
      • Motor B → OUT3 dan OUT4
    2. Hubungkan catu daya:
      • +V motor → pin 12V L298N
      • GND → GND L298N
    3. Hubungkan kontrol ke mikrokontroler:
      • IN1 – IN4 → pin digital Arduino/STM32
      • ENA / ENB → pin PWM (untuk kontrol kecepatan)
    4. Satukan ground:
      • GND L298N ↔ GND mikrokontroler

    c. Pengaturan Mode Kerja

    • Pasang jumper ENA/ENB → motor kecepatan penuh
    • Lepas jumper ENA/ENB → kecepatan diatur PWM

    d. Pengoperasian

    1. Berikan logika pada IN1–IN4 untuk menentukan arah motor
    2. Kirim sinyal PWM pada ENA/ENB untuk mengatur kecepatan
    3. Motor akan berputar sesuai kombinasi input

    4. Sensor LM35



    Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. 

    Pinout:





    Sensor suhu IC LM35 pada dasarnya memiliki 3 pin yang berfungsi sebagai sumber supply tegangan DC +5 volt, sebagai pin output hasil penginderaan dalam bentuk perubahan tegangan DC pada Vout dan pin untuk Ground.
    Prinsip Kerja LM35 :

    Sensor LM35 bekerja dengan mengubah besaran suhu menjadi besaran tegangan. Tegangan ideal yang keluar dari LM35 mempunyai perbandingan 100°C setara dengan 1 volt. Sensor ini mempunyai pemanasan diri (self heating) kurang dari 0,1°C, dapat dioperasikan dengan menggunakan power supply tunggal dan dapat dihubungkan antar muka (interface) rangkaian control.
    Sensor suhu LM35 mampu melakukan pengukuran suhu dari suhu -55ºC hingga +150ºC dengan toleransi kesalahan pengukuran ±0.5ºC.

    Dilihat dari tipenya range suhu dapat dilihat sebagai berikut :
    • LM35, LM35A -> range pengukuran temperature  -55ºC hingga +150ºC.
    • LM35C, LM35CA -> range pengukuran temperature -40ºC hingga +110ºC.
    • LM35D -> range pengukuran temperature 0ºC hingga +100ºC. 
    Kelebihan LM 35 :
    • Rentang suhu yang jauh, antara -55 sampai +150ºC
    • Low self-heating, sebesar 0.08 ºC
    • Beroperasi pada tegangan 4 sampai 30 V
    • Tidak memerlukan pengkondisian sinyal
    Kekurangan LM 35:
    • Membutuhkan tegangan untuk beroperasi.
    Grafik akurasi LM35 terhadap suhu




    5.Motor












    Motor Listrik DC atau DC Motor adalah suatu perangkat yang mengubah energi listrik menjadi energi kinetik atau gerakan (motion). Motor DC ini juga dapat disebut sebagai Motor Arus Searah. Seperti namanya, DC Motor memiliki dua terminal dan memerlukan tegangan arus searah atau DC (Direct Current) untuk dapat menggerakannya. Motor Listrik DC ini biasanya digunakan pada perangkat-perangkat Elektronik dan listrik yang menggunakan sumber listrik DC seperti Vibrator Ponsel, Kipas DC dan Bor Listrik DC.
    Spesifikasi

    Pinout:

    Grafik Respons:

    d. Ground

    6. Vcc / Batrey



    Spesifikasi

    • Input voltage: ac 100~240v / dc 10~30v
    • Output voltage: dc 1~35v
    • Max. Input current: dc 14a
    • Charging current: 0.1~10a
    • Discharging current: 0.1~1.0a
    • Balance current: 1.5a/cell max
    • Max. Discharging power: 15w
    • Max. Charging power: ac 100w / dc 250w
    • Jenis batre yg didukung: life, lilon, lipo 1~6s, lihv 1-6s, pb 1-12s, nimh, cd 1-16s
    • Ukuran: 126x115x49mm
    • Berat: 460gr

    7. Push Button




    Spesifikasi:





    Cara-Kerja-Push-Button

    Prinsip kerja push button pada dasarnya adalah untuk menghubungkan dan memutuskan aliran listrik. Namun, tombol tekan tidak memiliki kunci dan akan kembali ke posisi semula setelah ditekan.

    Ketika tombol tekan ditekan, nilainya menjadi HIGH dan mengalirkan arus listrik. Namun, setelah dilepas, tombol akan bernilai LOW dan memutuskan arus listrik.

    Namun, bagaimana tombol tekan bekerja bisa berbeda tergantung dari jenis tombol tersebut, apakah itu NO atau NC.

    Oleh karena itu, penting untuk memahami konsep dasar dan spesifikasi dari tombol tekan yang akan digunakan pada setiap proyek.


    Blok Diagram




    3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

    Rangkaian Simulasi 





    Prinsip Kerja :

    Rangkaian ini merupakan sistem kontrol motor berbasis suhu yang memanfaatkan pembacaan analog dari sensor LM35. Sensor LM35 menghasilkan tegangan output yang proporsional terhadap suhu lingkungan dengan sensitivitas 10mV/°C, sehingga pada suhu 25°C sensor akan menghasilkan tegangan sekitar 250mV. Mikrokontroler STM32F103C8 membaca nilai tegangan ini melalui pin ADC PA0, kemudian mengkonversinya menjadi nilai suhu menggunakan perhitungan matematis dalam program. Berdasarkan nilai suhu yang terbaca, mikrokontroler menentukan apakah motor perlu diaktifkan atau tidak, misalnya untuk sistem pendingin yang menyala otomatis saat suhu melewati batas tertentu. Driver motor L298 menerima sinyal kontrol dari STM32 melalui pin IN1 dan IN2 untuk menentukan arah putaran motor, sementara pin ENA menerima sinyal PWM untuk mengatur kecepatan motor. Kombinasi logika IN1 dan IN2 menentukan apakah motor berputar searah jarum jam, berlawanan arah jarum jam, atau berhenti, sedangkan duty cycle PWM pada ENA mengontrol persentase daya yang diberikan ke motor sehingga kecepatan dapat divariasikan secara halus sesuai kebutuhan aplikasi.

    4. Flowchart dan LIsting Program[Kembali]

    Flowchart 





    Listing Program :




    #include "main.h"


    /* ================= HANDLE ================= */

    ADC_HandleTypeDef hadc1;

    TIM_HandleTypeDef htim1;


    /* ================= PROTOTYPE ================= */

    void SystemClock_Config(void);

    static void MX_GPIO_Init(void);

    static void MX_ADC1_Init(void);

    static void MX_TIM1_Init(void);


    /* ================= VARIABLE ================= */

    uint32_t adcValue = 0;

    float voltage = 0.0f;

    float temperature = 0.0f;

    uint8_t system_on = 1;


    /* ================= MAIN ================= */

    int main(void)

    {

    HAL_Init();

    SystemClock_Config();


    MX_GPIO_Init();

    MX_ADC1_Init();

    MX_TIM1_Init();


    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);


    while (1)

    {

    /* ===== BACA LM35 ===== */

    HAL_ADC_Start(&hadc1);

    HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);

    adcValue = HAL_ADC_GetValue(&hadc1);


    voltage = (adcValue / 4095.0f) * 3.3f;

    temperature = voltage * 100.0f; // LM35 (10mV/°C)


    if (system_on)

    {

    float duty = 0.0f;


    /* ================= LOGIKA KIPAS ================= */


    if (temperature < 30.0f)

    {

    /* >>> PELAN (jelas beda) <<< */

    duty = 0.10f; // 10%

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

    }

    else if (temperature >= 30.0f && temperature < 40.0f)

    {

    /* >>> NAIK LINEAR 30–40°C <<< */

    /* 30°C = 10%, 40°C = 100% */

    duty = 0.10f + ((temperature - 30.0f) / 10.0f) * 0.90f;


    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

    }

    else

    {

    /* >>> ≥ 40°C → MATI <<< */

    duty = 0.0f;

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

    }


    /* ===== SET PWM ===== */

    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,

    (uint32_t)(duty * 65535));

    }

    else

    {

    /* ===== SYSTEM OFF ===== */

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 0);

    }


    HAL_Delay(200);

    }

    }


    /* ================= CLOCK ================= */

    void SystemClock_Config(void)

    {

    RCC_OscInitTypeDef RCC_OscInitStruct = {0};

    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};


    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

    RCC_OscInitStruct.HSIState = RCC_HSI_ON;

    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;

    HAL_RCC_OscConfig(&RCC_OscInitStruct);


    RCC_ClkInitStruct.ClockType =

    RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |

    RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;

    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);


    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;

    PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2;

    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);

    }


    /* ================= ADC ================= */

    static void MX_ADC1_Init(void)

    {

    ADC_ChannelConfTypeDef sConfig = {0};


    hadc1.Instance = ADC1;

    hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;

    hadc1.Init.ContinuousConvMode = DISABLE;

    hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;

    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;

    hadc1.Init.NbrOfConversion = 1;

    HAL_ADC_Init(&hadc1);


    sConfig.Channel = ADC_CHANNEL_0; // PA0

    sConfig.Rank = ADC_REGULAR_RANK_1;

    sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5;

    HAL_ADC_ConfigChannel(&hadc1, &sConfig);

    }


    /* ================= TIM1 PWM ================= */

    static void MX_TIM1_Init(void)

    {

    TIM_OC_InitTypeDef sConfigOC = {0};


    htim1.Instance = TIM1;

    htim1.Init.Prescaler = 0;

    htim1.Init.CounterMode = TIM_COUNTERMODE_UP;

    htim1.Init.Period = 65535;

    htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

    HAL_TIM_PWM_Init(&htim1);


    sConfigOC.OCMode = TIM_OCMODE_PWM1;

    sConfigOC.Pulse = 0;

    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

    HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);


    HAL_TIM_MspPostInit(&htim1);

    }


    /* ================= GPIO ================= */

    static void MX_GPIO_Init(void)

    {

    GPIO_InitTypeDef GPIO_InitStruct = {0};


    __HAL_RCC_GPIOA_CLK_ENABLE();


    /* PA2 & PA3 (LED / Driver) */

    GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;

    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


    /* PA4 (BUTTON EXTI) */

    GPIO_InitStruct.Pin = GPIO_PIN_4;

    GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;

    GPIO_InitStruct.Pull = GPIO_PULLUP;

    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


    HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0);

    HAL_NVIC_EnableIRQ(EXTI4_IRQn);

    }


    /* ================= EXTI CALLBACK ================= */

    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

    {

    if (GPIO_Pin == GPIO_PIN_4)

    {

    system_on = !system_on;

    }

    }


    /* ================= ERROR ================= */

    void Error_Handler(void)

    {

    __disable_irq();

    while (1) {}

    }


    5. Video Demo [Kembali]


    6. Kondisi[Kembali]

    Buatlah rangkaian seperti percobaan 3 dengan kondisi ketika sensor LM35 mendeteksi suhu <30 C maka kipas menyala dengan kecepatan rendah dan saat suhu naik maka kecepatan kipas naik secara linear dan ketika suhu 40 C kipas mati.

    7. Video Simulasi[Kembali]



    8. Download File [Kembali]


    1. Download HTML [disini]

    2. Download Rangkaian Proteus  [disini]

    3. Download Vidio Rangkaian [disini]

    4. Download Datasheet Sensor: 

    5. Download library Komponen: 

    7. Download datasheet Motor [disini]

    8. Download datasheet Led [disini]

    9. Download listing program [disini]

    10. Download data sheet [disini]






    Tidak ada komentar:

    Posting Komentar

    LAPORAN AKHIR PRATIKUM

    [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Prosedur 2. Hardware dan Diagram Blok 3. Rangkaian Simulasi dan Prinsip Kerja 4. F...