[menuju akhir]


Langkah-langkah percobaan :

1. Buka web WOKWI.COM dan cari STM 32 NUCLEO C031C6

2. Rangkai komponen sesuai dengan modul percobaan

3. Klik pada Library Manager untuk membuat file baru yang bernama main.h dan main.c

4. Masukan program yang telah di buat sesuai kondisi pada kedua file tersebut

5. Jalankan


2. Hardware dan Diagram Blok [Kembali]
a. Hardware
1. STM32 NUCLEO-G474RE

STM32 NUCLEO-G474RE adalah papan pengembangan (development board) berbasis mikrokontroler STM32 yang dirancang oleh STMicroelectronics untuk memudahkan proses pembelajaran, prototyping, dan pengembangan sistem embedded.

Secara spesifik, board ini menggunakan mikrokontroler STM32G474RE, yang termasuk dalam keluarga STM32 seri G4. Mikrokontroler ini berbasis inti ARM Cortex-M4 dengan kemampuan pemrosesan yang cukup tinggi serta dilengkapi dengan fitur DSP (Digital Signal Processing) dan FPU (Floating Point Unit), sehingga sangat cocok untuk aplikasi yang membutuhkan perhitungan matematis cepat seperti kontrol motor, sistem tenaga, dan pengolahan sinyal.


2. 
Float Switch


Float switch adalah sensor level cairan yang digunakan untuk mendeteksi ketinggian permukaan cairan (seperti air, minyak, atau bahan cair lainnya) di dalam suatu tangki atau wadah.

Secara prinsip kerja, float switch menggunakan pelampung (float) yang akan naik dan turun mengikuti permukaan cairan. Ketika cairan naik, pelampung ikut naik hingga mencapai titik tertentu dan akan mengaktifkan saklar di dalamnya (biasanya berupa reed switch atau mekanisme kontak). Sebaliknya, ketika cairan turun, pelampung juga turun dan saklar akan kembali ke kondisi semula. Perubahan posisi ini menghasilkan sinyal listrik berupa kondisi ON (HIGH) atau OFF (LOW) yang dapat dibaca oleh mikrokontroler.

3. Flame Sensor

Flame sensor adalah sensor yang digunakan untuk mendeteksi adanya nyala api (flame) berdasarkan radiasi cahaya yang dipancarkan oleh api, terutama pada spektrum inframerah (infrared) dan sebagian cahaya tampak.

Secara prinsip kerja, flame sensor memiliki komponen utama berupa fotodioda atau fototransistor yang peka terhadap panjang gelombang tertentu (biasanya sekitar 760–1100 nm). Ketika tidak ada api, sensor akan menghasilkan sinyal rendah (LOW). Namun, ketika terdapat nyala api di dekatnya, radiasi cahaya dari api akan diterima oleh sensor sehingga menghasilkan sinyal tinggi (HIGH). Perubahan sinyal ini kemudian dapat dibaca oleh mikrokontroler untuk menentukan apakah ada kondisi kebakaran atau tidak.


4. Relay

Relay adalah komponen elektromekanik yang berfungsi sebagai saklar (switch) yang dikendalikan secara listrik, sehingga memungkinkan suatu rangkaian dengan tegangan atau arus kecil untuk mengontrol rangkaian lain yang memiliki tegangan atau arus lebih besar.

Secara prinsip kerja, relay terdiri dari kumparan (coil), inti besi, dan kontak saklar (NO/NC). Ketika arus listrik dialirkan ke kumparan, akan terbentuk medan magnet yang menarik kontak saklar sehingga terjadi perubahan posisi. Kontak yang awalnya terbuka (Normally Open/NO) akan menjadi tertutup, sedangkan kontak yang awalnya tertutup (Normally Closed/NC) akan terbuka. Ketika arus pada kumparan dihentikan, medan magnet hilang dan kontak kembali ke posisi semula.


5. Buzzer
Buzzer adalah suatu komponen elektronika yang berfungsi untuk mengubah energi listrik menjadi energi suara (bunyi) melalui mekanisme getaran. Komponen ini termasuk dalam kategori output device karena digunakan untuk memberikan respon berupa suara terhadap suatu kondisi atau perintah dalam rangkaian elektronik.

6. Resistor 

Resistor adalah komponen elektronik pasif yang berfungsi untuk membatasi arus listrik dalam suatu rangkaian. Resistor bekerja berdasarkan hukum Ohm, yang menyatakan bahwa tegangan (V) = arus (I) × resistansi (R). Resistor memiliki satuan Ohm (Ω) dan digunakan dalam berbagai aplikasi seperti pembagian tegangan, kontrol arus, dan proteksi rangkaian elektronik.

7. LED

LED adalah dioda semikonduktor yang dapat memancarkan cahaya ketika dialiri arus listrik. LED digunakan dalam berbagai aplikasi seperti indikator elektronik, pencahayaan, dan display. LED hanya bekerja pada arah bias maju dan memiliki berbagai warna yang ditentukan oleh material semikonduktornya.

8. Push Button

Push button adalah komponen input berupa saklar mekanis yang bekerja ketika ditekan (push) oleh pengguna untuk menghubungkan atau memutuskan aliran listrik dalam suatu rangkaian.

Secara prinsip kerja, push button memiliki dua kondisi utama, yaitu Normally Open (NO) dan Normally Closed (NC). Pada tipe Normally Open, dalam kondisi tidak ditekan rangkaian berada dalam keadaan terbuka (tidak mengalirkan arus), dan ketika tombol ditekan, rangkaian menjadi tertutup sehingga arus dapat mengalir. Sebaliknya, pada tipe Normally Closed, rangkaian dalam kondisi normal tertutup dan akan terbuka saat tombol ditekan.


b. Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



Prinsip Kerja :

Rangkaian kontrol otomatis tangki minyak pada gambar tersebut bekerja dengan memanfaatkan mikrokontroler STM32 sebagai pusat pengendali, dua buah push button sebagai pengganti input sensor (flame dan float), serta aktuator berupa LED, buzzer, dan relay yang mengendalikan pompa. Ketika sistem diberi catu daya, mikrokontroler akan menginisialisasi seluruh pin input dan output, kemudian secara terus-menerus membaca kondisi input dari kedua push button yang merepresentasikan sensor flame (api) dan float (level cairan).

Dalam kondisi normal, yaitu ketika tidak ada api yang terdeteksi, sistem akan bekerja berdasarkan sensor level (float). Jika tangki belum penuh (float LOW), maka mikrokontroler akan mengaktifkan relay sehingga pompa menyala untuk mengisi tangki. Sebaliknya, jika tangki sudah penuh (float HIGH), maka relay dimatikan sehingga pompa berhenti bekerja. Pada kondisi ini, LED dan buzzer dalam keadaan mati karena tidak ada kondisi darurat.

Namun, ketika flame sensor mendeteksi adanya nyala api (direpresentasikan oleh push button flame dalam kondisi HIGH), sistem akan langsung masuk ke mode darurat. Mikrokontroler akan segera menyalakan LED merah sebagai indikator visual dan mengaktifkan buzzer sebagai alarm peringatan. Pada saat yang sama, relay akan dimatikan sehingga pompa tetap dalam kondisi mati, terlepas dari kondisi level tangki. Hal ini bertujuan untuk mencegah risiko yang lebih besar, seperti penyebaran api akibat aktivitas pompa.

Dengan demikian, prinsip kerja rangkaian ini mengutamakan keselamatan (safety priority), di mana deteksi api memiliki prioritas tertinggi dibandingkan kontrol level tangki. Sistem akan selalu memastikan bahwa ketika api terdeteksi, pompa dimatikan dan alarm diaktifkan, sementara pada kondisi normal sistem kembali bekerja secara otomatis berdasarkan level cairan di dalam tangki.

4. Flowchart dan Listing Program [Kembali]
a. Flowchart
  1. Mulai
  2. Inisialisasi HAL
  3. Konfigurasi clock sistem
  4. Inisialisasi GPIO (input dan output)
  5. Masuk ke loop utama
  6. Baca sensor flame (api)
  7. Baca sensor float (level air)
  8. Jika flame = HIGH (terdeteksi api) maka:
  9. → LED menyala
  10. → Buzzer menyala
  11. → Pompa mati (relay OFF)
  12. Jika flame = LOW (tidak ada api) maka:
  13. → LED mati
  14. → Buzzer mati
  15. Cek kondisi float:
  16. Jika float = HIGH (tangki penuh) maka:
  17. → Pompa mati
  18. Jika float = LOW (tangki belum penuh) maka:
  19. → Pompa menyala
  20. Delay 100 ms
  21. Kembali ke langkah 6 (loop terus menerus)

b. Listing 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;
    GPIO_PinState pump_state;

    /* ===== BACA SENSOR ===== */
    flame_state = HAL_GPIO_ReadPin(FLAME_PORT, FLAME_PIN);
    float_state = HAL_GPIO_ReadPin(FLOAT_PORT, FLOAT_PIN);

    /* ===== KONTROL POMPA ===== */
    if ((flame_state == FLAME_DETECTED) || (float_state == TANK_FULL))
    {
      // Api ATAU tangki penuh → pompa MATI
      HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, PUMP_OFF);
    }
    else
    {
      // Aman → pompa HIDUP
      HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, PUMP_ON);
    }

    /* ===== CEK STATUS POMPA ===== */
    pump_state = HAL_GPIO_ReadPin(RELAY_PORT, RELAY_PIN);

    /* ===== KONTROL ALARM ===== */
    if ((flame_state == FLAME_DETECTED) && (pump_state == PUMP_OFF))
    {
      // Kondisi yang diminta
      HAL_GPIO_WritePin(LED_PORT, LED_PIN, ALARM_ON);
      HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, ALARM_ON);
    }
    else
    {
      HAL_GPIO_WritePin(LED_PORT, LED_PIN, ALARM_OFF);  
      HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, ALARM_OFF);
    }

    HAL_Delay(100);
  }
}

/* ===== GPIO INIT ===== */
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);

  /* Default: pompa HIDUP */
  HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, PUMP_ON);
}

/* ===== CLOCK ===== */
void SystemClock_Config(void)
{
  /* Default */
}

/* ===== ERROR ===== */
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

/* ====== LOGIC DEFINITION ====== */
/* Flame Sensor */
#define FLAME_DETECTED        GPIO_PIN_SET
#define FLAME_NOT_DETECTED    GPIO_PIN_RESET

/* Float Sensor */
#define TANK_FULL             GPIO_PIN_SET
#define TANK_NOT_FULL         GPIO_PIN_RESET

/* Pump (Relay) */
#define PUMP_ON               GPIO_PIN_SET
#define PUMP_OFF              GPIO_PIN_RESET

/* Alarm (LED & Buzzer) */
#define ALARM_ON              GPIO_PIN_SET
#define ALARM_OFF             GPIO_PIN_RESET

void Error_Handler(void);

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */

5. Video Demo [Kembali]


6. Kondisi [Kembali]

Buatlah rangkaian seperti pada gambar percobaan 4 dengan kondisi ketika flame sensor mendeteksi adanya nyala api dan pompa dalam keadaan mati, maka LED indikator merah menyala dan buzzer berbunyi sebagai alarm peringatan, sedangkan pompa tetap dalam kondisi mati.

7. Video Simulasi [Kembali]



8. Download File [Kembali]
1. Download File Rangkaian 
2. Download Video Simulasi
3. Download File HTML


Komentar

Postingan populer dari blog ini