TP 1 MODUL 2 MIKRO



1. Prosedur [kembali]

  1. Buka software proteus lalu rangkai komponen sesuai dengan gambar yang ada di modul
  2. Buka software STM32CubeIDE lalu lakukan konfigurasi pin pada STM untuk menentukan GPIO input dan GPIO output
  3. Masukan Program ke dalam software STM32CubeIDE lalu build untuk mendapatkan file .hex
  4. Masukan file .hex ke dalam file library STM32F103C8 pada proteus
  5. Simulasikan rangkaian

2. Hardware dan Diagram Blok [kembali]

Hardware

  • 1. STM32F103C8





    2. Push Button



    3. Heart Beat Sensor


    4. LED



    5. Buzzer



    6. Resistor 

3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


Prinsip Kerja:

Rangkaian pada percobaan ini bekerja sebagai sistem monitoring detak jantung yang memanfaatkan sensor heartbeat, mikrokontroler STM32F103C8, serta output berupa LED dan buzzer. Sensor heartbeat berfungsi untuk mendeteksi denyut jantung dan menghasilkan sinyal analog yang berubah-ubah sesuai dengan aliran darah. Sinyal analog tersebut kemudian dikirim ke mikrokontroler dan dikonversi menjadi data digital menggunakan modul ADC. Setelah itu, mikrokontroler memproses sinyal tersebut untuk mendeteksi setiap detakan jantung dan menghitung nilai BPM (Beats Per Minute) berdasarkan selang waktu antar detak.

Nilai BPM yang diperoleh selanjutnya dibandingkan dengan batas yang telah ditentukan, yaitu 60 BPM. Apabila nilai BPM kurang dari 60, maka mikrokontroler akan mengaktifkan LED sebagai indikator visual dan buzzer sebagai indikator suara. Sebaliknya, jika nilai BPM berada pada kondisi normal atau tidak terdeteksi, maka LED dan buzzer akan berada dalam keadaan mati. Dengan demikian, rangkaian ini mampu memberikan informasi kondisi detak jantung secara sederhana melalui indikator yang mudah dipahami.

4. Flowchart dan Listing Program [kembali]

 
Flowchart

Listing Program:

#include "main.h" /* VARIABLES */ ADC_HandleTypeDef hadc1; uint32_t lastBeatTime = 0; uint32_t BPM = 0; uint8_t beatDetected = 0; uint32_t adcValue = 0; uint32_t threshold = 2000; /* FUNCTION */ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_ADC1_Init(void); /* ================= MAIN ================= */ int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC1_Init(); while (1) { /* BACA ADC PA0 */ HAL_ADC_Start(&hadc1); if(HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK) { adcValue = HAL_ADC_GetValue(&hadc1); } HAL_ADC_Stop(&hadc1); /* DETEKSI DETAK: ADC melewati threshold */ if(adcValue > threshold && beatDetected == 0) { uint32_t now = HAL_GetTick(); if(lastBeatTime != 0) { uint32_t interval = now - lastBeatTime; /* FILTER VALID */ if(interval > 400 && interval < 2000) { BPM = 60000 / interval; } } lastBeatTime = now; beatDetected = 1; } /* RESET DETEKSI SAAT SINYAL TURUN */ if(adcValue < threshold) { beatDetected = 0; } /* TIMEOUT: jika tidak ada detak */ if(HAL_GetTick() - lastBeatTime > 3000) { BPM = 0; } /* KONDISI: BPM < 60 */ if(BPM > 0 && BPM < 60) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET); // LED HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET); // BUZZER } else { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET); } HAL_Delay(5); } } /* ================= 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_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); } } /* ================= ADC1 ================= */ static void MX_ADC1_Init(void) { ADC_ChannelConfTypeDef sConfig = {0}; hadc1.Instance = ADC1; hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 1; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); } sConfig.Channel = ADC_CHANNEL_0; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != 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(); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10 | GPIO_PIN_11, GPIO_PIN_RESET); /* PA0 = ADC INPUT */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* PB10 = LED, PB11 = BUZZER */ GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } /* ================= MSP ADC ================= */ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) { if(adcHandle->Instance == ADC1) { __HAL_RCC_ADC1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); } } /* ================= ERROR ================= */ void Error_Handler(void) { __disable_irq(); while (1) { } }

5. Video Demo [kembali]


6. Kondisi [kembali]

    Percobaan 1 Kondisi 10

Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi Sensor Heartbeat membaca BPM < 60 , maka LED menyala merah dan Buzzer berbunyi

7. Video Simulasi [kembali]

Percobaan 1 Kondisi 10

8. Download File [kembali]
  • Download File Rangkaian Proteus disini
  • Link Video Simulasi disini
  • Download Datasheet Heartbeat Sensor disini
  • Download Datasheet STM32F103C8 disini
  • Download Datasheet LED disini

Komentar

Postingan populer dari blog ini

2.12 Voltage-Multiplier Circuits

Tugas Besar - Pengamanan ATM

Modul 1- Potensiometer & Tahanan Geser dan Jembatan Wheatstone