마이크로프로세서 텀프로젝트
- 최초 등록일
- 2016.03.31
- 최종 저작일
- 2014.06
- 14페이지/ MS 워드
- 가격 1,500원
목차
1. 하드웨어 구성
2. 과제 1
3. 과제 2
4. 과제 3
5. 과제 4
6. 부록
본문내용
위에는 포토 인터럽터의 구조와 작동 원리를 보여주는 그림이다. 포토 인터럽터의 사이에 회전판을 고정시키고 회전판에 빛이 투과 될 수 없는 검은 색 테이프를 붙인다. 빛이 포토 트랜지스터에 가지 않을 때 전류가 흐르지 않는 다는 성질을 이용하여 모터의 회전 수를 세준다. 회전판에 총 4개의 테이프가 붙어 있고 이 테이프가 빛을 막아서 1회전 당 4개의 펄스가 들어가게 된다. 이를 이용하여 회전 수를 측정하고 속도를 측정할 것이다.
<중 략>
PB4를 출력으로 설정하여 모터가 듀티비에 따라서 속도가 달라지게 해준다. Fast PWM 모드를 분주비 8로 시작해주도록 설정한다. Fast PWM 모드는 비대칭형 PWM 신호를 만들어 주는데 OCR0 값을 듀티비로 설정을 해주어 이 값과 일치 될 때마다 OC0 핀을 0으로 바꿔주도록 설정을 하였다. 참고한 책에 있는 button이라는 소스파일을 통해 버튼의 채터링을 없애주고 버튼을 눌렀을 때와 누르고 있을 때 계속해서 신호가 가도록 해주었다.
마지막으로 switch 함수를 이용하여 스위치0을 누를 땐 duty 증가, 스위치 1을 누르면 duty 감소하게 만들어 주었고 최댓값은 250, 최솟값은 0으로 설정해주었다
<중 략>
위와 같이 설정해주면 계속해서 TCNT2 값이 156씩 더해져 10msec씩 카운트를 줄 수 있게 된다. 이 때 rpm을 구하기 위해 1초마다 rev을 세준다. 10msec 마다 인터럽트에 들어오므로 이를 n_enter 를 1씩 증가하여 n_enter = 100이 되게 해줄 때의 rev를 측정하면 1초때의 rev 값이다. rpm 은 1 분당 회전 수를 측정해줘야 하므로 1초 때의 rev 에 60을 곱해주면 60초당 회전 수이므로 이 값이 rpm 값이 된다.
그 밑의 프로그램은 각 인터럽트의 설정이다. 회전 수를 측정하는 인터럽트는 상승모서리일 때 인터럽트에 들어가게 설정해주었다. Rpm을 측정하는 인터럽트 경우에는 표준모드에서 오버플로 인터럽트를 이용하도록 설정한 후 분주비 1024로 타이머를 시작하게 설정해주었다.
참고 자료
없음