LAPORAN AKHIR MODUL 1 PERCOBAAN 4
- Siapkan STM32 NUCLEO-G474RE, float switch, flame sensor, relay, buzzer, LED, breadboard, adaptor, dan kabel jumper.
- Pastikan laptop telah terinstal STM32CubeIDE dan driver ST-LINK.
- Pastikan semua komponen dalam kondisi baik.
B. Perakitan Rangkaian
- Hubungkan pin 5V/3.3V dari board ke jalur VCC breadboard.
- Hubungkan pin GND ke jalur ground breadboard.
-
Rangkai flame sensor:
- VCC → 3.3V/5V
- GND → GND
- OUT → PA0
-
Rangkai float switch:
- Salah satu kaki → 3.3V
- Kaki lain → PA1
- Gunakan konfigurasi pull-down
-
Rangkai LED:
- Anoda → PA5
- Katoda → resistor → GND
-
Rangkai buzzer:
- Positif → PA6
- Negatif → GND
-
Rangkai relay:
- IN → PA7
- VCC → 5V
- GND → GND
- Periksa kembali semua koneksi agar tidak terjadi kesalahan wiring.
C. Konfigurasi dan Upload Program
- Hubungkan board NUCLEO ke laptop menggunakan kabel USB (ST-LINK sudah onboard).
- Buka STM32CubeIDE dan buat/buka project sesuai tipe board.
-
Konfigurasikan pin:
- PA0 → input (flame sensor)
- PA1 → input (float switch)
- PA5 → output (LED)
- PA6 → output (buzzer)
- PA7 → output (relay)
- Build project hingga tidak ada error.
- Klik Run/Download untuk meng-upload program ke board.
- Pastikan proses flashing berhasil.
D. Pengujian Sistem
- Nyalakan sistem dan pastikan board aktif.
-
Uji flame sensor:
- Dekatkan api/simulasi api
- Amati LED dan buzzer menyala
-
Uji float switch:
- Ubah posisi (seolah tangki penuh/kosong)
- Amati respon relay
-
Uji kombinasi kondisi:
- Api terdeteksi → relay mati
- Tangki penuh → relay mati
- Aman & belum penuh → relay hidup
- Lakukan pengujian berulang untuk memastikan sistem bekerja stabil.
2. Hardware (kembali)
Alat
- STM32 NUCLEO-G474RE
- Laptop / PC dengan STM32CubeIDE
- Breadboard
- Kabel jumper
- Adaptor / sumber tegangan
- Float Switch
- Flame Sensor
- Relay
- Buzzer
- LED
- Resistor (±220 Ω untuk LED)
3. Rangkaian Simulasi dan Prinsip Kerja (kembali)
Sistem kontrol otomatis tangki minyak ini bekerja dengan memanfaatkan dua sensor sebagai input, yaitu flame sensor untuk mendeteksi adanya api dan float switch untuk mendeteksi level tangki. Mikrokontroler akan membaca kedua sensor tersebut secara terus-menerus. Jika flame sensor mendeteksi api, maka LED dan buzzer akan langsung aktif sebagai indikator bahaya. Selain itu, relay yang berfungsi sebagai pengendali pompa akan dimatikan untuk mencegah risiko yang lebih besar. Begitu juga ketika float switch mendeteksi bahwa tangki sudah penuh, relay akan dimatikan sehingga pompa berhenti bekerja. Sebaliknya, jika tidak ada api dan tangki belum penuh, relay akan aktif sehingga pompa dapat mengisi tangki. Dengan demikian, sistem ini bekerja secara otomatis berdasarkan kondisi keamanan dan level tangki.
4. Flowchart dan Listing Program (kembali)
#include "main.h"
/* Function prototypes */
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);
}
}
/* GPIO Initialization */
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);
}
/* Clock Configuration */
void SystemClock_Config(void)
{
// Menggunakan konfigurasi default dari STM32CubeIDE
}
/* Error Handler */
void Error_Handler(void)
{
while (1)
{
}
}
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
void Error_Handler(void);
#ifdef __cplusplus
}
#endif
#endif /* __MAIN_H */
5. Video Demo (kembali)
6. Kondisi (kembali)
Sistem ini bekerja dengan membaca dua kondisi utama, yaitu keberadaan api dari flame sensor dan level tangki dari float switch. Jika terdeteksi api, maka LED dan buzzer akan menyala sebagai peringatan, serta relay akan mematikan pompa demi keamanan. Selain itu, jika tangki sudah penuh (float switch aktif), pompa juga akan dimatikan melalui relay. Sebaliknya, jika tidak ada api dan tangki belum penuh, relay akan tetap aktif sehingga pompa dapat bekerja mengisi tangki. Dengan demikian, sistem secara otomatis mengutamakan keselamatan dan pengisian tangki sesuai kondisi.
7. Video Simulasi (kembali)
8. Download File (kembali)
Komentar
Posting Komentar