Percobaan 4 Kondisi 6



1. Prosedur [Kembali]

  1. Membuka Wokwi lalu membuat proyek baru dengan memilih board STM32 Nucleo C031C6. Setelah itu menambahkan beberapa komponen pendukung seperti flame sensor sebagai pendeteksi api, float switch sebagai pendeteksi kondisi tangki, relay sebagai pengendali pompa, LED sebagai indikator cahaya, buzzer sebagai indikator suara, serta resistor untuk membatasi arus pada rangkaian.
  2. Selanjutnya merangkai seluruh komponen dengan menghubungkan flame sensor ke salah satu pin input mikrokontroler (misalnya PA0) dan float switch ke pin input lainnya (misalnya PA1). LED dihubungkan ke pin output melalui resistor, buzzer disambungkan ke pin output lain, dan relay dihubungkan ke pin output untuk mengontrol pompa. Semua jalur VCC dan GND dipastikan terhubung dengan benar agar sistem dapat bekerja dengan baik.
  3. Kemudian menuliskan program pada editor Wokwi untuk membaca kondisi flame sensor dan float switch. Flame sensor digunakan untuk mendeteksi ada atau tidaknya api, sedangkan float switch digunakan untuk mendeteksi apakah tangki sudah penuh atau belum.
  4. Berikutnya ditambahkan logika program, yaitu ketika flame sensor tidak mendeteksi api dan float switch tidak mendeteksi tangki penuh, maka sistem menganggap kondisi aman untuk proses pengisian. Dalam kondisi ini, relay akan aktif sehingga pompa menyala untuk mengisi tangki, sedangkan LED dan buzzer tetap mati karena tidak ada kondisi bahaya atau peringatan.
  5. Setelah itu simulasi dijalankan dengan menekan tombol start pada Wokwi, lalu dilakukan pengujian dengan mengubah kondisi flame sensor dan float switch untuk melihat respons sistem terhadap setiap perubahan kondisi input.
  6. Hasil pengamatan menunjukkan bahwa saat flame sensor tidak mendeteksi api dan float switch tidak mendeteksi tangki penuh, pompa berhasil menyala melalui relay, sedangkan LED dan buzzer tetap mati. Hal ini menunjukkan bahwa sistem mampu bekerja secara otomatis sesuai dengan kondisi yang telah diprogram pada percobaan 4.

    a. Hardware


STM32 NUCLEO-G474RE


Flame Sensor


Buzzer



LED Red


Resistor 1k dan 220 ohm


Relay


Float Sensor
Breadboard

Diagram Blok

3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]


Prinsip kerja:

    Prinsip kerja rangkaian ini berpusat pada pembacaan dua sensor utama, yaitu flame sensor dan float switch, yang dikendalikan oleh mikrokontroler STM32 NUCLEO C031C6 sebagai pusat pengolah data. Flame sensor berfungsi untuk mendeteksi adanya api, sedangkan float switch digunakan untuk mengetahui kondisi tangki apakah sudah penuh atau belum. Kedua sensor ini akan terus dipantau oleh mikrokontroler melalui pin input yang telah dikonfigurasi.

    Pada kondisi normal atau aman, yaitu ketika flame sensor tidak mendeteksi adanya api dan float switch tidak mendeteksi tangki penuh, kedua sensor akan memberikan logika LOW atau GPIO_PIN_RESET ke mikrokontroler. Mikrokontroler kemudian memproses kondisi ini sebagai perintah untuk mengaktifkan relay sehingga pompa menyala dan mulai mengisi tangki. Pada saat yang sama, LED dan buzzer tetap dalam kondisi mati karena tidak ada kondisi bahaya maupun peringatan yang terdeteksi.

    Apabila salah satu kondisi berubah, misalnya flame sensor mendeteksi adanya api atau float switch mendeteksi bahwa tangki sudah penuh, maka mikrokontroler akan mematikan relay sehingga pompa berhenti bekerja. Jika kondisi tersebut disebabkan oleh flame sensor yang mendeteksi api, maka sistem akan mengaktifkan LED dan buzzer sebagai alarm bahaya untuk memberikan peringatan kepada pengguna. Namun, jika hanya float switch yang mendeteksi tangki penuh tanpa adanya api, maka pompa tetap dimatikan tetapi LED dan buzzer tidak aktif karena kondisi tersebut bukan merupakan keadaan darurat.

    Dengan demikian, prinsip kerja rangkaian ini adalah sistem kontrol otomatis berbasis pembacaan sensor, di mana pompa bekerja hanya pada kondisi aman, sedangkan LED dan buzzer berfungsi sebagai indikator peringatan saat terjadi kondisi berbahaya seperti adanya api. sebagai indikator sistem.

4. Flowchart dan Listing Program[Kembali]





Listing Program:
#include "main.h"                  // Memanggil file header utama (berisi definisi pin dan library HAL)

void SystemClock_Config(void);     // Deklarasi fungsi konfigurasi clock
static void MX_GPIO_Init(void);    // Deklarasi fungsi inisialisasi GPIO

int main(void)
{
  HAL_Init();                     // Inisialisasi sistem HAL (reset peripheral, setup Flash, SysTick)
  SystemClock_Config();           // Mengatur clock sistem (kecepatan MCU)
  MX_GPIO_Init();                 // Inisialisasi semua pin GPIO

  while (1)                       // Loop utama program (berjalan terus-menerus)
{
    // Membaca kondisi sensor
    GPIO_PinState flame = HAL_GPIO_ReadPin(FLAME_PORT, FLAME_PIN);   // Baca status Flame Sensor (PA0)
    GPIO_PinState level = HAL_GPIO_ReadPin(FLOAT_PORT, FLOAT_PIN);   // Baca status Float Sensor (PA1)

    // Kondisi aman: tidak ada api dan tangki belum penuh
    if (flame == GPIO_PIN_RESET && level == GPIO_PIN_RESET)
    {
        // Aktifkan pompa
        HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET);      // Relay ON → pompa hidup

        // Matikan indikator
        HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);        // LED OFF
        HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET);  // Buzzer OFF
    }
    else
    {
        // Kondisi tidak aman → pompa dimatikan
        HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET);    // Relay OFF → pompa mati

        // Cek apakah ada api
        if (flame == GPIO_PIN_SET)
        {
            // Aktifkan alarm jika terdeteksi api
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);      // LED ON sebagai indikator bahaya
            HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET);// Buzzer ON sebagai alarm
        }
        else
        {
            // Jika hanya tangki penuh, alarm tidak aktif
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);    // LED OFF
            HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET);// Buzzer OFF
        }
    }

    HAL_Delay(100);              // Delay 100 ms untuk mengurangi pembacaan terlalu cepat (debounce sederhana)
}
}

static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};   // Struktur untuk konfigurasi GPIO
 
  __HAL_RCC_GPIOA_CLK_ENABLE();            // Mengaktifkan clock untuk port GPIOA
 
  /* INPUT */
  GPIO_InitStruct.Pin = FLAME_PIN | FLOAT_PIN; // Pilih pin PA0 dan PA1 sebagai input
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;      // Mode input (membaca sinyal)
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;        // Menggunakan pull-down resistor internal (default LOW)
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);      // Terapkan konfigurasi ke GPIOA
 
  /* OUTPUT */
  GPIO_InitStruct.Pin = LED_PIN | BUZZER_PIN | RELAY_PIN; // Pilih pin PA5, PA6, PA7 sebagai output
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;             // Mode output push-pull (bisa HIGH/LOW aktif)
  GPIO_InitStruct.Pull = GPIO_NOPULL;                     // Tanpa resistor pull-up/pull-down
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;            // Kecepatan switching rendah (cukup untuk LED, relay, buzzer)
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);                 // Terapkan konfigurasi ke GPIOA
 
  /* Relay default ON */
  HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); // Saat awal sistem, relay langsung ON (pompa hidup)
}
 
void SystemClock_Config(void)
{
  /* Clock default CubeIDE */     // Menggunakan konfigurasi clock default dari STM32CubeIDE
}
 
void Error_Handler(void)
{
  while (1) {}                   // Jika terjadi error, program berhenti di loop tak hingga
}

5. Video Demo[Kembali]


6. Kondisi[Kembali]

Percobaan 4 Kondisi 6

Buatlah rangkaian seperti pada gambar percobaan 4 dengan kondisi ketika flame sensor tidak mendeteksi api dan float switch tidak mendeteksi tangki penuh, maka pompa menyala dan LED serta buzzer dalam kondisi mati.

7. Video Simulasi[Kembali]


8. Download File[Kembali]

Tidak ada komentar:

Posting Komentar

BAHAN PRESENTASI UNTUK ELEKTRONIKA 2024 Oleh : IBNU KHAIRUDDIN NIM. 2310952018   Dosen Pengampu : Dr. Darwison, S. T., M. T. NIDN. 001409640...