학부소식학부뉴스

학부뉴스


[CK-메카] 집중강좌 "AVR 기반 로봇구동 이론/실습" 소감문

조회 2,060

메카트로닉스 2015-04-20 09:38

 

집중강좌 "AVR 기반 로봇구동 이론/실습" 소감문

 

ㅁ 주      최 : CK-메카트로닉스 전문인력 양성사업단

ㅁ 교육기간 : 2014.12.26.(금) ~ 2015.01.12.(월) 09:00-13:00 (10일, 총 20시간)

ㅁ 강      사 : 한종호

ㅁ 교육목표 : AVR社의 ATmega 프로세서를 이용한 모터 및 센서가 장착된 로봇제작과 구동 관련한 이론과 실습을 통한 H/W 및 S/W 기술력을 겸비 할 수 있도록 한다. 또한 공학교육 및 산학연계 학습프로그램과 같은 각종 대외경진대회 참석으로 공학도의 전문기술을 응용하고 산업화를 위한 전문기술을 쌓도록 하는데 있다.

 

 

저는 평소에 자동차나 항공기와 같은 수송체가 버튼 하나로 시동이 걸리거나 온도나 습도가 측정 될 때 어떤 보드에 수치 값이 나타내지는 것을 보면서 너무 호기심이 가게 되었고, 3학년 과정에서 배우면서 부족한 부분을 조금 더 채워서 실제로 제가 작품을 만들어보면서 제어를 해보고 싶어서 이번 AVR 로봇 구동 특강을 듣게 되었습니다.

특강을 들으면서 한가지 결심한 것이 있습니다. 이번에 들을 때는 이해를 미리 하였던 것이 있더라도 들으면서 새롭게 이해될 수 있기에 차분하게 특강을 들으면서 질문을 하자는 태도를 가지자는 결심을 하였습니다.

 

1,2,3 차에는 C언어의 처리되는 과정과 문법적인 요소 공부 그리고 AVR 프로그램 설치 및 사용방법을 들었습니다. 평소 알고 있었던 데로 설치하는 것 같았지만, 세부적으로 왜 이것을 설치하는지 그리고 이런 세부적인 옵션을 추가해서 설치하게 되면 좋은지에 대해서 배워 갈 수 있었습니다. 그리고 평소 C언어의 연산자가 헷갈려서 놓친 적이 많았는데 이번에 비교 연산자와 논리 연산자 등 조금씩 차이가 있는 것들을 질문을 하면서 차이점을 설명해주시는 것을 들으면서 벽돌이 딱딱 맞게 쌓이는 듯이 기초가 튼튼해졌습니다.

 


<스위치를 이용한 LED 제어>

 

4,5 일차에는 외부입력장치에 대해서 문법적인 언어를 설명해주셨습니다. AVR 128 기반이라 래빗 키트의 회로도를 통해서 LED 제어를 하면서 교차 점멸, 스위치를 이용해서 LED 제어 등 딜레이를 다양하게 줘서 점멸 속도를 변환시키는 학생들이 호기심에 맞춰서 다양하게 다룰 수 있었고, 강사님의 응용적인 설명도 많이 해주셔서 생각의 폭이 많이 넓어지는 특강이었습니다. 또한 코딩작업을 통해서 보통 처음하게 되면 어렵기 마련인데, 강사님이 예제 소스를 설명을 통해서 코딩을 스스로 해보고 그 뒤에 조금씩 조언해주는 식으로 수업을 해주시다 보니 코딩하는게 쉽게 다가와서 좋았습니다.

 

6일차에는 인터럽트가 주제였습니다. 인터럽트가 어떤 것인지 예를 들어 설명해주셨습니다. 예를 들자면 제가 공부를 하고 있는데 어머니께서 심부름을 시켜서 잠깐 다녀와서 다시 공부를 하게 되는 것이라면, 인터럽트는 심부름이라는 말이었습니다. 즉 잠깐 간섭을 받는 다고 이해를 하게 설명해주셨습니다. 예전 수업을 들을 때 인터럽트가 워낙 다양해서 어렵다고 생각했는데 하나 하나씩 데이터시트를 참조해가면서 강사님의 설명에 따라 해보니, 어렵지 않았습니다. 아쉽게도 래빗 키트의 제한으로 LED 제어하면서 스위치를 누르면 LED가 OFF 되는 현상으로만 인터럽트를 체험하였습니다.

 


<그림1. 인터럽트 실습>

 

7일 차에는 USART 통신을 배웠습니다. 통신을 이용하여 조종기를 만들려고 했던 저는 새로운 통신 프로그램을 통해서 고민을 좀 해결할 수 있었습니다. 이 프로그램은 자기가 보내고 싶을 때 보내는 버튼을 누르면 값이 나오기 때문에 계속 나오는 하이퍼 터미널로서는 명령어를 보내면 값이 나오는 프로그래밍을 할 수 없었습니다. 아쉽게도 SPI나 TWI를 통해서 까지 실습을 하기에는 시간이 부족했기에 못했지만, 하나의 통신만이라도 재밌게 구현하게 되어서 너무 좋았습니다. 

 

<FND를 이용한 USART 제어>


8일차에는 ADC에 관하여 특강을 들었습니다. 이때는 강사님이 직접 적외선센서와 초음파센서를 들고오셔서 보여주시는 방식으로 강의하였습니다. 다소 센서의 감지부분에 대한 코딩작업이 어려워서 강사님이 직접 코딩을 따라하게끔 보여주셔서 정말 좋았습니다. 거기에 유아트를 응용하여 통신프로그램으로 초음파센서의 거리값에 따라 감지되는 값을 모니터로 출력하여 볼 수 있었기에 정말 유익했고 재미있었습니다. 앞으로 이 코딩을 참조해서 더욱 응용할수 있도록 만들어 보아야겠다고 생각하였습니다.

 


<ADC를 이용한 온도값 이산치 FND 출력>

 

9~10 일차에는 타이머/카운터에 대해서 배우게 되었습니다. 이전에 라인트레이서를 만들어보면서 타이머 카운터에 대해서 얄팍하게 알고 있었지만, 이번 수업을 통해서 구동을 확실하게 할 수 있었습니다. 라인트레이서를 만들때에는 레지스터 변경을 통해서 제어를 하였지만, 잘 실행이 안되어서 고민이었는데, 이번에 배우게 되면서 생각보다 잘되어서 뭐가 문제인지 알 수 있었습니다. 그래서 타이머를 이용해서 LED 제어를 하고 초음파센서값을 주기적으로 읽어서 통신프로그램을 통해서 볼 수 있게 하였습니다, 레지스터의 역할이나 명칭이 헷갈렸던 것도 잘 정리 해주셔서 제일 유익했고, 궁금했던 부분을 해결했던 것 같습니다.

 

앞으로도 이런 특강이 계속 있었으면 좋겠고, 이번에는 참석률이 별로 좋지 않아서 아쉬웠습니다. 이런 방학특강을 통해서 서로 학생들이 모여서 팀을 꾸릴 수도 있고, 재밌게 만들 수도 있을 것 같은데 , 끝나고 보니 더더욱 생각났습니다. 저는 조금 더 배우고 스스로 할 시간을 가지는게 되게 중요하다는 것을 다시한번 깨달았습니다. 그전에는 예제 소스만 활용하여 실습을 매일 했었지만, 그것을 바꾸어서 예제소스가 왜 이렇게 작성되었는지, 그리고 제가 미리 한번 코딩을 해서 무슨 차이가 있는지를 살펴보면서 공부를 하게 된다면 더 좋은 학습이 될 것 같다고 생각 되었습니다. 앞으로 훌륭한 엔지니어가 될 수 있도록 노력하고 싶습니다.