Robocar바퀴회전 측정 실험
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

Robocar바퀴회전 측정 실험에 대한 보고서 자료입니다.

목차

1. 실험 목적
2. 관련 이론
3. 실험 장치
4. 실험 과정 및 순서
5. 실험 결과
6. 고찰
7. 참고문헌

본문내용


#include
#define FORWARD 0x06
#define BACKWARD 0x09
#define RIGHT_CTRL0x20
#define LEFT_CTRL0x40
#define DUAL_CTRL0x60
int main(void){
unsigned int i=0;
DDRB = 0xFF; // PB5:우측 모터 Enable
// PB6:좌측 모터 Enable
PORTB = 0x00;
DDRA = 0x0F; // PA0 ~ 3:모터 방향 제어
PORTA = 0x00;
while(1)
{
PORTB = DUAL_CTRL;
PORTA = FORWARD;
for(i=0;i<100;i++)
_delay_ms(10);
PORTA = BACKWARD;
for(i=0;i<100;i++)
_delay_ms(10);
}
}
}
그림과 같이 for(i=0;i<500;i++)인 부분을 for(i=0;i<100;i++)으로 바꾼다. “_delay_ms(10)“ 여기서 한번 지연 시키는데 시간을 10ms로 두기 때문에 for(i=0;i<100;i++)을 보면,
““ 임을 알 수 있다. 바퀴가 앞으로 돌 때, 뒤로 돌 때 모두 1초로 설정을 해야 하기 때문에 코드를 두 개 모두 바꿔야 한다.
실험 2) 엔코더를 이용한 바퀴 회전 변위량 측정
초당 바퀴가 회전한 각도와 속도를 구해본다.
왼쪽바퀴
오른쪽바퀴
1333
1269
1333
1269
1333
1268
1332
1270
1333
1269
1333
1270
1333
1269
1333
1269
1335
1269
1334
1269
1334
1268
1335
1269
1335
1268
1335
1268
1335
1270
1335
1270
1334
1271
1335
1269
1334
1270
1334
1269
1334
1269
1333
1270
1333
1270
1333
1269
왼쪽바퀴
오른쪽바퀴
평균 펄스 수
1333.79
1269.21
초당 회전수
2.05
1.95
초당 회전각도(°)
738.71
702.95
초당 회전속도(m/s)
139.67
132.91
실험 3) PWM을 이용한 DC 모터 제어
1) 좌우 바퀴의 속도를 다르게 설정되도록 프로그램을 수정하고, 변화를 관찰해본다.
while(1) {
per=100; //듀티비
PWM_change(ALL,per) ;
}

while(1) {
per=100; //듀티비
PWM_change(LEFT_M,per) ;
per=50;
PWM_change(RIGHT_M,per) ;
}
코드를 다음과 같이 바꾸면 양쪽 바퀴의 제어가 따로 된다. 왼쪽 바퀴는 per=100 으로 돌아가고, 오른쪽 바퀴는 per=50 으로 돌아가게 된다.
2) PWM을 변경해가면서 관찰하여, 좌우 바퀴를 움직일 수 있는 최소 PWM 듀티비가 얼마인지 일의 자리까지 확인해본다.
while(1) {
per=100; //듀티비
PWM_change(ALL,per) ;
}
코드의 per을 점차 줄여 가며 바퀴가 회전하는지의 여부를 알아보았다. per=24 일 때, 네 개의 바퀴중 세 개가 돌아갔고, per=25 일 때, 네 개의 바퀴가 모두 돌아갔다.
따라서 최소 PWM 듀티비는 25이다.
6. 고찰
이번 실험은 총 세 가지로 진행되었다. 먼저 ATMega128의 GPIO 기능을 이용하여 RoboCar의 바퀴를 회전시키는 실험을 했다. ATmega128L 칩에서 나오는 PWM 제어 신호는 RoboCar의 DC모터를 제어한다. 이와 같은 제어를 통해 로봇의 바퀴를 회전 시킬 수 있었다.
실험 전 이미 코딩이 되어있는 코드를 받았는데, 바퀴가 일정한 속도로 한쪽방향으로만 움직이는 코드였다. 이를 5초 간격으로 전진, 후진을 반복하게 하기 위해 코드를 바꾸었다. 그리고 시간을 1초 간격으로 줄여보아야 했는데, 이는 반복 횟수를 줄임으로써 가능했다. 지연 시간이 10ms 이고, 반복 횟수를 100으로 하면 10ms * 100 = 1s 가 되어 1초 간격으로 바퀴의 회전 방향을 바꿀 수 있었다.
두 번째 실험은 엔코더를 이용하여 바퀴 회전 변위량을 측정해 보는 것이었다. 엔코더는 모터 회전자의 각도나 속도 등을 제어하기 위해 사용되는 측정 장치이다. Robocar에서 사용한 엔코더는 자기식 증가형 엔코더로, 모터의 1회전 시 650번의 펄스가 발생한다. 따라서 “초당 회전수 = 펄스 수 / 650 “의 식으로 구할 수 있었다.
펄스 수는 하이퍼터미널을 이용하여 구할 수 있는데, RoboCar 내부의 프로그램에서 UART포트를 통해 컴퓨터로 전송하는 데이터를 눈으로 볼 수있게 만드는 프로그램이다. 이렇게 펄스 수를 관찰 할 수 있었고, 이를 변환하여 속도와 각도를 구할 수 있었다. 이 때 왼쪽바퀴와 오른쪽 바퀴는 펄스 수의 차이를 보였는데, 이는 RoboCar 내부의 결함이라 생각된다. 부식의 정도와 마찰 등의 영향으로 오른쪽 바퀴가 펄스 수가 더 낮았다고 생각된다. 그래서 양쪽 바퀴의 회전수, 속도, 각도 모두 다를 수밖에 없었다.
세 번째 실험은 PWM(펄스폭 변조)을 이용하여 바퀴의 속도를 제어해 보는 것이다. 모터 구동전원이 일정 주기로 ON/OFF 하는 펄스 형상을 하고 있고, 이 비율(듀티비)을 이용하여 속도를 제어해 보았다. 이 실험 역시 코딩이 되어있는 파일을 받고, AVR에 넣고 시작했다. per수를 바꾸고, 왼쪽과 오른쪽 바퀴의 제어를 따로 하는 것으로 코드를 바꾸어 좌우 바퀴 속도를 다르게 해보았다. 그리고 PWM 듀티비가 어느 정도로 작아지면 바퀴를 돌리려는 힘이 최대정지마찰력을 넘지 못해 바퀴가 돌아가지 않는다고 한다. 그래서 최소 듀티비를 측정해 보았다. per을 24로 하였을 때 바퀴가 3개 돌아갔고, per을 25로 하였을 때 4개의 바퀴가 모두 돌아갔다. 3개만 돌아간 것은 RoboCar 내부의 문제로, 이 것 또한 내부의 부식의 정도와 마찰 때문일 것이다. 따라서 모두 돌아가는 per=25 일 때, 최소 듀티비라고 할 수 있다.
7. 참고문헌
(1) 계측및신호처리/강의록
(2) 기계시스템공학실험/강의록
(3) 기계시스템공학실험/Handout
  • 가격2,000
  • 페이지수10페이지
  • 등록일2017.10.01
  • 저작시기2015.9
  • 파일형식한글(hwp)
  • 자료번호#1035443
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니