Percobaan 1 Kondisi 4



TUGAS PENDAHULUAN 

PERCOBAAN 1 KONDISI 4

 1. Prosedur [kembali]

  1. Pahami terlebih dahulu kondisi yang akan digunakan
  2. Buka software Proteus 8.17
  3. Persiapkan alat dan bahan
  4. Buat rangkaian sesuai dengan kondisi dan modul
  5. Buka software STM32Cube IDE 
  6. Setelah membuka software, pilih perangkat STM32F103C8T6 
  7. Sesuaikan konfigurasi pin sesuai dengan rangkaian proteus 
  8. Buat kode program untuk mengoperasikan rangkaian tersebut sesuai dengan kondisi 
  9. Konfigurasi kan program dengan software Proteus
  10. Jalankan simulasi rangkaian.  
  11. Proses selesai

 2. Hardware[kembali]

  1. STM32G474RE
STM32G474RE berfungsi sebagai unit pemroses utama yang menjembatani algoritma pemrograman dengan komponen fisik, di mana ia bertugas mengolah input dari sensor melalui ADC, mengeksekusi logika kontrol matematika secara cepat, dan menghasilkan output presisi seperti sinyal PWM untuk menggerakkan perangkat eksternal. Dalam konteks praktikum, mikrokontroler ini berperan sebagai platform untuk menguji interaksi antarmuka perangkat keras, manajemen memori, dan pengaturan waktu (timing) sistem agar semua instruksi berjalan secara sinkron dan real-time.

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. STM32F103C8


TM32F103C8 adalah mikrokontroler berbasis ARM Cortex-M3 yang dikembangkan oleh STMicroelectronics. Mikrokontroler ini sering digunakan dalam pengembangan sistem tertanam karena kinerjanya yang baik, konsumsi daya yang rendah, dan kompatibilitas dengan berbagai protokol komunikasi. Pada praktikum ini, kita menggunakan STM32F103C8 yang dapat diprogram menggunakan berbagai metode, termasuk komunikasi serial (USART), SWD (Serial Wire Debug), atau JTAG untuk berhubungan dengan komputer maupun perangkat lain.

Microcontroller

ARM Cortex-M3

Operating Voltage

3.3 V

Input Voltage (recommended)

V

Input Voltage (limit)

2  3.6 V

Digital I/O Pins

32

PWM Digital I/O Pins

15

Analog Input Pins

10 (dengan resolusi 12-bit ADC)

DC Current per I/O Pin

25 mA

DC Current for 3.3V Pin

150 mA

Flash Memory

64 KB

SRAM

20 KB

EEPROM

Emulasi dalam Flash

Clock Speed

72 MHz


    3. Touch Sensor
Touch sensor adalah sensor yang dapat mendeteksi sentuhan atau kontak dari jari manusia (atau objek lain) dan kemudian mengubahnya menjadi sinyal listrik.

    SPESIFIKASI :

  • Konsumsi daya yang rendah
  • Bisa menerima tegangan dari 2 ~ 5.5V DC
  • Dapat menggantikan fungsi saklar tradisional
  • Dilengkapi 4 lobang baut untuk memudahkan pemasangan
  • Tegangan kerja : 2v s/d 5.5v (optimal 3V)
  • Output high VOH : 0.8 VCC (typical)
  • Output low VOL : 0.3 VCC (max)
  • Arus Output Pin Sink (@ VCC 3V, VOL 0.6V) : 8 mA
  • Arus Output pin pull-up (@ VCC=3V, VOH=2.4V) : 4 mA
  • Waktu respon (low power mode): max 220 ms
  • Waktu respon (touch mode): max 60 ms
  • Ukuran: 24 mm x 24 mm x 7.2 mm

    4. PIR Sensor

PIR sensor (Passive Infrared Sensor) adalah sensor yang digunakan untuk mendeteksi pergerakan manusia atau makhluk hidup berdasarkan perubahan radiasi inframerah di sekitarnya.

    5. 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.

    6. 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.

    7. 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.

8. Diagram Blok

 3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


Prinspi Kerja: 
Prinsip kerja rangkaian ini adalah sistem otomasi lampu lorong berbasis deteksi gerakan yang memanfaatkan sensor PIR sebagai pemicu utama dan logika re-triggerable timer untuk efisiensi energi. Ketika sensor PIR mendeteksi gerakan (logika HIGH), mikrokontroler STM32 akan segera menyalakan LED dan membunyikan buzzer secara singkat selama 100ms, sekaligus mencatat waktu kejadian . Selama gerakan terus terdeteksi berulang kali sebelum durasi 5 detik (delay_time) berakhir, mikrokontroler akan terus memperbarui catatan waktu pemicuan terakhir sehingga LED tetap menyala tanpa terputus. Sebaliknya, jika tidak ada gerakan tambahan yang terdeteksi hingga selisih waktu saat ini dengan waktu pemicuan terakhir mencapai atau melebihi 5 detik, mikrokontroler secara otomatis mematikan LED untuk menghemat daya.

 4. Flowchart dan Listing Program [kembali]
Flowchart:

Listing Program:
#include "stm32f1xx_hal.h"

/* ================== VARIABEL ================== */
uint8_t pir_last = 0;
uint8_t pir_first_trigger = 1;

uint32_t last_trigger_time = 0;
uint32_t delay_time = 5000; // 5 detik

/* ================== PROTOTYPE ================== */
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
void Error_Handler(void);

/* ================== MAIN ================== */
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();

while (1)
{
uint8_t pir_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);

/* ===== DETEKSI RISING EDGE (LOW -> HIGH) ===== */
if (pir_now == GPIO_PIN_SET && pir_last == GPIO_PIN_RESET)
{
// Nyalakan LED
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

// Simpan waktu trigger
last_trigger_time = HAL_GetTick();

// Buzzer hanya sekali saat trigger awal
if (pir_first_trigger)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

pir_first_trigger = 0;
}
}

/* ===== KONTROL MATI BERDASARKAN TIMER ===== */
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_SET)
{
if ((HAL_GetTick() - last_trigger_time) >= delay_time)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

// Reset agar buzzer bisa bunyi lagi
pir_first_trigger = 1;
}
}

/* Simpan kondisi sebelumnya */
pir_last = pir_now;
}
}

/* ================== CLOCK ================== */
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
Error_Handler();

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |
RCC_CLOCKTYPE_SYSCLK |
RCC_CLOCKTYPE_PCLK1;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
Error_Handler();
}

/* ================== GPIO ================== */
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();

/* PA0 = PIR */
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/* PB0 = LED, PB1 = BUZZER */
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

/* Default OFF */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);
}

/* ================== ERROR ================== */
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}

 5. Video Demo [kembali]

 6. Kondisi [kembali]

Percobaan 1 Kontrol Lampu Lorong

Kondisi 4 : Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi PIR mendeteksi gerakan berulang sebelum waktu tunda habis dan sensor Touch tidak disentuh, maka LED tetap menyala

7. Video Simulasi [kembali]

8. Link Download [kembali]

Komentar

Postingan populer dari blog ini

ELEKTRONIKA