반응형
DC Motor에 Duty 50%를 주어 PWM을 만들어 보도록 하자!
PWM의 주기는 200Hz로 설정하였다.
이에 다하여 모터가 동작하고 모터에 연결된 엔코더(Encoder)를 통하여 측정된 Pulse 그래프는 아래와 같다.
이 Pulse를 100ms마다 측정한 Pulse는 Cnt가 되고
이 Cnt를 이용하여 100ms마다 모터의 RPM을 계산하여 내부 변수에 저장한다.
저장된 변수는 아래와 같이 그림을 통하여 컴퓨터로 받아온다.
그렇다면 이제 RPM을 띄어 보도록 하자!
void DrvAsc_Test1(void)
{
uint32_t temp = 0u;
static uint16_t TestCnt1 = 0u;
g_AsclinAsc.count = 1;
temp = (uint32_t)fSenseMotorRpm;
if(temp >= 255)
{
temp = 255;
}
g_AsclinAsc.txData[0] = (uint8_t)temp;
/* Transmit data */
IfxAsclin_Asc_write(&g_AsclinAsc.drivers.asc0, g_AsclinAsc.txData, &g_AsclinAsc.count, TIME_INFINITE);
}
RPM이 좀 흔들리는구나!
지금 구현한 것은 Open Loop Control 방법을 쓴것이다.
Duty를 0.5로 강제적으로 하여 모터를 구동한 것이다.
이 RPM은 자동차에 짐을 싫으면 또 변경이 되게 된다.
지금부터 Feedback Controller를 설계하여 내가 원하는 RPM을 측정할수 있도록 해보자!
반응형
'Embedded SW > [Infineon] Embedded SW Project' 카테고리의 다른 글
[Infineon] 23. Aurix (TC23x) DC모터 Feedback Control (PID) (1) | 2021.07.03 |
---|---|
[Infineon] 21. Aurix (TC23x) SerialPlot을 이용하여 계측환경 구성 (0) | 2021.06.29 |
[Infineon] 20. Aurix (TC23x) DC모터를 Encoder를 통해 속도 측정 (0) | 2021.06.28 |
[Infineon] 16.2. Aurix (TC23x) UART 초기화 코드 분석 (2) | 2021.06.25 |
[Infineon] 16.1. Aurix (TC23x) UART 배경설명 (0) | 2021.06.24 |
댓글