TP M1 P4K2 (Prak Mikro)
Percobaan 4 kondisi 2
1. Buat rangkaian sesuai dengan kondisi percobaan
2. Buat program
4. Jalankan simulasinya
2. Buat program
4. Jalankan simulasinya
5. Selesai.
2. Hardware dan Diagram Blok[Kembali]
Hardware :
- STM32 NUCLEO-G474RE
- Float Sensor
- Flame Sensor
- Relay
- Buzzer
- LED
3. Rangkaian Simulasi[Kembali]
- Rangkaian sebelum di running
Alur kerja rangkaian ini dimulai dari flame sensor yang mendeteksi adanya api. Ketika api terdeteksi, sensor mengirimkan sinyal ke STM32 sebagai tanda kondisi bahaya. Pada saat yang sama, pompa dalam keadaan mati dan tidak ada perintah untuk menyalakannya.
STM32 kemudian membaca sinyal dari flame sensor dan memprosesnya sesuai program. Karena terdeteksi api, STM32 langsung mengaktifkan output ke LED merah dan buzzer.
Akibatnya, LED merah menyala sebagai tanda peringatan, dan buzzer berbunyi sebagai alarm. Sementara itu, pompa tetap mati karena tidak ada perintah untuk menghidupkannya.
4. Flowchart dan Listing Program[Kembali]
- Flowchart
- Listing Program
#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) {}
}
Percobaan 4 Kondisi 2
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.












Komentar
Posting Komentar