Tugas Pendahuluan 2

                                              [KEMBALI KE MENU SEBELUMNYA]



Tugas Pendahuluan 1 Modul 1
Percobaan 3 Kondisi 7

1. Prosedur
 [Kembali]

  • Rangkai semua komponen 
  • Buat rangkaian di proteus 
  • Jalankan rangkaian dan cobakan sesuai kondisi


2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. STM32F103C8





2. LED

3. Resistor



4. Push Button

5. Buzzer



6. Touch Sensor


7. Infrared Sensor




BLOK DIAGRAM






3. Rangkaian Simulasi Dan Prinsip Kerja [Kembali]


Rangkaian Simulasi 





Prinsip Kerja :

Pada rangkaian percobaan 3, sistem menggunakan sensor Infrared (IR) dan Touch sensor sebagai input yang dikendalikan oleh mikrokontroler STM32, serta LED dan buzzer sebagai output indikator. Ketika rangkaian diberikan tegangan sumber (VCC), mikrokontroler akan melakukan proses inisialisasi dan kemudian membaca kondisi kedua sensor secara terus-menerus dalam program utama.

Pada kondisi yang ditentukan, yaitu ketika sensor Infrared mendeteksi benda dan Touch sensor tidak mendeteksi sentuhan, sensor Infrared akan menghasilkan sinyal logika HIGH (1) karena adanya pantulan sinar inframerah dari benda yang berada di depannya. Sementara itu, Touch sensor yang tidak disentuh akan menghasilkan sinyal logika LOW (0). Mikrokontroler kemudian memproses kedua sinyal input tersebut sesuai dengan logika program yang telah ditentukan.

Berdasarkan kondisi tersebut, mikrokontroler akan memberikan perintah pada perangkat output sehingga LED menyala terus sebagai indikator bahwa benda telah terdeteksi oleh sensor Infrared, sedangkan buzzer tetap dalam kondisi mati karena tidak ada sentuhan yang terdeteksi oleh Touch sensor. Proses ini akan berlangsung secara berulang (loop) selama sistem masih mendapatkan catu daya, sehingga LED akan tetap menyala selama sensor Infrared masih mendeteksi benda dan Touch sensor tetap tidak disentuh


4. Flowchart dan Listing Program [Kembali]

Flowchart :




Listing Program :

#include "main.h"

 

uint8_t system_enable = 1; uint8_t touch_last = 0;

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

int main(void)

{

HAL_Init(); SystemClock_Config(); MX_GPIO_Init();

while (1)

{

uint8_t touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);

if (touch_now == GPIO_PIN_SET && touch_last == GPIO_PIN_RESET)

{

system_enable = !system_enable; HAL_Delay(200);

}

touch_last = touch_now;

if (system_enable)

{

if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET)

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);

}

else

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

}

}

else

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

}

}

}

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();

}

}

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

  HAL_RCC_GPIOD_CLK_ENABLE();

  HAL_RCC_GPIOA_CLK_ENABLE();

  HAL_RCC_GPIOB_CLK_ENABLE();

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

void Error_Handler(void)

{

 disable_irq(); while (1)

{

}

}

#ifdef USE_FULL_ASSERT

void assert_failed(uint8_t *file, uint32_t line)

{

}

#endif


5. Kondisi [Kembali]

Buatlah rangkaian seperti pada gambar percobaan 3 dengan kondisi ketika Infrared sensor mendeteksi benda dan Touch sensor tidak mendeteksi sentuhan, maka LED menyala terus namun Buzzer tetap mati


6. Video Simulasi [Kembali]


7. Link Download [Kembali]











 

Tidak ada komentar:

Posting Komentar

                                            BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA 2024   Nama : Muhammad Fadhil Dwi Kesuma NIM : 2...