전기공학실험_보고서(BLDC모터).
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

전기공학실험_보고서(BLDC모터).에 대한 보고서 자료입니다.

목차

1. 개요

2. 구성
2-1. 하드웨어 구성

3. 소프트웨어 구성

4. 회로 설명
4-1. 제어부
4-2. 모터 구동부
4-3. 전원부

5. 소스 설명
5-1. 변수 설정
5-2. 초기화 함수
5-3. 타이머0 오버플로우 인터럽트 루틴
5-4. 메인함수
5-5. 버튼 입력 함수
5-6. BLDC모터 출력 함수
5-7. 가변저항으로 BLDC모터 속도조절 함수

본문내용

----------------------------------------
* FUNCTIONS: void main(void)
* SYNOPSIS: source main function
* EXTERNAL EFFECTS: none
* PARAMETERS: none
* RETURNS: none
* ERRNO: none
*-------------------------------------------------*/
int main(void)
{
cli();
SystemInit();
sei();
while(1)
{
ButtonInput(); // button input
if(Button.Run) VrAdcInput();// variable resistor input
else MotorStop();
}
}
메인함수에는 초기화 함수들과 버턴을 입력하는 함수와 가변저항 조절로 BLDC모터 속도를 조절하는 함수를 포함하고 있다.
5-5. 버튼 입력 함수
/*-------------------------------------------------
* FUNCTIONS: void ButtonInput(void)
* SYNOPSIS: run, stop, Motor dirction button input
* EXTERNAL EFFECTS: none
* PARAMETERS: none
* RETURNS: none
* ERRNO: none
*-------------------------------------------------*/
void ButtonInput(void)
{
unsigned char button;
// run buton, stop button input
button = inp(PINB)&0x03;
if(button == 0x01) Button.Run = 1, Button.Stop = 0;
else if(button == 0x02) Button.Run = 0, Button.Stop = 1;
// motor direction button input
button = inp(PINB)&0x0C;
if(button == 0x04) Button.Direction = CW;
else if(button == 0x08) Button.Direction = CCW;
else Button.Direction = NONE;
}
RUN, STOP 버턴은 각각 PortB.0과 PortB.1를 사용하고 BLDC모터 방향제어 버턴은 PortB.2와 PortB.3을 사용하였다.
5-6. BLDC모터 출력 함수
/*-------------------------------------------------
* FUNCTIONS: void MotorOutput(void)
* SYNOPSIS: hall sensor input data, bldc motor output data
* EXTERNAL EFFECTS: none
* PARAMETERS: none
* RETURNS: none
* ERRNO: none
*-------------------------------------------------*/
void MotorOutput(void)
{
unsigned char HallCnt = 0;
// hall sensor input data
switch(inp(PINA)&0xE0)
{
case 0x80:
HallCnt = 0;
break;
case 0xC0:
HallCnt = 1;
break;
case 0x40:
HallCnt = 2;
break;
case 0x60:
HallCnt = 3;
break;
case 0x20:
HallCnt = 4;
break;
case 0xA0:
HallCnt = 5;
break;
}
// bldc motor ouput data
if(Button.Direction == CW) outp(BldcCwData[HallCnt],PORTC);
else if(Button.Direction == CCW) outp(BldcCcwData[HallCnt],PORTC);
else MotorStop();
}
PortA.5~PortA.7를 사용하여 BLDC모터 홀센서 데이타를 입력받아 각각 입력받은 데이터에 따라서 PortC로 BLDC모터에 출력이 다르게 된다. 이때 출력은 BLDC모터 출력 데이터 배열에 따르게 된다. 이 함수는 타이머0 오버플러우 인터럽트 발생시에만 호출하게 된다.
/*-------------------------------------------------
* FUNCTIONS: void MotorStop(void)
* SYNOPSIS: bldc motor stop
* EXTERNAL EFFECTS: none
* PARAMETERS: none
* RETURNS: none
* ERRNO: none
*-------------------------------------------------*/
void MotorStop(void)
{
cli();
OCR1A = 0;
sei();
}
BLDC모터를 정지를 위해서 사용하는 함수이다.
5-7. 가변저항으로 BLDC모터 속도조절 함수
/*-------------------------------------------------
* FUNCTIONS: void VrAdcInput(void)
* SYNOPSIS: motor speed control
* EXTERNAL EFFECTS: none
* PARAMETERS: none
* RETURNS: none
* ERRNO: none
*-------------------------------------------------*/
void VrAdcInput(void)
{
unsigned char Duty;
outp(0x00,ADMUX);
outp(0xC5,ADCSR);
Duty = 0xFF- (ADCL + ADCH*256)/4;
if(Duty > MOTOR_MAX) Duty = MOTOR_MAX;
else if(Duty < MOTOR_MIN) Duty = MOTOR_MIN;
outp(Duty,OCR1A);
}
ATmega16 내부의 AD컨버터를 이용하여 가변저항의 전압을 변환후 BLDC모터 속도조정 변수로 사용하게 된다.
  • 가격2,000
  • 페이지수11페이지
  • 등록일2011.01.11
  • 저작시기2010.6
  • 파일형식한글(hwp)
  • 자료번호#647856
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니