TUGAS PENDAHULUAN 1 : PERCOBAAN 2 KONDISI 3



 

1.)     Prosedur [kembali]

  1. Siapkan komponen-komponen yang akan dirangkai sesuai percobaan
  2. Rangkai komponen pada software proteus
  3. Buka aplikasi STM32 pada laptop
  4. Masukkan Listing program
  5. Compile program ke dalam format HEX lalu
  6. Upload Listing program pada rangkaian
  7. Rangkaian sudah dapat dijalankan

2.)     Hardware dan Diagram Blok [kembali]

 A. Hardware

 1. STM32F103C8


Seri STM32F103 adalah keluarga mikrokontroler yang berbasis pada inti ARM Cortex-M3 . Mikrokontroler ini dirancang untuk kinerja tinggi dan konsumsi daya rendah, sehingga cocok untuk berbagai aplikasi.

2.  Resistor


Resistor atau penghambat merupakan komponen elektronik yang memiliki dua pin dan dirancang untuk mengatur tegangan listrik dan arus listrik. Resistor mempunyai nilai resistansi (tahanan) tertentu yang dapat memproduksi tegangan listrik di antara kedua pin di mana nilai tegangan terhadap resistansi tersebut berbanding lurus dengan arus yang mengalir, berdasarkan persamaan hukum Ohm:

V=I*R


3. Motor Stepper



Pada dasarnya, cara kerja  motor stepper berbeda beda, tergantung pada konstruksi rotor dan stator serta sistem lilitan pada statornya. Namun setiap stepper digerakkan oleh pulsa digital yang diubah setiap waktu. 

Kecepatan sinyal pulsa digital atau lebih tepatnya frekuensi sinyal mempengaruhi kecepatannya. Semakin cepat frekuensi sinyal, maka semakin cepat pula RPM pada stepper. 

Sinyal digital ini dapat pula digunakan untuk menentukan posisi pada motor stepper. Misalnya saja, stepper dengan sudut step 1.8° maka untuk satu putaran penuh diperlukan 200 step, sehingga untuk setengah putaran stepper memerlukan 100 step dan untuk satu setengah putaran diperlukan 300 step. Hal inilah yang mejadikan stepper banyak dipakai pada mesin printer 3D dan CNC Engraving. 

4. RGB LED

                                        

LED RGB atau “Light Emitting Diode Red Green Blue” adalah jenis LED yang mampu memancarkan cahaya dalam tiga warna dasar, yaitu merah (Red), hijau (Green), dan biru (Blue). LED RGB 4 Pin adalah LED RGB yang memiliki anoda dan katoda seperti LED biasa, hanya saja terdapat 3 anoda pada LED ini mewakili warna red, green, dan blue.

5. Soil Moisture Sensor



Pada Soil Moisture Sensor, terdapat beberapa pin yang harus diperhatikan sebelum memulai proyek. Berikut penjelasan singkat mengenai macam pin yang ada soil moisture sensor:

a.VCC

Pin VCC merupakan  singkatan dari voltage at the common collector atau voltage at the collector of the common colllector. Dapat diartikan sebagai penginput daya atau tegangan ke suatu perangkat elektronik. Pin VCC ini biasanya akan dihubungkan pada 5V atau 3.3V. V disini diartikan sebagai Volt. Pin VCC merupakan pin bermuatan positif (+).

b.GND

Pin GND ini adalah pin dengan muatan negatif.(-). GND merupaan kepanjangn dari Ground. Pin ini digunakan sebagai tempat untuk catu daya. Pin GND pada soil moisture sensor dapat dikoneksikan dengan Pin GND pada mikrokotroler yang sama-sama bermuatan negatif.

c.A0

Pin ini disebut juga sebagai Keluaran Analog. Fungsinya untuk memberikan input atau masukkan berupa sinya analog.

d.D0

Pin ini disebut juga sebagai Keluaran Digital. Fungsinya adalah untuk memberikan output atau keluaran dari sinyal yang memiliki nilai biner. Nilai biner merupakan nilai yang hanya terdiri dari dua komponen saja yakni 0 dan 1. Nilai 0 biasanya untuk menandai off atau low, sedangkan nilai 1 untuk menandai on atau high.



6. Power Supply



Power supply adalah sebuah perangkat yang berisi rangkaian elektronika yang dapat digunakan untuk mengalirkan daya listrik ke rangkaian ataupun perangkat listrik dan elektronika lainnya. Dengan menggunakan sebuah power supply, perangkat listrik dan elektronik dapat beroperasi secara maksimal karena pasokan daya listrik yang dialirkan oleh power supply stabil sehingga dengan menggunakan power supply juga dapat mengurangi tingkat resiko kerusakan perangkat akibat perubahan tegangan listrik yang ekstrem.

7. ADC ULN2003A


ULN2003A adalah rangkaian terintegrasi (IC) yang berfungsi sebagai driver untuk beban induktif atau perangkat berdaya tinggi, seperti relay, motor DC, solenoid, atau lampu, yang memerlukan arus lebih besar daripada yang dapat disediakan langsung oleh mikrokontroler atau sinyal logika digital. IC ini terdiri dari tujuh pasangan transistor Darlington dalam satu paket, di mana setiap saluran mampu menangani arus hingga 500 mA dan tegangan hingga 50 V. Fungsi utamanya adalah memperkuat sinyal kontrol berdaya rendah (misalnya dari Arduino, Raspberry Pi, atau mikrokontroler lainnya) menjadi sinyal berdaya tinggi yang mampu mengaktifkan atau menonaktifkan beban eksternal. Selain itu, ULN2003A dilengkapi dengan dioda supresi terintegrasi pada setiap saluran untuk menetralkan gaya gerak listrik (back EMF) yang dihasilkan oleh beban induktif, sehingga melindungi rangkaian dari kerusakan akibat lonjakan tegangan. Desainnya yang kompak, efisiensi tinggi, dan kompatibilitas dengan level logika TTL/CMOS membuatnya banyak digunakan dalam aplikasi otomasi, robotika, sistem kontrol industri, dan proyek elektronik praktis lainnya.


B. Diagram Blok



3.)     Rangkaian Simulasi dan Prinsip Kerja [kembali]



Gambar rangkaian percobaan 2 kondisi 3

Prinsip Kerja:

Prinsip kerja rangkaian ini didasarkan pada input dari soil moisture sensor (sensor kelembapan tanah) yang mengukur tingkat kelembapan tanah dan menghasilkan sinyal analog atau digital sesuai kondisi tanah. Sinyal ini kemudian diproses oleh sebuah pengontrol (mikrokontroler atau sirkuit logika) yang telah dikalibrasi menggunakan resistor variabel (RV1 hingga RV506) untuk menetapkan ambang batas kondisi tanah, seperti basah, normal, atau kering. 


Ketika sensor mendeteksi tanah dalam kondisi basah (resistansi rendah), pengontrol akan mengaktifkan LED RGB untuk menampilkan warna biru dengan mengatur kombinasi tegangan pada pin merah, hijau, dan biru. Pada kondisi kering (resistansi tinggi), LED RGB akan beralih ke warna merah, sedangkan kondisi normal (resistansi sedang) akan menyalakan warna hijau. Selain itu, pengontrol juga mengatur output lain berupa motor stepper. Misalnya, saat tanah kering, motor stepper dapat diaktifkan untuk menggerakkan sistem irigasi atau pompa air, sementara pada kondisi basah atau normal, motor dapat dimatikan atau diatur kecepatannya sesuai kebutuhan. 


Sumber daya rangkaian disuplai oleh +3V, dan resistor variabel (RV) berperan dalam menyesuaikan sensitivitas sensor atau karakteristik respons rangkaian. Set Window Server merujuk pada antarmuka perangkat lunak untuk memantau atau mengkonfigurasi parameter operasional rangkaian. Dengan demikian, rangkaian ini bekerja secara otomatis berdasarkan data sensor, memberikan umpan balik visual melalui LED RGB, dan mengontrol tindakan fisik melalui motor stepper.

4.)     Flowchart dan Listing Program [kembali]

 Flowchart:




Listing Program:

/* USER CODE BEGIN Header */

/**

******************************************************************************

* @file : main.c

* @brief : Main program body

******************************************************************************

* @attention

*

* Copyright (c) 2025 STMicroelectronics.

* All rights reserved.

*

* This software is licensed under terms that can be found in the LICENSE file

* in the root directory of this software component.

* If no LICENSE file comes with this software, it is provided AS-IS.

*

******************************************************************************

*/

/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/

#include "main.h"


#include "main.h"




#include "main.h"




#define LED_PORT GPIOB


#define Red GPIO_PIN_12


#define Green GPIO_PIN_13


#define Blue GPIO_PIN_14




ADC_HandleTypeDef hadc1;




void SystemClock_Config(void);


static void MX_GPIO_Init(void);


static void MX_ADC1_Init(void);


void Error_Handler(void);




int main(void)


{


HAL_Init();


SystemClock_Config();


MX_GPIO_Init();


MX_ADC1_Init();




while (1)


{


HAL_ADC_Start(&hadc1);


if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK)


{


uint16_t adc_val = HAL_ADC_GetValue(&hadc1);




if (adc_val > 2500) // Tanah basah


{


HAL_GPIO_WritePin(LED_PORT, Blue, GPIO_PIN_SET); // Nyalakan hijau


HAL_GPIO_WritePin(LED_PORT, Green | Red, GPIO_PIN_RESET); // Matikan merah dan biru


}


else


{


// Tanah kering


HAL_GPIO_WritePin(LED_PORT, Red | Green | Blue, GPIO_PIN_RESET); // Matikan semua


}


}


HAL_Delay(200);


}


}




void SystemClock_Config(void)


{


RCC_OscInitTypeDef RCC_OscInitStruct = {0};


RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


RCC_PeriphCLKInitTypeDef PeriphClkInit = {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();


}




PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;


PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2;


if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)


{


Error_Handler();


}


}




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_1CYCLE_5;


if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != 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, Red | Green | Blue, GPIO_PIN_RESET);




GPIO_InitStruct.Pin = Red | Green | Blue;


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 /* USE_FULL_ASSERT */

5.)     Kondisi [kembali]

 => Buatlah rangkaian seperti gambar pada percobaan 2, buatlah ketika soil moisture sensor mendeteksi kelembapan tanah basah, LED RGB menampilkan warna Biru

6.)     Video Simulasi [kembali]

 






7.)     Download File [kembali]

Rangkaian [disini]
Listing Program [disini]
Datasheet STM32F103C8T6 [disini]
Datasheet Motor Stepper [disini]
Datasheet LED RGB [disini]
Datasheet ULN2003A [disini]
Datasheet Soil Moisture Sensor [disini]
Video Simulasi [disini]








Komentar

Postingan populer dari blog ini