반응형
드디어 이제 Feedback Control을 해볼수 있는 환경이 되었다!
큰 그림은 아래와 같다.
내가 원하는 RPM을 입력으로 넣을 것이고
Controller에서는 PWM Duty값을 만들어 줄것이다.
그리고 이 Controller는 내가 원하는 RPM과 Encoder로부터 측정된 RPM을 0으로 만들어 줄것이다.
대표적인 Feedback Controller로 PID Controller가 있다.
추후 PID Controller에 대해서 더 이야기 해보도록 하겠다.
아래 코드는 Controller를 구현한 부분이다.
void MotorFeedbackController(void)
{
static int32_t lProportionalControlInput = 0;
static int32_t lIntegralControlInput = 0;
static int32_t lIntegralControlOld = 0;
static uint32_t ulSamplingFrequency = 10u; /*100ms*/
int32_t g_nError = 0;
int32_t g_nControlInput = 0;
fSenseMotorRpm = ((float32_t)ulPulseCnt*60.0f*10.0f)/(8.0f*120.0f);
ulPulseCnt = 0u;
/*PID Contorller*/
g_nError =((int32_t)ulRpmRef- (int32_t)fSenseMotorRpm);
lProportionalControlInput = (int32_t)ulPGain*g_nError/10; // Not to express the gain as float -> g_nPGain/10
lIntegralControlInput = lIntegralControlOld + ((int32_t)ulIGain*g_nError/(int32_t)ulSamplingFrequency/10);
g_nControlInput = (lProportionalControlInput + lIntegralControlInput); //PID control input
lIntegralControlOld = lIntegralControlInput;
if(lIntegralControlOld > 80u)
{
lIntegralControlOld = 80u; //Limit accumulated value by I gain
}
if(g_nControlInput >= 80u)
{
g_nControlInput =80u; //Limit control input (0<=contorl input<100)
}
else if(g_nControlInput <= 0u)
{
g_nControlInput = 0u;
}
else
{
/*No Code*/
}
/*Gtm PWM Test*/
fPwmDuty = (float32_t)g_nControlInput/100.0f;
DrvGtmPwmTest(fPwmDuty,fPwmDuty,fPwmDuty,fPwmDuty);
}
우선 나중에 더 자세히 분석해서 설명해야 겠다.
오늘 너무 피곤...
우선 결과만 보면 내가 원하는 RPM으로 Controller이 되고 있는것을 볼수 있다.
나중에 더 좋은 엔코더가 달린 모터를 구매하자!
이제 속도 제어가 된다!
그 다음은 무엇일까?
자신의 위치를 분명히 아는 것이 필요할것 같다.
그러려면 어떻게 해야할까?
반응형
'Embedded SW > [Infineon] Embedded SW Project' 카테고리의 다른 글
[Infineon] 22. Aurix (TC23x) DC모터를 속도 측정 값을 그래프로 확인 (0) | 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 |
댓글