Professional Documents
Culture Documents
Laporan 3
Laporan 3
Untuk mengurangi arus awal yang sangat besar pada motor tiga phasa maka diperlukan
sistem kendali motor tiga phasa menggunakan tiga buah MC untuk starting star-delta, gambar
1 ditunjukkan perangkat yang telah tersedia serta wiring diagram, dan untuk memudahkan
alur kendali diberikan timing diagram seperti ditunjukkan pada gambar 2. Digunakan keypad
untuk mengendalikan sinyal (SG) ke magnetic contactor, serta LCD untk menampilkan status
dari motor saat itu.
Untuk membangun sistem sesuai yang dikehendaki maka perlu penambahan signal
conditioning SC pada masing-masing perangkat input dan output serta komponen
relay untuk menegndalikan MC. Seperti pada gambar 2.
Gambar 2 Blok diagram fungsi
G. User Requirement
Awal mula menghidupkan LCD akan muncul tulisan yang memerintahkan
untuk menekan [A] untuk melanjutkan ke menu.
Setelah menekan [A] maka akan ditampilkan dua opsi yaitu [1]START dan
[2]STOP. Untuk menjalankan motor 3 phase tekan tombol 1 pada keypad.
Status yang muncul pada layar LCD adalah “PROSES”. Tunggulah waktu
minimal 5 detik untuk menunggu perpindahan dari bentuk delta ke star.
Tombol 2 pada keypad berfungsi untuk menghentikan jalannya motor.
Jika terjadi kesalahan yang meliputi OH (Over Heat), OC (Over Current) dan
OS (Over Speed) motor akan berhenti dan kesalahan yang dimaksud akan
ditampilkan di layar LCD
H. Tabel Hasil Output
No. Nama Perangkat Label Alamat Keterangan
Port
1. LCD LCD PD0-PD7 Berlogic 1 jika ditekan dan
berlogic 0 jika dilepas
2. Keypad KEYPAD PE8- Berlogic 1 jika dilepas dan
PE15 berlogic 0 jika ditekan
3. MC 1 K1 PE0 Logic 1 lampu akan
menyala dan sebaliknya
4. MC2 K2 PE1 Logic 1 lampu akan
menyala dan sebaliknya
5. MC3 K3 PE2 Logic 1 lampu akan
menyala dan sebaliknya
6. BUZZER BUZZER PB3 Logic 1 lampu akan
menyala dan sebaliknya
7. Sensor Over OH PC7 Logic 1 buzzer akan
Heat menyala dan sebaliknya
8. Sensor Over OC PC8 Logic 1 lampu akan
Current menyala dan sebaliknya
9. Sensor Over OS PC9 Logic 1 lampu akan
Speed menyala dan sebaliknya
Time Chart
A B
I. Flowchart
If(W==2)
START
Delay 0,1s
If(PB1==1)
W==’ ’
LCD Tertulis
[1]run[2]stop
STATUS: OS
If(W==A) K1=0;k2=0;k3=0
LCD Tertulis
If(PB2==1)
[1]run[2]stop
STATUS:
LCD Tertulis
[1]run[2]stop
If(W==1)
STATUS: OH
K1=0;k2=0;k3=0
LCD Tertulis
[1]run[2]stop
STATUS: Proses If(PB3==1)
K1=1;k2=1;k3=0
A B
J. Program Source Code
/**
******************************************************************************
* @file : main.c
******************************************************************************
* that are not between comment pairs USER CODE BEGIN and
* Redistribution and use in source and binary forms, with or without modification,
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f4xx_hal.h"
#include "lcd_character.h"
#include "keypad_4x4.h"
#include "stdio.h"
#include "stdlib.h"
void SystemClock_Config(void);
/**
* @retval None
*/
int main(void)
char w;
int PB1,PB2,PB3;
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
lcd_init();
keypad_init();
/* Infinite loop */
while (1)
{
lcd_gotoxy(0,0);
lcd_gotoxy(0,1);
if(w=='A')
lcd_gotoxy(0,0);
lcd_puts("Tkn[1]Run[2]Stop");
lcd_gotoxy(0,1);
lcd_puts("Status : ");
do
w=keypad_get_key_value();
HAL_Delay(100);
}while(w==' ');
if(w=='1')
//PENGGUNA MENEKAN KEYPAD 1
lcd_gotoxy(0,0);
lcd_puts("Tkn[1]Run[2]Stop");
lcd_gotoxy(0,1);
HAL_GPIO_WritePin(GPIOE,K1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOE,K2_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOE,K3_Pin,GPIO_PIN_RESET);
HAL_Delay(3000);
lcd_gotoxy(0,0);
lcd_puts("Tkn[1]Run[2]Stop");
lcd_gotoxy(0,1);
HAL_GPIO_WritePin(GPIOE,K1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOE,K2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOE,K3_Pin,GPIO_PIN_SET);
do
w=keypad_get_key_value();
HAL_Delay(100);
}while(w==' ');
if(w=='2')
//PENGGUNA MENEKAN KEYPAD 2
lcd_gotoxy(0,0);
lcd_puts("Tkn[1]Run[2]Stop");
lcd_gotoxy(0,1);
HAL_GPIO_WritePin(GPIOE,K1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOE,K2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOE,K3_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,BUZZER_Pin,GPIO_PIN_RESET);
do
w=keypad_get_key_value();
HAL_Delay(100);
}while(w==' ');
do
PB1=HAL_GPIO_ReadPin(GPIOC,OS_Pin);
}while(PB1==' ');
if(PB1==1)
//TERJADI OVER SPEED
lcd_gotoxy(0,0);
lcd_gotoxy(0,1);
HAL_GPIO_WritePin(GPIOE,K1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOE,K2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOE,K3_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,BUZZER_Pin,GPIO_PIN_SET);
}
// do
// {
// PB2=HAL_GPIO_ReadPin(GPIOC,OH_Pin);
// }while(PB2==' ');
//
// if(PB2)
//TERJADI OVER SPEED
// {
// lcd_gotoxy(0,0);
// lcd_gotoxy(0,1);
// HAL_GPIO_WritePin(GPIOE,K1_Pin,GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOE,K2_Pin,GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOE,K3_Pin,GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOB,BUZZER_Pin,GPIO_PIN_SET);
// }
//
//
// do
// {
// PB3=HAL_GPIO_ReadPin(GPIOC,OC_Pin);
// }while(PB3==' ');
//
// if(PB3)
//TERJADI OVER CURRENT
// {
// lcd_gotoxy(0,0);
// lcd_gotoxy(0,1);
// HAL_GPIO_WritePin(GPIOE,K1_Pin,GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOE,K2_Pin,GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOE,K3_Pin,GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOB,BUZZER_Pin,GPIO_PIN_SET);
// }
/**
* @retval None
*/
void SystemClock_Config(void)
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
*/
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
_Error_Handler(__FILE__, __LINE__);
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
_Error_Handler(__FILE__, __LINE__);
*/
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
*/
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
HAL_GPIO_WritePin(GPIOE, K3_Pin|KEYPADE12_Pin|KEYPADE13_Pin|KEYPADE14_Pin
|KEYPADE15_Pin|K1_Pin|K2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD, LCD_Pin|LCDD1_Pin|LCDD2_Pin|LCDD3_Pin
|LCDD4_Pin|LCDD5_Pin|LCDD6_Pin|LCDD7_Pin, GPIO_PIN_RESET);
|KEYPADE15_Pin|K1_Pin|K2_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
GPIO_InitStruct.Pin = KEYPAD_Pin|KEYPADE9_Pin|KEYPADE10_Pin|KEYPADE11_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
GPIO_InitStruct.Pin = OS_Pin|OH_Pin|OC_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_InitStruct.Pin = LCD_Pin|LCDD1_Pin|LCDD2_Pin|LCDD3_Pin
|LCDD4_Pin|LCDD5_Pin|LCDD6_Pin|LCDD7_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/*Configure GPIO pin : BUZZER_Pin */
GPIO_InitStruct.Pin = BUZZER_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(BUZZER_GPIO_Port, &GPIO_InitStruct);
/**
* @retval None
*/
/* User can add his own implementation to report the HAL error return state */
while(1)
}
/* USER CODE END Error_Handler_Debug */
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* @retval None
*/
/* User can add his own implementation to report the file name and line number,
#endif /* USE_FULL_ASSERT */
/**
* @}
*/
/**
* @}
*/
https://youtu.be/zl3wrz9tDW8