Laporan Akhir 2


1. Prosedur[Kembali]

  1. Siapkan seluruh komponen yang dibutuhkan.
  2. Rangkai komponen sesuai dengan gambar yang ada di modul.
  3. Pastikan semua koneksi sudah sesuai, tidak ada kabel yang longgar atau terbalik.
  4. Buka software STM32CubeIDE lalu lakukan konfigurasi pin pada STM untuk menentukan GPIO input dan GPIO output
  5. Masukan Program ke dalam software STM32CubeIDE lalu build untuk memastikan tidak ada program yang error
  6. Hubungkan board STM32 ke komputer, lalu lakukan pemrograman sesuai dengan flowchart yang telah dibuat.
  7. Setelah program berhasil di-upload, silahkan run untuk memastikan logika dan rangkaian sudah benar.

2. Hardware dan Diagram Blok[Kembali]

    • Hardware :


    a) Mikrokontroler STM32 NUCLEO-G474RE








    2. Flame Sensor



    3. Buzzer


    4. Power Supply

     
    5. RGB LED
    Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia

    6. Resistor 1k Ohm



    7. Floating Switch

    8. Adaptor



    9. Breadboard

3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

  • Rangkaian Simulasi


  • Prinsip Kerja

1. Tahap Persiapan (Inisialisasi)
Saat sistem pertama kali dijalankan, mikrokontroler melakukan inisialisasi:

Menentukan pin input:
  • Flame Sensor (deteksi api)
  • Sensor level air (float/tangki)
Menentukan pin output:
  • Relay (pompa)
  • Buzzer
  • LED
Tahap ini memastikan semua komponen siap digunakan


2. Tahap Monitoring Sistem (Loop Utama)
Setelah inisialisasi selesai, sistem masuk ke loop utama (berjalan terus-menerus).
Di tahap ini, mikrokontroler akan terus:
  • Membaca semua sensor
  • Mengambil keputusan berdasarkan kondisi
3. Tahap Pengecekan Keamanan (Prioritas Utama)
Sebelum menjalankan fungsi utama, sistem selalu mengecek kondisi keamanan:
Objek: Flame Sensor
Jika YA (Terdeteksi Api):
  • Pompa = OFF
  • Buzzer = ON
  • LED = ON
  • Sistem masuk mode darurat (prioritas utama)
Jika TIDAK (Aman):

  • Sistem lanjut ke pengecekan berikutnya (level air)
4. Tahap Pengecekan Level Air (Operasional Normal)
Dilakukan hanya jika kondisi aman dari api.
Kondisi: Sensor Level Air
Jika YA (Tangki Penuh):
  • Pompa = OFF (mencegah overflow)
Jika TIDAK (Tangki Belum Penuh):
  • Pompa = ON (mengisi tangki)
5. Kembali ke Monitoring
Setelah itu, sistem kembali lagi ke:
  • Tahap monitoring
  • Mengulang proses dari pengecekan keamanan

4. Flowchart dan Listing Program[Kembali]

  • Flowchart


Listing Program:

#include "main.h" void SystemClock_Config(void); void MX_GPIO_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while (1) {GPIO_PinState flame_state = HAL_GPIO_ReadPin(FLAME_PORT, FLAME_PIN); GPIO_PinState float_state = HAL_GPIO_ReadPin(FLOAT_PORT, FLOAT_PIN); /* ===== LOGIKA ALARM (FLAME SENSOR) ===== */ // Jika api terdeteksi, LED dan Buzzer menyala if (flame_state == GPIO_PIN_RESET) { HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET); } else { // Sebaliknya: Api tidak ada, LED dan Buzzer mati HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET); HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET); } /* ===== LOGIKA POMPA (FLOAT SENSOR) ===== */ // Jika float terdeteksi (tangki penuh), pompa MATI if (float_state == GPIO_PIN_SET) { HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET); } else { // Sebaliknya: Float tidak terdeteksi (tangki kosong), pompa HIDUP HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); } HAL_Delay(100); } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /* Voltage scaling */ HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); /* HSI Oscillator */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; HAL_RCC_OscConfig(&RCC_OscInitStruct); /* Clock configuration */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0); } void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); /* INPUT: Flame & Float sensor */ GPIO_InitStruct.Pin = FLAME_PIN | FLOAT_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* OUTPUT: LED, Buzzer, Relay */ GPIO_InitStruct.Pin = LED_PIN | BUZZER_PIN | RELAY_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Relay default ON (pompa hidup) */ HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); } void Error_Handler(void) { __disable_irq(); while (1) { HAL_GPIO_TogglePin(LED_PORT, LED_PIN); HAL_Delay(200); } }

5. Video Demo[Kembali]





6.Analisa






7.Download File


Tidak ada komentar:

Posting Komentar

   BAHAN PRESENTASI UNTUK MATA KULIAH ELEKTRONIKA 2024 Oleh  : MUHAMMAD RHAKA AULIA (2310953009) Dosen Pengampu  : Dr. Darwison, MT Referens...