임베디드시스템(DC Motor와PID)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

임베디드시스템(DC Motor와PID)에 대한 보고서 자료입니다.

목차

1. DC Motor란?

2. DC Motor의 특성

3. DC Motor의 결점

4. DC Motor의 구조

5. DC 모터의 제어

6. PID란?

7. PID Gain 조정 및 제어 특성

8. 회 로 도

9. DC Motor Control Code

10. 결과값

11. 실험결과 및 고찰

본문내용

= 1;
float P_gain = 5.0;
float I_gain = 0.0;
float D_gain = 5.4;
int offset = 0;
void bad_trap(void)
{
while(1);
}
void c_int2(void)
{
DI;
if((PIVR-0x002F) == 0){
SET(EVBIFRA, T3PINT_FLAG);
control_period = 0;
}
EI;
}
void main(void)
{
unsigned int k, j;
int ref_pos, rel_pos, pos_er, prev_pos_er, pos_er_dot, pos_er_int, pwm;
char ch;
char s[40];
UINT ad_value;
DSPInit(PLLx4);
SCIInit();
SET_PC_OUT(BIT1|BIT0);
CLEAR (PORTC, BIT0);
// ADC setting 순서
// 1. ADC가 속해있는 모듈을 활성화 시킨다.
ADC_ENABLE; // ADC module enable
// 2. ADC를 초기화한다.
SET(ADCTRL1,BIT14); // RESET 비트를 \'1\'로 설정하여 ADC 모듈을 리셋한다.
NOP; // delay
ADCTRL1 = 0x0010;
// immediate stop, prescaler:16, CPS:0, start-stop mode
// 3. 최대 변환 채널을 지정한다.
MAXCONV= 0x0001; // 1 channel
// 4. 채널 변환 순서를 지정한다.
CHSELSEQ1 = 0x0000; // A/D 1
// 5. A/D 변환을 시작한다.
AD_START;
EVA_ENABLE;
T1DISABLE;
SET_PWM1;
SET_PWM2;
SET_PWM3;
SET_PWM4;
T1PR = (CPU_clk()/PWM_PERIOD);
ACTRA = 0x0099;
CMPR1 = (unsigned int)(T1PR*0.0);
CMPR2 = (unsigned int)(T1PR*0.0);
COMCONA = 0xC200;
T1CON = 0xD040;
T2PR = 0xFFFF;
T2CNT = 0;
T2CON = 0xD870;
EVB_ENABLE;
T3DISABLE;
T3CON = 0x5700;
T3PR = 15624; //20Hz
T3ENABLE;
SET(EVBIMRA, T3PINT_ENA);
SET(IMR, INT2_MASK);
EI;
CLEAR(PORTC, BIT0);
CLEAR(PORTC, BIT1);
ref_pos = 0;
pos_er = 0;
rel_pos=0;
pos_er_int = 0;
k=0; j=0;
pwm=0;
T2CNT=0;
while(1){
while(IS_AD_BUSY);
// A/D 변환값을 읽는다.
ad_value = (RESULT0>>6)&0x03FF;
// A/D 변환값을 시리얼 통신을 통해 전송한다.
while(control_period);
control_period = 1;
//if(j <= 50) {
// TOGGLE(PORTC, BIT0);
// TOGGLE(PORTC, BIT1);
// pwm = 0;
// T2CNT = 0;
// j++;
//}
//else {
ref_pos = ad_value*4;//(int)500*sin(2*3.1415926*k/100);
//if(k < 50) ref_pos = 0;
//else if(k<150) ref_pos = 1000;
//else if(k<250) ref_pos = -1000;
//else if(k<350) ref_pos = 1000;
//else if(k<450) ref_pos = -1000;
//else if(k<500) ref_pos = 0;
//else break;
prev_pos_er = pos_er;
rel_pos = T2CNT;
pos_er = ref_pos - rel_pos;
pos_er_dot = pos_er - prev_pos_er;
pos_er_int = pos_er_int + pos_er;
pwm = (int)(P_gain*pos_er + D_gain*pos_er_dot + I_gain*pos_er_int + offset);
k++;
//}
if(pwm > 0){
SET(PORTC, BIT0);
SET(PORTC, BIT1);
//pwm += 200;
//if(pwm > 1300)
// pwm = 1300;
}
else if(pwm == 0) {
TOGGLE(PORTC, BIT0);
TOGGLE(PORTC, BIT1);
}
else {
CLEAR(PORTC, BIT0);
CLEAR(PORTC, BIT1);
//pwm -= 200;
//if(pwm < -1300)
// pwm = -1300;
}
// if(k >= 450) break;
// else if(k >= 400) pwm = 0;
// else ;
CMPR1 = abs(pwm);
CMPR2 = abs(pwm);
//sprintf(s,\"%d %d %d\\n\",ref_pos,pwm,rel_pos);
sprintf(s,\"%d %d\\n\",ref_pos,rel_pos);
SCIPrintf(s);
AD_START;
}
while(1);
}
10. 결과값







키워드

  • 가격2,000
  • 페이지수13페이지
  • 등록일2009.03.05
  • 저작시기2009.1
  • 파일형식한글(hwp)
  • 자료번호#521644
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니