LA 2
b. Hardware dan Diagram Blok[Kembali]
HARDWARE
Microcontroller | STM32G474RE (ARM Cortex-M4F) |
Operating Voltage | 3.3 V |
Input Voltage (recommended) | 5 V via USB (ST-LINK) atau 7–12 V via VIN |
Input Voltage (limit) | 4.5 – 15 V (VIN board Nucleo) |
Digital I/O Pins | ±51 GPIO pins (tergantung konfigurasi fungsi) |
PWM Digital I/O Pins | Hingga 24 channel PWM (advanced, general-purpose, dan high-resolution timers) |
Analog Input Pins | Hingga 24 channel ADC (12-bit / 16-bit dengan oversampling) |
DC Current per I/O Pin | Maks. 20 mA per pin (disarankan ≤ 8 mA) |
DC Current for 3.3V Pin | Hingga ±500 mA (tergantung regulator & sumber daya) |
Flash Memory | 512 KB internal Flash |
SRAM | 128 KB SRAM (termasuk CCM RAM) |
Clock Speed | Hingga 170 MHz |
2. FLOAT Sensor
SPESIFIKASI :
- Material: Umumnya Stainless Steel SUS304 (anti karat) atau PP Plastic.
- Maksimum Beban Kontak: 50W / 10W (tergantung model).
- Tegangan Maksimum: 220V DC/AC (perlu relay untuk beban AC tinggi).
- Arus Maksimum: 0.5A - 1.5A.
- Panjang Sensor: Tersedia dalam berbagai ukuran, seperti 45mm, 100mm, 150mm, 300mm, hingga 500mm.
- Pemasangan: Umumnya dipasang secara vertikal (atas atau dasar tangki).
- Prinsip Kerja: Menggunakan saklar magnetik (reed switch) yang aktif saat pelampung naik/turun.
3. Flame Sensor
4. LED
5. Buzzer
6. Resistor
c. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Prinsip Kerja
Prinsip kerja sistem berdasarkan flowchart tersebut dimulai dari proses inisialisasi, di mana mikrokontroler (STM32) mengatur semua pin yang digunakan sebagai input dan output, seperti pin untuk flame sensor, float sensor, LED, buzzer, dan relay (pompa). Setelah inisialisasi selesai, sistem masuk ke tahap pemantauan kondisi secara terus-menerus.
Langkah pertama dalam proses pengambilan keputusan adalah membaca kondisi dari flame sensor. Jika flame sensor mendeteksi adanya api, maka sistem langsung masuk ke kondisi darurat. Pada kondisi ini, mikrokontroler akan mematikan pompa (Pompa OFF) untuk mencegah risiko yang lebih besar, serta mengaktifkan buzzer dan LED sebagai indikator bahaya agar pengguna segera mengetahui adanya kebakaran.
Namun, jika flame sensor tidak mendeteksi api, maka sistem akan melanjutkan ke pemeriksaan kondisi berikutnya, yaitu status tangki air melalui float sensor. Jika float sensor mendeteksi bahwa tangki sudah penuh, maka pompa akan dimatikan (Pompa OFF) untuk mencegah air meluap. Sebaliknya, jika tangki belum penuh, maka mikrokontroler akan mengaktifkan pompa (Pompa ON) untuk mengisi tangki hingga mencapai batas yang ditentukan.
d. Flowchart dan Listing Program[Kembali]
FLOWCHART#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_RE `1 SET) { /* Api terdeteksi */ HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET); } else { HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET); HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET); } /* ===== RELAY / POMPA ===== */ if (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) {} }
FIle Zip [klik disini]
LAPORAN AKHIR [Klik Disini]
Datasheet Sensor: - datasheet Sensor FLOAT [disini]
- datasheet Sensor Flame [disini]
- Datasheet STM Nucleo-G4 [Klik Disini]
Datasheet Led [klik disini]
Komentar
Posting Komentar