|
|
|
MAZE 동아리에서 마이크로 마우스를 시작하는 애들을 위해 DC 모터 제어 원리와 구현을 위한 세미나를 했다. 기왕 하는 김에 훗날에 다른 사람이 세미나를 준비할 때 참고할 수 있고, 자료를 추가로 보강할 수 있는 파워포인트(PPT)로 자료를 만들었다.
차례
1. DC 모터 제어 원리 1) DC 모터 구동 원리 2) PWM을 통한 DC 모터 구동 3) 모터의 회전수 측정 4) PID 제어
2. DC 모터 제어 구현(TMS320F2808) 1) Flowchart 2) 초기화 3) 모터 제어 구현
여담으로..
요즘 이런저런 문서를 작업 할 때 자주 쓰는 방법은 스프링노트를 통해 목차는 먼저 작성하는 것이다. 처음 파워포인트나 워드 툴로 시작을 하면 막막해서 진행이 잘 안 되는데, 이럴 때 스프링노트에 목차를 적어 나가는 방식으로 시작한다. 틈틈이 생각날 때마다 목차를 하나하나씩 추가하고 보강하다 보면 어느새 틀이 잡힌다. 즉, 골격을 미리 잡고, 살을 붙이는 방식으로 작성해보니 한결 부담이 적고, 빠른 시간 안에 작성이 된다.
 ( 0)  ( 0)
Yarmini
2008/04/26 03:45
2008/04/26 03:45
:: http://yarmini.com/blog/suneung/trackback/114
 Canon PowerShot A550 | 1/40sec | F2.6 | ISO-800  Canon PowerShot A550 | 1/25sec | F2.6 | ISO-800 문득 생각해보니 '010v4'의 마우스 사진이 없다는 것을 알았다. 완성한 지는 꽤 오랜 시간이 지났는데 아직 주행을 못하고 있다. 이런저런 일도 있었다만 게을렀던 문제가 가장 큰 것 같다. 완성해 놓고 멋진 주행을 안 시켜 주다니 내가 미안한 마음마저 드네. 상반기에 시간을 조금씩 내서라도 작년에 이루지 못한 목표에 다가가도록 노력해야겠다.  ( 0)  ( 0)
Yarmini
2008/02/07 01:00
2008/02/07 01:00
:: http://yarmini.com/blog/suneung/trackback/106
예전에 만든 턴 시뮬레이션은 도스환경이기 때문에 이번에 새로 만들기로 했다. 툴은 Visual C와 매트랩이 있었으나 아래와 같은 장점으로 매트랩을 선택하였다.
1. 다양하고 방대한 그래프, 좌표 출력 기능을 제공하기 떄문에 구현이 쉽다. (실제 시뮬레이션을 코딩해 보면 대부분 시간이 그래프와 좌표 출력 UI를 만드는데 소요된다.)
2. 수식과 관련된 함수가 다양하며 사용법이 쉽다.
3. 좌표나 속도를 나타낼 배열을 행렬로 나타내는 데 행렬 간의 산술 계산이 간단하다.
4. 베이직과 같은 인터프리터 방식으로 디버깅과 코딩이 편하다.
실제 접해보니 매트랩의 언어는 간단하여 쉽게 사용할 수 있었다. 또한 그래프도 그려주고 세세한 설정까지 가능하니 얼마나 편한가.. 턴 시뮬레이션은 산술적 계산이 적은 편이라 한 페이지 안에 구현되었으며, 여러 기능 보완을 하고자 코드가 늘어났다. 전체적으로 코딩 시간은 그리 길지 않았다.
또한, Visual C 처럼 UI를 갖추기 위해 매트랩의 GUI 기능을 강좌를 보면서 구현했다. Visual C의 UI를 꾸미는 것과 비슷하여 금방 따라갈 수 있었다.
매트랩에서만 구동하는 것을 실행 파일로 변환하면 따로 매트랩을 켜지 않아도 독립적으로 실행할 수 있다. 단, 매트랩이 설치 안 된 곳에서는 따로 제공하는 기본 라이브러리를 설치해야 한다.
C:\..>mcc -m filename
이렇게 명령어를 실행하면 'filename.exe', 'filename.ctf' 파일이 생긴다. 실행을 하면 자동으로 하위 폴더에 압축이 풀리고 실행이 된다. 그다음부터는 압축을 풀지 않고 바로 실행한다.
참고 사이트
- http://www.matlabsolutions.com/ - http://matlabschool.com/  ( 0)  ( 0)
Yarmini
2007/11/24 03:10
2007/11/24 03:10
:: http://yarmini.com/blog/suneung/trackback/98
일본 마이크로 마우스 대회 규정이 2009년도부터 바뀌게 된다. 기존의 벽과 마우스 크기가 반으로 줄어든다. 아래는 일본 마이크로마우스 대회의 공지사항.
경기 규정의 중요한 변경 계획의 소식 (마이크로 마우스 경기에 관한 크기의 변경)) 2007.8.1
2009 연도보다 마이크로 마우스 경기 「익스퍼트 클래스」에 대한 마이크로 마우스 본체 및 미로의 구획등의 크기를 각각1/2 (으)로 변경으로 하는 일을 검토중입니다.
이 변경에 의해, 현행규정에 의한 최종의 전국 대회는 내년2008 해의 제29 회전일본 마이크로 마우스 대회가 되어, 다음2009 해의 제30 회전일본 마이크로 마우스 대회로부터 신규정을 채용하는 경기회가 됩니다.
현재의 변경 계획 ·마이크로 마우스의 크기: 한 변25 cm의 정방형 → 한 변12.5 cm ·미로의 단위 구획·높이·두께: 18 cm/5 cm/1.2 cm → 9 cm/2.5 cm/0.6 cm
현행규정에 의한 최종의 전국 대회를 내년2008 해의 제29 회전일본 마이크로 마우스 대회로서 다음2009 해의 제30 회전일본 마이크로 마우스 대회에서 신규정을 채용하는 경기회로 하는 것을 계획중입니다.
다만, 현재의 단계에서는 「freshman 클래스」에 있어서 규정의 변경에 대해서는 미정입니다.
배경: 마이크로 마우스가 미국에서 제안되었다1977 해당시는 마이크로 프로세서가 등장해 동안도 없는 시기이며, 현행규정의 사이즈로 제작하는 일도 그 나름대로 실장 기술이 요구되었습니다만, 이미30 해가 경과한 것으로부터, 본경기에 대해도 새로운 기술적 챌린지적 요소가 필요하다고 생각하고 있기 때문에(위해)입니다.
※또한 거기에 따라, 마이크로 마우스2007 에 두어 신규정에 준거했다1/2 사이즈의 마이크로 마우스와 미로에 의한 데모를 실시할 계획입니다.( 상세한 예정은 후일 발표하겠습니다)
※또, 신규정의 도입에 아울러, 초심자의 분을 대상으로 한, 신규정에 준거하는 마이크로 마우스·킷을 제공할 수 있는 님, 검토를 진행하고 있습니다. |
올해 11/16~11/18일에 하는 일본 대회는 갈 수 있을 지 모르겠다. 그 때 쯤이면 다리는 걸을 수 있을 지.. 또 마우스는 언제 굴려 볼 것인지.. 에혀. 걱정이다. 더군다나 참가 신청 기간은 10/15일 까지라 지나버려서, 일단 접수는 해놓지만 어떻게 될 지 모르겠다. 내후년부터는 일본 대회 규정이 1/2 Half Size라 해서 미로벽 크기가 반으로 줄어 든다. 따라서 대각을 하려면 마우스의 크기도 상당히 줄어 들어야 된다. 일단 PCB는 당연히 떠야 할 듯 하고, 모터와 엔코더를 작은 것을 써야 될 듯 하다. 암튼 새로 바뀌는 건 하드웨어 뿐이니.. 재미가 더 있을 지는 모르겠다.
*-*-*-*-* 추 가 *-*-*-*-*
Mr. Park Sun-Eung.
Thank you for your participation application of MICROMOUSE 2007.
An application form of the Micromouse contest expert class (1 robots) were accepted.
Please send a technical seat by the end of October.
다행이 늦었지만 신청되었다는 메일이 날라왔다. 선택 할 수 있는 기회 가 생겼구나^^!!
 ( 0)  ( 0)
Yarmini
2007/10/19 16:30
2007/10/19 16:30
:: http://yarmini.com/blog/suneung/trackback/92
마이크로마우스나 라인트레이서나 잘 가는 로봇들은 하나 같이 주행이 부드럽다는데 있다. 마치 물 흐르듯이 주행한다. (하윤이형꺼는 워낙 빨라서..안보이고^^)
즉, 모터의 속도를 변경 할 때 속도 곡선이 부드럽게 이어지며 모터에 무리가 가지 않기 때문에 더 높은 속도를 낼 수 있는 것이다.
이것을 계기로 가감속 시 2차 곡선 가속도를 사용하게 되었다.
기존의 경우 모터 가감속 제어시 가속도는 아래와 같았다.
여기서 꺽이는 부분을 부드럽게 이어주는 2차 곡선을 추가하면 아래와 같다. 실제 주행 해 본 결과 같은 가속도에서 보다 부드럽게 가감속을 했으며, 더 높은 가속도에도 안정적인 주행을 보였다. 또한 소스 추가도 4줄 정도이기 때문에 부하에 대한 부담도 없고 문제점도 적다. 여기서 증가율만 높인다면 기존 방식과 거의 시간 차이는 나지 않을 것이다(10틱안팍) 추가 해야 할 것은 거리 계산 법을 다시 맞춰야 한다. 오차 계산.  ( 0)  ( 0)
Yarmini
2007/08/01 03:30
2007/08/01 03:30
:: http://yarmini.com/blog/suneung/trackback/77
모터 제어 시 속도 프로파일을 Que에 넣어 자동으로 수행되도록 하는 알고리즘이다.
예를 들어 가감속을 할 경우 일반적인 순서는 아래와 같다.
1. 가속을 위한 목표 속도(2m/s), 가속도, 거리 설정 2. 목표 거리에 도달 할 때 까지 대기 3. 감속을 위한 목표 속도(0.1m/s), 가속도, 거리 설정 4. 목표 거리에 도달 할 때 까지 대기
이렇게 진행되는 데, 여기에 Que 버퍼를 이용하여 아래와 같이 바꾼다.
1. 가속을 위한 제어 프로파일 구조체 생성(속도, 가속도, 거리, 보정비 등등 정보 포함) 2. 감속을 위한 제어 프로파일 구조체 생성(속도, 가속도, 거리, 보정비 등등 정보 포함) 3. 모터 제어 Que 버퍼에 1, 2번 구조체를 Push 4. Que 버퍼의 정보가 완료 될 때 까지 대기
이런 식으로 진행하며, 모터 인터럽트에서는 Que 버퍼의 내용을 검사하여 목표 거리에 도달 했는 지, 다음 수행 할 제어정보가 있는 지 검사하며 구동된다.
이 구동 방식은 마우스가 턴을 할 때 또한 사용할 수 있으며, 따로 직진과 턴의 인터럽트를 분리 하지 않아도 사용이 가능 할 꺼 같다.
또한 프로파일에 여러 정보들을 쉽게 설정 하고 적용 할 수 있으며 프로파일 단위로 진행 되기 때문에 각각의 최적 상수를 적용하고 문제점을 찾는데 도움이 될 듯 하다.
보강할 점으로는 모터에 특정 제어가 바로 적용할 필요가 있을 수 있으니 예외 처리를 추가하여야한다.
 ( 0)  ( 0)
Yarmini
2007/08/01 02:50
2007/08/01 02:50
:: http://yarmini.com/blog/suneung/trackback/76
PID 제어를 위해 2811 코드를 참고로 포팅하다 보니
QEP를 0으로 변경시에 초기화 명령어를 사용하지 않고, 2811처럼 Count Register에 0을 입력 하였더니,
가끔씩 0으로 초기화가 되지 않는 문제 발생. 이것때문에 PID제어시 톡톡 튀는 증상이 있었다.
----
센서 입력 방식을 기존의 절대값에서 하윤이형의 적분 방식으로 변경 시도.
ADC Sequence에 입력을 동일하게 8개를 설정한 후
한번에 연속적으로 8번 ADC하여 값을 구하는 방식을 사용.
이때 Sequence Clock을 조정하여 시간차를 구함.
설계가 간단하여 코드가 기존의 방식과 별로 차이가 없을 듯 하다.
그런데 현재 적분과 관계없이 센서값이 일정 값이상 들어오면 ADC값이 안들어오는
문제가 있다.
----
마우스 이름은 '010v4' 5글자인데. VFD는 4글자다...
마우스의 Display화면에 마우스 이름을 다 넣지 못하다니..
큰일이 아닌것 같지만서도.. 몬가 찜찜한 문제.
스크롤 방식을 짜던가, 010v4의 닉네임을 만들어야겠다ㅋ
----
하나하나 의외로 발생하는 문제들 때문에 진도가 잘 나가지 않고 있다.
휴.. 서울대회가 얼마 안남았는데..
 ( 0)  ( 0)
Yarmini
2007/07/20 23:42
2007/07/20 23:42
:: http://yarmini.com/blog/suneung/trackback/75
제작중이 마우스가 가끔씩 폭주를 하는 현상이 있었다. 특정한 상황에서 발생하는 문제가 아닌지라어떻게 해결을 해야하나 참 막막하던 찰라에 선응이 블로그를 보고 혹시 나도? 제어기 루틴..
 Canon DIGITAL IXUS 65 | 1/50sec | F2.8 센서부를 제외한 보드 조립을 완료하여 JTAG을 연결, 테스트 해봤다. 통신까지는 잘 되는데, Monitor Program으로 점프 뛰는 명령어에서 예외 처리가 발생. 진행이 되지 않는다. 기존 테스트 보드에서와 결과가 비슷하여 온갖 사항을 다 점검하여 시도해 봤으나 잡히지 않았다. 결국 하루 종일 고생하고 새로운 PCB에 다시 최소한의 부품으로 조립하게 되었는데, 잘 되는 것이 아닌가.. 원인을 검토 해 본 결과 스위치로 쓸 포트를 풀다운 하면 그런 증상이 발생 하였다. 보통 스위치포트에는 풀업 저항을 연결 하는데 난 스위치가 눌릴 때 'HIGH'상태로 하고 싶어 풀다운 저항을 연결하였었다. 풀업으로 바꾸니까 바로 정상 동작! GPIO13, 14포트의 초기 풀다운 시의 원인은 좀 더 살펴 봐야 겠다.
.png)
(순식간에 보드가 두장이 됬네...)
 ( 0)  ( 0)
Yarmini
2007/07/03 14:40
2007/07/03 14:40
:: http://yarmini.com/blog/suneung/trackback/73
드디어 010v4 Mouse PCB가 나왔다. 바로 입금 하니까 오토바이 택배로 보내 준 듯하다. 직접 보니까 감동이 밀려오네^^ 한 학기 내내 고생하고 마지막에 주문할 때 고생하고..휴.
기존에 하윤이형이 거래했었던 한샘 디지택에 맡겼으며, 가격은 49만원 정도 나왔다. 빨간색에 금도금을 하니까 돈이 추가 되었다. 그래도 4명이 Merge로 작업하여 한판에 주문했기 때문에 한사람당 4Layer에 13만원 정도인 샘이니 상당히 싸게 한 샘이다^ㅡ^
 Canon DIGITAL IXUS 65 | 1/50sec | F2.8 PCB는 전체적으로 잘 됬으나 빨간색에 금도금은 잘 안어울린다. 또한 두깨는 1.0T로 했는데 중간에 모터 구멍이 있는 것 포함해서 전체적으로 잘 휘어 부러지거나 패턴이 끊길 위험이 있다.
Merge 시 유의사항 1. 서로 다른 PCB 환경에서 작업을 했기 때문에 CAM 생성시 레이어 이름, 순서, 파일명을 동일하게 한다. 2. 드릴 구멍이 같은 거는 심볼로 미리 등록하여 모두 일치 시킨다. 3. CAM350에서 Merge로 합친 후 CAM파일로 다시 Export하여 주문한다. 4. 한샘 디지택에서 요청사항은 벡터 폴리건 방식이다. (이 부분은 방법을 자세히 모르기 때문에 한샘에서 대신 해줬다.)
PCB 주문 정보
| * 레이어 |
4 Layer |
* X,Y 사이즈 |
- mm X - mm |
| * 수량 |
4 EA |
* 재질 |
FR-4 |
| * 두께 |
1.0 T |
* 표면처리 |
ENIG (CARBON : N) |
| * 동박 |
HOz |
* 실크 |
단면 |
| * V-Cut |
- 줄 |
* 단자금도금 |
- EA |
| * 실크색상 |
흰색 |
* 솔다색상 |
빨강색 |  ( 0)  ( 0)
Yarmini
2007/07/03 14:30
2007/07/03 14:30
:: http://yarmini.com/blog/suneung/trackback/72
010v4 PCB (Top, Bottom, Merge)
낮은 자체로 안정된 주행을 하기 위해 마우스 기판을 PCB로 뜨기로 했다. 첫 PCB 작업이기에 처음에는 흥미가 있있어 재미 있을 때도 있었고, 또 노가다 작업을 몇시간 하니 정말 하기 싫은 정도로 지겨워 질 때도 있었다.
대부분의 회로와 부품은 하윤이형 고구려 마우스를 따라 했다. 처음에는 부품도 골라보고 했지만, 시간이 너무 많이 소요 됬고 일단 하나 만들어보고 그 다음에 보강을 하기로 했다.
복학한지 1학기가 흘렀지만 기억에 남는 건 PCB 작업 한 거 밖에 없는 거 같다. 이리저리 만지다 보니 한달이 넘게 흘렀고, 흐름을 놓쳐 집중을 못한 것도 문제 였다.
* 010v4 남은 일정 ㅡ
1. 알고리즘, 턴 시물레이션 2. TMS320F2808을 이용하여 하드웨어 제어하기 3. 보드 조립 할 보드 부품 구하기 4. 보드 조립 및 디버깅
 ( 0)  ( 0)
Yarmini
2007/06/22 02:44
2007/06/22 02:44
:: http://yarmini.com/blog/suneung/trackback/71
전체 96560 | 오늘 54
| 어제 109
|
|
|
|
|