TP 2 MIKRO M2




PERCOBAAN 8 KONDISI 3

1. Prosedur[Kembali]

  • Membuat rangkaian di proteus sesuai dengan percobaan 8 kondisi 2.
  • Buat program untuk STM32 di software STM32 CUBE ID.
  • Setelah program selesai di buat, inputkan kode tersebut kedalam STM32 pada proteus.
  • Untuk simulasi, ketika touch sensor mendeteksi sentuhan maka motor dc akan bergerak.
  • Ketika nilai potensiometer diberi nilai besar maka motor stepper bergerak berlawanan jarum jam
  • Ketika nilai potensiometer diberi nilai kecil maka motor stepper bergerak secara bolak balik
  • Selesai.

2. Hardware dan Diagram Blok[Kembali]

A. Hardware 
1. STM32 CUBE ID




2. ULN2003A


3. Touch Sensor



4.  Motor DC

5. Motor Stepper
6. Potensiometer


B. Blok Diagram


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi: 





a. rangkaian saat Touch sensor diberi logika 0



b. rangkaian setelah Touch Sensor diberi logika 1


Prinsip Kerja:

Rangkaian ini merupakan sistem kendali berbasis mikrokontroler STM32F103C8T6 yang mengatur kerja motor DC dan motor stepper menggunakan input dari sensor sentuh dan potensiometer. Ketika touch sensor mendeteksi sentuhan, mikrokontroler mengaktifkan motor DC melalui salah satu pin output-nya. Sebaliknya, jika tidak disentuh, motor DC dimatikan dan mikrokontroler membaca nilai ADC dari potensiometer. Jika nilai potensiometer tinggi, maka motor stepper dijalankan searah jarum jam (clockwise/CW), dan jika rendah, motor stepper dijalankan dengan mode osilasi (bolak-balik CW dan CCW). Motor stepper dikendalikan melalui driver ULN2003A yang berfungsi sebagai penguat arus untuk memberi cukup daya ke motor dari sinyal logika STM32.

4. Flowchart dan Listing Program[Kembali] 


Flowchart:










Listing Program:

#include "stm32f1xx_hal_adc.h"


// Konfigurasi pin motor stepper dan motor DC

#define STEPPER_PORT GPIOB

#define IN1_PIN GPIO_PIN_8

#define IN2_PIN GPIO_PIN_9

#define IN3_PIN GPIO_PIN_10

#define IN4_PIN GPIO_PIN_11


#define TOUCH_SENSOR_PORT GPIOB

#define TOUCH_SENSOR_PIN GPIO_PIN_0


#define MOTOR_DC_PORT GPIOB

#define MOTOR_DC_PIN GPIO_PIN_7


// Langkah stepper searah jarum jam (CW)

const uint8_t STEP_SEQ_CW[4] = {

(1 << 0), // IN1

(1 << 1), // IN2

(1 << 2), // IN3

(1 << 3) // IN4

};


// Langkah stepper berlawanan arah jarum jam (CCW)

const uint8_t STEP_SEQ_CCW[4] = {

(1 << 3), // IN4

(1 << 2), // IN3

(1 << 1), // IN2

(1 << 0) // IN1

};


ADC_HandleTypeDef hadc1;

uint8_t oscillate_dir = 0;


void SystemClock_Config(void);

void MX_GPIO_Init(void);

void MX_ADC1_Init(void);

void RunStepper(const uint8_t *sequence, uint8_t speed);

void Error_Handler(void);


int main(void) {

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

MX_ADC1_Init();


while (1) {

GPIO_PinState touch = HAL_GPIO_ReadPin(TOUCH_SENSOR_PORT, TOUCH_SENSOR_PIN);


if (touch == GPIO_PIN_SET) {

HAL_GPIO_WritePin(MOTOR_DC_PORT, MOTOR_DC_PIN, GPIO_PIN_SET); // DC ON

HAL_GPIO_WritePin(STEPPER_PORT, IN1_PIN | IN2_PIN | IN3_PIN | IN4_PIN, GPIO_PIN_RESET); // Stepper OFF

} else {

HAL_GPIO_WritePin(MOTOR_DC_PORT, MOTOR_DC_PIN, GPIO_PIN_RESET); // DC OFF


HAL_ADC_Start(&hadc1);

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

uint16_t adc_val = HAL_ADC_GetValue(&hadc1);


if (adc_val > 2048) {

// Hanya bergerak searah jarum jam

RunStepper(STEP_SEQ_CW, 5);

} else {

// Bergerak osilasi (CW lalu CCW bergantian)

if (oscillate_dir == 0) {

RunStepper(STEP_SEQ_CW, 5);

oscillate_dir = 1;

} else {

RunStepper(STEP_SEQ_CCW, 5);

oscillate_dir = 0;

}

}

}

}


HAL_Delay(1);

}

}



5. Kondisi[Kembali]

Buatlah rangkaian seperti gambar pada percobaan 8. Jika touch sensor mendeteksi maka motor dc berputar. Jika potensiometer bernilai besar maka motor stepper bergerak searah jarum jam dan jika bernilai rendah maka motor stepper bergerak dengan Oscillate Mode 

6. Video Simulasi[Kembali]




7. Download File[Kembali]

Rangkaian Simulasi [Download]
Video Simulasi [Download]
Datasheet Resistor [Download]
Datasheet LED [Download]
Datasheet STM32F1038 [download]




Komentar

Postingan populer dari blog ini