Tugas Pendahuluan 2 M1

 [KEMBALI KE MENU SEBELUMNYA]


Tugas Pendahuluan 2 Modul 1
(Percobaan 3 Kondisi 1)

1. Prosedur

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler yang ada di proteus.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
5. Selesai

2. Hardware dan Diagram Blok

Hardware :

1) Mikrokontroler STM32F103C8



2). Infrared Sensor

Infrared Sensor Module



3). Buzzer


4). Power Supply

 
5). LED



6). Resistor 1k Ohm dan 220 ohm



7). Switch



8). Adaptor



9). Breadboard



Diagram Blok  :



3. Rangkaian Simulasi dan Prinsip Kerja

Rangkaian Simulasi Sebelum dirunning:






Rangkaian Simulasi Setelah dirunning:
 



Prinsip Kerja : 

Pada rangkaian ini, mikrokontroler STM32F103C8T6 membaca dua input yaitu infrared sensor pada pin PA0 dan touch sensor pada pin PA1. Sistem bekerja berdasarkan kombinasi kedua input tersebut, di mana LED akan menyala hanya ketika infrared sensor mendeteksi objek (bernilai HIGH) dan touch sensor tidak mendeteksi sentuhan (bernilai LOW). Mikrokontroler akan memproses kondisi tersebut dengan logika IR = 1 dan Touch = 0, kemudian memberikan output HIGH pada pin LED (misalnya PB0) sehingga LED menyala. Jika kondisi tersebut tidak terpenuhi, maka mikrokontroler akan memberikan output LOW sehingga LED tetap mati. Seluruh proses ini berlangsung secara terus-menerus di dalam loop utama program menggunakan fungsi dari STM32 HAL Library.

4. Flowchart dan Listing Program

Flowchart :





Listing Program :
#include "main.h" 
// Menghubungkan dengan file header utama

void SystemClock_Config(void); 
// Deklarasi fungsi konfigurasi clock

static void MX_GPIO_Init(void); 
// Deklarasi fungsi inisialisasi GPIO

int main(void) 
// Fungsi utama program
{
  HAL_Init(); 
  // Inisialisasi sistem HAL (reset & timer)

  SystemClock_Config(); 
  // Mengatur clock mikrokontroler

  MX_GPIO_Init(); 
  // Inisialisasi semua pin GPIO

  while (1) 
  // Loop tak terbatas (program berjalan terus)
  {
    if (HAL_GPIO_ReadPin(GPIOA, IR_Pin) == GPIO_PIN_SET &&
        HAL_GPIO_ReadPin(GPIOA, touch_Pin) == GPIO_PIN_RESET) 
    // Jika IR aktif dan touch tidak disentuh
    {
      HAL_GPIO_WritePin(GPIOB, LED_Pin, GPIO_PIN_SET); 
      // Menyalakan LED
    }
    else 
    // Jika kondisi tidak terpenuhi
    {
      HAL_GPIO_WritePin(GPIOB, LED_Pin, GPIO_PIN_RESET); 
      // Mematikan LED
    }
  }
}

void SystemClock_Config(void) 
// Fungsi konfigurasi clock
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0}; 
  // Struktur konfigurasi osilator

  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; 
  // Struktur konfigurasi clock

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; 
  // Menggunakan osilator HSI

  RCC_OscInitStruct.HSIState = RCC_HSI_ON; 
  // Mengaktifkan HSI

  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; 
  // Kalibrasi default HSI

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; 
  // Tidak menggunakan PLL

  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 
  // Cek apakah konfigurasi berhasil
  {
    Error_Handler(); 
    // Jika gagal, masuk error handler
  }

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; 
  // Mengatur jenis clock

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; 
  // Sumber clock dari HSI

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 
  // Pembagi clock AHB = 1

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; 
  // Pembagi clock APB1 = 1

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; 
  // Pembagi clock APB2 = 1

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) 
  // Cek konfigurasi clock
  {
    Error_Handler(); 
    // Jika gagal, masuk error handler
  }
}

static void MX_GPIO_Init(void) 
// Fungsi inisialisasi GPIO
{
  GPIO_InitTypeDef GPIO_InitStruct = {0}; 
  // Struktur konfigurasi GPIO

  __HAL_RCC_GPIOD_CLK_ENABLE(); 
  // Aktifkan clock port D

  __HAL_RCC_GPIOA_CLK_ENABLE(); 
  // Aktifkan clock port A

  __HAL_RCC_GPIOB_CLK_ENABLE(); 
  // Aktifkan clock port B

  HAL_GPIO_WritePin(GPIOB, LED_Pin|Buzzer_Pin, GPIO_PIN_RESET); 
  // Set awal LED dan buzzer OFF

  GPIO_InitStruct.Pin = IR_Pin|touch_Pin; 
  // Pilih pin IR dan touch

  GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 
  // Set sebagai input

  GPIO_InitStruct.Pull = GPIO_NOPULL; 
  // Tanpa pull-up/pull-down

  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 
  // Terapkan konfigurasi ke port A

  GPIO_InitStruct.Pin = LED_Pin|Buzzer_Pin; 
  // Pilih pin LED dan buzzer

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 
  // Set sebagai output push-pull

  GPIO_InitStruct.Pull = GPIO_NOPULL; 
  // Tanpa pull

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
  // Kecepatan rendah

  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 
  // Terapkan konfigurasi ke port B
}

void Error_Handler(void) 
// Fungsi penanganan error
{
  __disable_irq(); 
  // Menonaktifkan interrupt

  while (1) 
  // Loop tak terbatas (program berhenti)
  {
  }
}

5. Kondisi

Percobaan 3 Kondisi 1
Buatlah rangkaian seperti pada gambar percobaan 3 dengan kondisi ketika Infrared sensor mendeteksi benda dan sensor Touch tidak mendeteksi sentuhan, maka LED menyala

6. Video Simulasi




7. Download File

Download HTML [Download]
Download File Rangkaian [Download]
Download Video Simulasi [Download]
Download Listing Program [Download]
Datasheet Mikrokontroler STM32F103C8 [Download]
Datasheet Sensor Infrared [Download]
Datasheet Sensor Touch [Download]
Datasheet RGB LED [Download]





Komentar

Postingan populer dari blog ini