Modul 1 Percobaan 4

Modul 1 Percobaan 4

a. Prosedur

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

b. Hardware dan Diagram Blok

  • 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

c. Rangkaian Simulasi dan Prinsip Kerja

  • 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
d. Flowchart dan Listing Program

  • Flowchart

  • Listing Program
//Program main.h

#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stm32c0xx_hal.h"

/* ================= INPUT ================= */
#define FLAME_PIN        GPIO_PIN_0
#define FLAME_PORT       GPIOA

#define FLOAT_PIN        GPIO_PIN_1
#define FLOAT_PORT       GPIOA

/* ================= OUTPUT ================= */
#define LED_PIN          GPIO_PIN_5
#define LED_PORT         GPIOA

#define BUZZER_PIN       GPIO_PIN_6
#define BUZZER_PORT      GPIOA

#define RELAY_PIN        GPIO_PIN_7
#define RELAY_PORT       GPIOA

/* ================= FUNCTION ================= */
void Error_Handler(void);

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */


//Program main.c

#include "main.h" 
void SystemClock_Config(void); 
static void MX_GPIO_Init(void); 
int main(void) 
HAL_Init(); 
SystemClock_Config(); 
MX_GPIO_Init(); 
while (1)
  GPIO_PinState flame_state; 
  GPIO_PinState float_state; 
 
  flame_state = HAL_GPIO_ReadPin(FLAME_PORT, FLAME_PIN); 
  float_state = HAL_GPIO_ReadPin(FLOAT_PORT, FLOAT_PIN); 
 
  /* ===== FLAME SENSOR ===== */ 
  if (flame_state == GPIO_PIN_SET) 
  { 
    /* Api terdeteksi */ 
    HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET); 
    HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET); 
  } 
  else 
  { 
    HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET); 
    HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET); 
  } 
 
  /* ===== RELAY / POMPA ===== */ 
  if ((flame_state == GPIO_PIN_SET) || (float_state == GPIO_PIN_SET)) 
  { 
    /* Api ATAU tangki penuh → pompa MATI */ 
    HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET); 
  } 
  else 
  { 
    /* Aman & tangki belum penuh → pompa HIDUP */ 
    HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); 
  } 
 
  HAL_Delay(100); 
 
 
static void MX_GPIO_Init(void) 
  GPIO_InitTypeDef GPIO_InitStruct = {0}; 
 
  __HAL_RCC_GPIOA_CLK_ENABLE(); 
 
  /* INPUT */ 
  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 */ 
  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 */ 
  HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); 
 
void SystemClock_Config(void) 
  /* Clock default CubeIDE */ 
 
void Error_Handler(void) 
  while (1) {} 
}

g. Download File

Komentar

Postingan populer dari blog ini

TUGAS BESAR

Astable Multivibrator D kecil dari 50%

Komparator Non Inverting ,Vref=0