2007년 12월 11일 화요일

TMS320F28335 Serial Boot 실패

간단하게 LED 점등 예제를 Flash 기반에서 작동 하도록 프로젝트를 구성한후

시리얼 부트로 버닝을 하여 테스트를 하려고 하였다.. 결과적으로 실패..

예전에 2808 시리얼 부트하던 방법으로 작업을 진행 하던 도중 최종적으로 SDFlash 에서

28335 시리얼 부팅을 위한 프로젝트 파일을 아직 제공을 않하고 있다는 사실을 알게 되었다.

28335 프로젝트 파일이 올라와 있길래 가능할 줄 알았는데 자세히 보니 XDS 계열의 JTAG Interface 만 지원하는 파일이였다.

내가 가지고 있는 JTAG 은 TDS 계열... 지원을 안한다.

한참동안 고생한게 헛짓으로 되었고..  이로 인하여 28335 플레쉬 버닝을 위한 방법을 고민해 보면...

다음과 같이 네가지 정동의 방법으로 요약된다.


1. TI 에서 Flash Plug-in 을 제공 해줄때까지 기다린다.

2. SpectrumDigital 에서 제공하는 SDFlash 의 시리얼 부트 프로젝트가 나올때까지 기다린다.

3. XDS 계열의 JTAG 을 어떻게든 공수하고 SDFlash 를 사용한다.

4. 가지고 있는 TDS JTAG 을 활용하여 TI에서 제공하는 28335용 Flash API 를 기반으로 Flash Downloader 를 개발한다.


1,2 방법은 기약없는 기다림이기 때문에 버린다.

금주내로 XDS 계열의 JTAG 공수를 시도해 보고 실패시 포기한다.

다음주가 되면 바로 4번을 실행에 옮긴다. -_-;;;


2007년 12월 6일 목요일

TMS320F28335 FPU 성능

싱크웍스 블로그에 TMS320F28335 FPU 성능에 관한 비교 분석이 포스팅 되었다.

관련글 : http://www.tms320blog.co.kr/f2833x/23

비슷한 실험을 한 후 정리하여 올릴라고 했는데 먼저 선수를 쳤군.. 아쉽다..

내일 학위논문 최종 심사가 끝나면 좀더 자세한 실험을 하여 정리해 보려고 한다.

FPU 성능은 기대 이상인거 같다.  테스트 코드는 다음과 같다고 한다.

float32 Original_fre = 0.01;
float32 Noise_frequency = 0.08;
float32 Noise_amplitude = 0.5;

for( n=0 ; n<N ; n++ )
{
Original_sig[n] = (500000*sin(2*pi*Original_fre*n) + 600000);
Noise[n] = (Noise_amplitude*cos(2*pi*Noise_frequency*n)+1);
Distorted_sig[n] = Original_sig[n] * Noise[n];
}

결과는


DSP 연산방법 MIN AVERAGE MAX
TMS320F28335 기본 C 코드이용 3997 5742 5961
Iqmath 사용 934 1194 1362
FPU 사용 179 181 182
TMS320F2812 기본 C 코드이용 3991 5736 5955
Iqmath 사용 934 1194 1362

 [ 표 ] TMS320F28335 VS TMS320F2812  부동 소수점 연산 CPU 사이클 측정 결과


IQmath 실행시간의 약 15% 의 실행시간만으로 연산 완료.  약 6.6배의 처리 속도라..

정말 괴물같은 녀석이다.


램에서의 구동, 플래쉬에서의 구동, 각종 최적화 옵션등의 실험을 해 볼 예정.

사진을 보니 싱크웍스 28335 보드의 개발도 완료된듯 싶다.  소켓타입이고 쿨러까지 달려있는...

UMD 모듈 나오기 전까지는 사용하기 참 거시기 하겠다.  소형 모듈 제작도 고민중.


아.. 논문심사 지긋지긋하다..


 


2007년 11월 25일 일요일

[Scrap] 개발자 시선으로 본「로봇 청소기」

개발자 시선으로 본「로봇 청소기」

김성우 (필자) ( 마이크로소프트웨어 )   2004/09/27
진공 청소기의 원리는 1분에 1만 번 이상 팬을 강하게 회전시켜 호스 속의 공기를 밖으로 뽑아내어서 청소기 내부를 진공 상태로 만드는 것이다. 기계 안의 압력이 줄어들면 흡입력이 생기는데, 대기의 무게 때문에 생기는 바깥쪽의 공기 압력은 기계 안의 압력보다 높게 되고 이로 인해 먼지가 공기와 함께 대기압이 낮은 호스쪽으로 빨려 들어가게 된다.

<그림 1> 진공 청소기의 원리

상용화에 성공한 트릴로바이트
세계 최초로 상용화에 성공한 로봇 청소기는 스웨덴의 가전사인 일렉트로룩스의 가정용 로봇 진공 청소기 ‘트릴로바이트(Trilobite)’이다. 이름 그대로 삼엽충처럼 생긴 이 로봇은 현재 230만원 가량에 국내에서 팔리고 있다.

<화면 1> 세실브스의 최초의 진공 청소기

 
<화면 2> 트릴로바이트   <화면 3> 충전기로 돌아가는 트릴로바이트

이것은 앞부분에 달린 9개의 초음파 센서를 이용해 장애물을 피하도록 되어 있다. 청소를 시작하면 우선 가장자리를 모두 돌아 공간을 인식한 후 전체를 빠짐없이 돌면서 청소한다. 정말 멋진 기능은 청소가 다 끝나면 충전기로 자동으로 돌아가 충전을 스스로 한다는 것이다. 여러 개의 모터를 사용하기 때문에 배터리는 금방 바닥을 드러내버린다. 로봇 청소기의 최대 난제는 단연 배터리 문제를 해결하는 것인데 트릴로바이트는 충전소로 자동 회귀함으로써 이 문제를 해결하고 있다. 그러나 일반 청소기의 10배나 되는 가격이 최대 단점이다. 그리고 청소하지 않을 곳을 마그네틱 선으로 띠를 둘러야 한다는 것이 조금 귀찮고 미관상 좋지 않은 것도 이후 소개된 로봇 청소기들에 비하면 단점이다.

트릴로바이트가 국내 백화점 등을 통해 실제 판매된 이후 사회에 준 충격은 적지 않았다. 일부는 청소가 잘 되겠냐며 반신반의했지만, 생각보다 만족스럽다는 소문이 심심치 않게 들려왔다. 이에 국내 가전사들과 여러 기업들이 몇 십 억을 들여 개발을 시작했으며 200만원대의 경쟁력 있는 제품을 내놓겠다는 홍보 기사가 자주 등장했다.

국내 최초 로봇 청소기
그런데 곧 출시할 거라는 말이 나온 지 한참 지났는데 상용화된 제품은 LG전자의 로보킹 한대 뿐이다. 로보킹의 개발을 위해 LG는 3년 동안 60억원 이상의 개발 비용과 30여명의 연구 인력을 투입했으며, 총 65건의 특허를 출원 중에 있고 추가로 35건을 출원할 예정이라고 한다. 하지만 소비자가격 249만원이라고 하니 놀랍기 그지없다.

LG는 홈네트워크 및 보안 기능을 추가해 가정에서의 역할을 극대화한 2세대 로봇 청소기를 개발, 올해 중에 출시할 계획이라고 한다. 올해 출시할 2세대 청소기는 휴대폰, PDA 등의 모바일 기기 및 PC와 연계해 집안의 동정을 살필 수 있는 ‘보안 기능’과 이동이 가능한 ‘홈네트워크 서버 기능’ 등을 추가, 기존 홈네트워크 시스템을 한 단계 더 발전시키는 한편 이외에도 ‘바둑판식 청소 기능’과 ‘공기정화 기능’을 부가 기능으로 포함하게 된다고 한다. IT 강국답게 네트워크와 PC를 접목해 경쟁력을 갖추겠다고 하는 포부는 높이 사지만 60억원이나 들여 개발된 1세대 로보킹이 몇 십대 밖에 팔리지 않았다는 후문이 들릴 정도로 저조한 판매량을 기록한 것이다.

로보킹의 기본적인 원리는 일반적인 진공 청소기와 다르지 않으나 브러시를 양쪽에서 올려 필터 쪽으로 흡입하는 방식을 택하고 있다. 원리는 <화면 5>와 같다. 로보킹은 일반 모드, 즉석 모드, 간편 모드의 3가지 청소 모드를 가지고 있다. 일반 모드는 일반적인 청소 형태로, 벽면을 따라(Wall Following) 청소하면서 청소 영역고k 시간을 계산한 다음 주어진 영역을 청소한다. 즉석 모드는 사용자가 방의 크기(Large, Middle, Small)를 지정하면 ‘Wall Following’ 없이 즉시 청소를 시작한다. 간편모드는 과자 부스러기를 흘린 경우처럼 집중적으로 청소할 부분이 있는 경우 반경 1m의 공간을 회전하면서 청소하도록 되어 있다.

 
<화면 4> LG전자의 로보킹   <화면 5> 사이킹의 흡입 구조

 
<화면 6> 일반 모드   <화면 7> 즉석 모드

<화면 8> 간편 모드

이외에 정음 모드가 있는데 일반적으로 진공 청소기는 진공을 만들기 위한 강한 모터를 사용하기 때문에 매우 시끄러운 소음을 낸다. 로봇 청소기도 예외가 아니어서 이 모터 소리가 꽤 시끄럽다. 이 소리를 죽이고 조용히 청소할 수 있는 정음 모드는 칭찬할 만하다. 또한 트릴로바이트와 같이 배터리가 떨어지면 충전소로 회귀할 수 있는 기능도 장점이자 특징이다.

로봇 청소기는 침대 밑이나 장식장 밑 등의 일반 청소기로 청소가 힘들거나 불가능한 곳에서 발군의 청소력을 발휘한다. 그렇지만 큰 머리는 침대 밑에 들어갈 수 없게 만든다. 로보킹이라는 이름에서 주는 컨셉처럼 로봇의 머리를 만들고자 마징가 Z나 메칸더 V를 컨셉으로 디자인을 한 듯한데 높은 머리는 로봇 청소기만의 장점을 살릴 수가 없다.

가격과 성능을 모두 만족시킨 룸바
필자가 미국 횟k인 아이로봇의 ‘룸바(Roomba)’에 대해 들은 것은 트릴로바이트가 언론사를 타고 백화점의 가전제품란에서 움직이는 것을 본 직후 30만원대의 로봇 청소기가 있다는 직장동료를 통해서였다. 허리가 아픈 어머니의 생신 선물로 드리기 위해 30만원 가량을 주고 주문했는데 환갑이 넘으신 어머니가 매우 만족해 한다는 것이었다. 환갑이 넘은 주부도 만족했다는 이 대목에서 대박일 것이라는 느낌이 왔다. 대표적 진공 청소기인 LG 사이킹의 최고급 모델이 30만원 안팎인 것을 감안하면 그리 비싸다는 느낌은 아니었다.

마침 필자의 가족이 이사를 가게 되었고 이사 기념으로 어머니에게 룸바를 선물했다. 얼리어댑터(http://www.earlyadoptor.co.kr)에서 공동구매가 28만원에 구매를 했다. 트릴로바이트와 로보킹이 200~250만원 가량 하는 것을 감안했을 때 포장지를 뜯는 순간까지도 믿을 수 있는 건가 하는 생각이 뇌리에서 떠나지 않았다. 얼리어댑터 사이트 자체에 대한 신뢰도와 정성어린 리뷰 그리고 이미 사용해본 얼리어댑터들의 리플을 보고 결제 버튼을 눌렀다.

<화면 9> 집안의 귀여움을 독차지하고 있는 로봇 청소기 룸바

포장지를 뜯고 충전시킨 후 동작시켜 본 룸바는 정말 물건(?)이었다. 28만원 짜리라고는 믿어지지 않을 정도로 방과 거실 구석구석을 누비며 성실히 청소해 주었다. 그냥 돌아다니는 건 아닌가라는 생각도 잠시 했으나 청소를 마쳤다는 소리 후에 본 꽉찬 먼지통은 정말 놀라웠다. 룸바만의 최고 장점은 낮은 높이로 인해 침대 밑이나 장식장 밑을 청소할 수 있다는 것이다.

이런 ‘쓸만한 청소기’의 원리를 알아보자. 우선 룸바는 다른 로봇 청소기에 비해 거의 1/10 가격을 자랑한다. 전문지에서는 로봇 청소기 시장이 없다는 기사가 실리지만 정확히 말하면 룸바에 비해 다른 청소기가 가격 경쟁력이 없는 것이다. 안 팔리는 게 당연하다. 다른 로봇 청소기는 기본적으로 공간을 인식하는 센서가 달려 있다. 그리고 저장된 공간을 분석해서 청소 명령을 내리는 복잡한 단계를 거치게 된다. 생각만 해도 환상적인 제어가 들어가야 한다. 비싸지는 게 당연하다. 룸바는 전자벽이 있긴 있지만 이건 예외 사항이므로 공간을 인식하기 위한 센서는 없다고 봐도 좋다. 관찰 결과 룸바는 2가지 청소 알고리즘을 배합해 청소를 한다.

<그림 2> 룸바의 청소 궤적

우선 스핀 모드는 처음 청소를 시작할 때 청소할 곳의 가운데에 룸바를 놓고 방크기 버튼을 누르면 청소를 시작하는데 제자리에서 점점 원을 크게 그려 가며 청소를 시작한다(<그림 2>의 1번). 어느 정도 돌았다 싶으면 벽을 향해 돌진한다(<그림 2>의 2번). 벽에 부딪치면 시계방향으로 돌면서 계속 앞으로 전진한다(<그림 2>의 3번). 이런 식으로 벽 가장 자리를 구석구석 청소한다. 일정 시간이 지나면 우수법으로 벽을 부딪치던 반대 왼쪽으로 전진하고 다시 제자리에서 빙글빙글 점차 크게 돌며 청소를 한다. 벽을 인식하는 방법도 매우 간단하다.

룸바 앞에 범퍼가 있어 오른쪽으로 부딪치면 범퍼 뒤에 오른쪽 스위치를 누르게 되어 오른쪽에 벽이 있음을 알고, 범퍼가 왼쪽으로 부딪치면 범퍼 뒤에 왼쪽 스위치가 눌리게 되어 왼쪽에 벽이 있음을 알게 된다(<화면 10>). 그런데 확인 결과 왼쪽 벽과 오른쪽 벽을 구분할 필요가 없다. 1번으로 신호가 들어오건 2번으로 신호가 들어오건 벽에 부딪히면 무조건 왼쪽으로 30도 가량 회전한 뒤에 약간 오른쪽 완만한 원을 그리며 10cm 정도 앞으로 간 후 직진한다. 아주 단순한 알고리즘이지만 어느 구석진 곳에 들어가도 빠져 나올 수 있도록 되어 있다.

<화면 10> 룸바의 벽인식

<그림 3> 룸바 알고리즘

룸바에는 총 5개의 모터가 쓰이는 것으로 추측된다. 바퀴 구동을 위해 왼쪽 바퀴와 오른쪽 바퀴에 스텝 모터가 각각 하나씩 두 개가 달려 있다. 머리카락이나 과자 부스러기 등의 잔쓰레기를 쓰는 빗자루를 돌리는 모터와 먼지를 흡입하는 진공을 만들어주는 모터 그리고 둥글게 생긴 모양의 한계상 사각의 모서리 청소가 불가능한데 이 사각의 모서리의 먼지를 안으로 끌어다주는 회전 브러시 모터까지 총 5개이다.

<화면 11> 룸바의 뒷모습

일반 진공 청소기의 경우 콘센트를 통해 전원을 공급받기 때문에 커다란 모터를 써서 강한 흡입을 만들어낼 수 있지만 로봇 청소기의 경우는 배터리를 이용하기 때문에 그만큼 강한 모터를 사용할 수 없다. 그래서 룸바는 빗자루 질과 먼지 처리 두가지 방식을 사용한다. 우선 앞단에서 빗자루가 빙글빙글 돌면서(<그림 4>의 1) 머리카락 과자 부스러기 같은 비교적 입자가 굵은 쓰레기를 쓸어 담는다(<그림 4>의 2). 입자가 작은 먼지는 진공으로 빨아들인다(<그림 4의 3).

진공으로 빨아들인 먼지 바람을 <그림 4>의 4의 필터를 통과시킴으로써 먼지를 걸러내도록 되어 있다. <그림 4>의 측면도에서는 공기흡입 모터가 나오지 않았는데 <그림 13>의 공기 흡입구 부분에 작은 모터가 달려 있다. <화면 11>의 3과 4는 <그림 1>의 원리가 그대로 적용되어 있다. 큰 입자는 빗자루질로 청소를 하므로 상대적으로 작은 입자를 빨아들일 수 있는 작은 공기압만을 만들면 되기 때문에 작은 모터로도 청소 효과를 낸다. 작은 모터로 진공 효과를 내기 위해 진공 흡입 부분의 통로가 매우 얇게 되어 있다.

<그림 4> 룸바 청소의 원리

이렇게 앞단에서 큰 쓰레기를 거르고 뒷단에서 먼지를 거르는 2단 방식으로 청소하면서 <그림 3>의 알고리즘을 20~30분 정도 반복하면 구석구석 깨끗이 청소가 된다. <그림 3>의 룸바의 방향을 정하는 알고리즘 중에 30도 좌로 회전하고 완만한 각도로 우측 앞으로 가는 부분은 구석진 곳에 들어가 우측 부딪침이 많은 경우 좌회전을 하기도 하는데 골고루 청소하기 위해 어느 정도 무질서도를 넣은 듯하다. 처음 본 사람들은 “뭐 이런 장난감 같은 게 청소가 얼마나 되겠어”라고 하지만 이 무질서 높은 알고리즘으로 20~30분 작동시키면 대부분의 구역을 구석구석 돌게 되고 먼지 집진기에 수북이 쌓인 먼지를 보면 누구나 감탄을 금하지 못한다.

<화면 11>을 보면 알겠지만 바퀴가 코란도 같은 4륜 구동차를 오프로드 머신으로 튜닝할 때 쓰는 머슬 타이어를 줄여 놓은 모양이어서 수건 카페트 등의 어지간한 장애물은 막힘없이 지나가며, 몸체가 지면에서 1.5cm 가량 떨어져 있어 일반 아파트나 빌라 등의 턱은 가볍게 넘어다닌다. 범퍼 좌우의 하단에 센서가 있는데 낭떠러지를 인식하는 센서로 보인다. 문을 닫아 두지 않아도 밖으로 나가지 않고 안쪽으로 돌아와 청소하는 것을 보면 기특하기까지 하다.

마이크로 마우스의 미로 찾기 알고리즘  
◆ 좌수법
좌수법은 말 그대로 왼손으로 왼쪽 벽을 짚고 따라가는 방법이다. 갈림길에 이르거나 정면에 벽이 있을 경우 최우선 순위는 좌회전이며 2순위는 직진, 3순위는 우회전, 4순위는 U턴이 된다. 이 알고리즘은 매우 간단히 구현할 수 있다. 좌수법은 어떤 미로든지 탈출은 가능하지만 마이크로 마우스 대회의 미로같이 중앙에 목적지가 있는 경우 도착하지 못할 수 있다. 목적지를 둘러싼 벽이 최외각의 벽과 접속해 있지 않은 경우에는 종점에 이를 수 없기 때문에 실전에서는 쓰이지 않는 알고리즘이다.

<그림 1> 좌수법에 의한 미로 찾기

◆ 확장 좌수법
확장 좌수법은 좌수법을 보완해 반드시 목적지에 도달할 수 있도록 개선한 알고리즘이다. 한 번 갔던 블럭은 다시 가지 않게 함으로써 무한 순환에 빠지지 않도록 하는 것이 핵심이다. 그러나 무조건 한 번 갔던 블럭에 못 들어가게 한다면 어느 곳으로도 움직이지 못하는 경우가 생기기 때문에 블럭을 빠져나갈 때의 방향을 기억해 두었다가 진입 방향과 탈출 방향이 반대인 경우에는 진입을 허용해야 한다.

<그림 2> 확장 좌수법에 의한 미로 찾기

이 알고리즘은 구현 방법은 각각의 블럭에 대응하는 변수를 만든 후, 미로를 탐색하기 전에 이 변수들을 가보지 않았음을 뜻하는 임의의 수로 초기화한다. 이 변수는 블럭을 빠져나갈 때마다 그 탈출 방향(동서남북)으로 바꿔준다. 주행시 회전 방향의 우선순위는 좌수법과 같으나, 진입하려는 블럭이 이미 갔던 블럭이라면 진입 방향과 그 블럭의 탈출 방향을 비교해 정반대 방향이면 진입하고 그렇지 않으면 다음 순위의 블럭에 대해 다시 반복한다. 확장 좌수법은 마이크로 마우스 미로찾기의 가장 기본이 되는 알고리즘이다.

우수법과 좌수법은 이론상 차이가 없으나 실전에서는 좌수법이 선호된다. 룸바는 좌수법이 아닌 우수법을 사용하고 있다. 우수법만을 사용하면 가장자리만 청소되지 않기 때문에 일정 시간마다 한번씩 스핀 모드로 작동하며 위치를 흩어놓기 때문에 이를 방지하고 있다. 일종의 확장 우수법인 셈이다.

단순 명료함의 강력함
필자가 다니던 대학교에서 가장 허름한 건물인 구질구질한 공학관 꼭대기 5층 가장 구석, 마이크로 마우스를 전문으로 만들던 H학회가 있었다. 이들은 실력이 엄청나서 당시 국내 대회는 물론 일본까지 진출해 우승을 휩쓸고 있었다. 이 학회 출신 OB들이 1998년 로봇 월드컵에서 우승할 정도니 그 기세와 위용이 대단했다.

이런 슈퍼스타 바로 옆방을 쓰고 있던 필자의 학회는 전산실이나 지키며 윈도우나 설치하는 그냥 그런 모임으로 취급받는 게 당연했다. 1998년 IMF가 터지고 학회의 활로를 모색하던 중 우승은 아니어도 마이크로 마우스가 뭔지 만들어 보자는 오기 반 호기심 반으로 직접 마이크로 마우스를 만들어 보기로 했다. 수소문해서 회로도를 구하고 청계천에서 바퀴 깎고 스텝 모터 구매하고 어느 정도 틀이 잡혔을 때, 마이크로 마우스에 대한 혁신적인 아이디어가 하나 떠올랐다.

필자가 생각한 것은 카메라를 마이크로 마우스 위에 달고 출발하기 전 미로를 인식해 최단거리를 계산한 뒤에 시행착오 없이 단번에 목표지점에 가는 방식이었다. 제작에 들어가기 전에 H학회에 소속되어 있는 동기생에게 미로를 영상으로 인식해서 최단거리를 재면 어떻겠냐고 슬며시 물어 보았다. 그 질문에 대해 생각할 가치도 없다는 듯이 바로 내뱉은 대답은 힘들다는 것이었다. 이미 그런 시도들은 있었지만 오차율이 크고 장비들이 무겁기 때문에 실제 속도가 나지 않아서 실전에서는 사용하지 않는다고 했다.

28만원 짜리 룸바와 200만원대의 다른 로봇 청소기를 보면 이때의 에피소드가 생각난다. 멋진 알고리즘이 이상적이지만 실제 필드에서는 경쟁력이 없을 수 있다. 물론 그 시도가 더 멋진 것이 나오기 위한 발판이 될 수는 있지만 현실성과 사용자들의 시장을 잘 읽어야 한다는 것이다.

다른 청소기에 비해 룸바의 칭찬을 많이 했는데 그것은 구매가 가능한 가격이기 때문이다. 일반 청소기와 비교해도 가격 경쟁력이 있다. 최근에는 리모콘이 달린 룸바 프로엘리트 버전이 출시됐다. 색깔도 회색에서 자보색으로 무척이나 고급스럽다. 필자가 구매할 당시 공동 구매가가 28만원이었지만 지금은 오히려 가격이 많이 올라 인터넷 쇼핑몰 등에서 40만원 이상으로 팔리고 있다.

룸바의 최대 단점은 배터리 문제에 속수무책이라는 것이다. 최초 구입시 1시간 가량은 가던 것이 6개월 가량 사용한 현재는 20분밖에는 사용할 수가 없다. 이래서야 방 하나 청소하기 전에 배터리가 바닥을 드러낸다. 이 가격에 충전기로 회귀하는 기능을 기대할 수는 없고 8만원 가량하는 새 니켈망간 배터리를 사야 하는지 심각히 고려 중이다. 6개월마다 8만원씩 들어가는 유지비가 룸바의 최대 단점이자 해결해야 할 과제이다. 저렴하게 자동 충전될 수 있는 시스템을 한번 기다려 보자.

룸바의 경우 iRobot사로부터 자료를 받은 것도 아니고 국내 딜러를 통해 자료를 받은 것도 아니며 관찰과 직접 분해해서 얻은 내용들이라 완벽하지는 않을 수 있다. 독자들이나 관련 분야에 있는 분들의 정정이나 추가 사항이 있어 알려주면 정정, 보강하도록 하겠다. @

2007년 11월 23일 금요일

2007 전일본 대회 자료 공유


FTP IP : 161.122.103.60
ID : microrobot
PW : japan2007

제가 촬영하였던 동영상과 사진을 올려 놓았습니다.

시간 관계상 동영상의 경우 고압축 코덱을 사용하지 않았습니다.

자료의 용량은 대략 3 GB 정도 됩니다. ^^;;

기다리셨던 분들 받아가시기 바래요. 

그리고 가지고 계신 자료의 업로드도 부탁드리겠습니다.

트래픽 눈치 보이는 연구실 컴퓨터 이므로 일시적으로만 열어 두겠습니다.

받아가시는 분들 덧글 남겨 놓으시면 참고할께요..

후기등도 곧 올리도록 하겠습니다.



2007년 11월 21일 수요일

모터 콜렉션

사용자 삽입 이미지

Maxon EC 16
Maxon RE-max 17
Maxon RE 6
Maxon RE 10
Maxon RE 16
Minimotor 1724
Minimotor 2224


준비는 끝났다.. -_-;;

요즘 Minimotor 1717 이 무지 끌리기는 한데... 흠...

다 만들수 있을까... ㅠㅠ

MICROMOUSE 2007 (THE 28th ALL JAPAN MICROMOUSE CONTEST)

사용자 삽입 이미지

본선 성적 7위

특별상 수상

2007년 11월 8일 목요일

Volocity PID Controller 재설계

사용자 삽입 이미지

예전부터 찜찜하였던 속도 제어기를 다시 설계 하였다.  예전에 포스팅 했던 QEP 초기화 관련 설정으로 인하여

임펄스성 노이즈 문제도 사라져 있었다.  필터 등 몇몇 꼼수들을 제거하고 전형적인 PID 제어기를 구현 하였으며

약 한두시간 정도의 Try & Error (노가다) 를 통하여 게인값을 구한 후 위와 같은 속도 프로파일을 얻게 되었다.

썩 맘에 들지는 않으나 지금까지의 프로파일중 가장 그럴 듯 한 모양을 띄고 있다. 

2007년 11월 1일 목요일

[20071102] 연구실에서...

사용자 삽입 이미지


그리 힘들어 보이지는 않는구만.



Nikon D70 + Nikkor AF 50mm F/1.8D


2007년 10월 28일 일요일

TMS320F28335 LED 점등 성공



어찌어찌 개발환경 구축을 마무리 하고 LED 점등까지 성공 하였다.

TI 에서 제공하는 예제를 컴파일 하여 JTAG 으로 다운로드 한 후 테스트 하였고

소비 전류를 확인해 보니 LED 점등시 319~324mA 전류소모가 있었다..

생각보다 밥을 너무 많이 먹어서 설정 부분을 확인해 보니 모든 주변장치가 활성화 되어 있음.

사용하는 Timer0 만 살려놓고 다시 확인해 보니 229~235mA 의 전류 소모를 보인다.

다른 28x 계열과 1:1 비교를 해보지는 않았지만 느낌상 더 많은 전력 소모를 보이는것 같다.

심각하게 고려해 봐야 할 문제. 

싱크웍스 블로그쪽에 보니 28335 모듈은 176pin 소켓에 방열 쿨러 까지 장착 한다고 하는 듯..

DSP 발열도 만만치 않을 듯 싶다.


생각보다 삽질이 많다.  개발환경이 여간 깐깐한게 아니다..

방금 알아낸 또하나의 사실.. 아직까지 TI 에서 제공하는 CCS용 2833x Flash Plugin 이 없다..

완전 안습... ㅠ.ㅠ SDFlash 에서 2833x 용 RS-232 Interface 를 지원 하는지도 확실치 않다..

Flash API 까지 지원하면서 도대체 무슨 시츄에이션인지...

짬날때 개발환경 구축에 관한 메뉴얼을 작성해야겠다.


TMS320F28335 개발환경 Update

기존 CCS 3.3 에서 FPU 관련 옵션이 먹통 이었던 문제를 해결하기 위하여 관련 문서를 찾아 보았다.

결론은 예상했던 대로 283x 출시 이후의 CCS 가 필요하다는 사실을 알게 되었다는 것. 

기존에 가지고 있던 CCS 3.3 의 버젼이 3.3.38 이었고  밤새 다운로드 받은 평가판의 버젼을 살펴보니 역시 3.3.38 이었다. -_-;;;

역시 컴파일 안됨.

혹시나 하여 TI 의 CCS Updates 항복을 확인해 보았는데 새로운 버전의 CCS 를 다운받을 수 있었다.

사실 이 부분은 CCS 정품 사용자가 등록을 한 후 사용 할 수 있는 부분인데 예전에 정품 등록 이후에

접근이 안되는 문제가 있었었다. 내 시리얼 번호가 유출되었나보다 하고 까맣게 잊고 있다가

오늘에서야 다시 접속을 해보니 제대로 된다.. -_-;;

이곳에 올라와 있는 자료는 CCS V3.3.57 이고 F283xx 를 지원한다는 설명이 붙어 있다. 

아마도 FPU 관련 옵션이 활성화 되어 있을 듯 하다. 다만 내가 등록하였던 CCS 정품은 플랜티넘 버젼이 아니고

C2000 전용 버전이기 때문에 다운로드 받는 버젼 역시 C2000 전용 CCS 이다.

또한 "F283xx Chip Support Package" 라는 자료가 있는데 CCS Setup 에서 관련 항목의 추가 인 듯 싶다. 

기존 CCS 설치 해 보았더니 CCS Setup 에서 283xx 항목이 나오는 것을 확인 할 수 있었다.  (하지만 옵션 항목은 없다.)

가지고 있는 JTAG 은 3rd party 의 제품(Wintech Digital 사의 TDS510)이기 때문에 드라이버 업데이트를 확인해 보았더니

CCS 3.3 용 드라이버가 업데이트 되어 있었다.  위 세개의 자료를 다운로드 받고 있으며 이후 컴파일러 관련 개발환경 구축은

어느정도 마무리 될 듯 싶다.  CCS 다운로드가 오래 걸리므로 역시 오늘은 여기까지.


이젠 논문작성 모드다.  Dr. Yoon 의 입국 날짜가 다가온다....  ㅎㄷㄷ  ㅠ.ㅠ

2007년 10월 27일 토요일

TMS320F28335 Test Board 진행사항


1.  RC 시정수를 이용한 리셋회로를 달아 주었고 오실로 스코프를 이용하여 와치독 리셋이 주기적으로 발생함을 확인 하였다.

2. JTAG Interface 를 위한 커넥터를 달고 연결 하였다.  CCS 3.3 에서 커넥션이 문제없이 이루어 짐을 확인 하였다.

3.  예제파일을 다운로드 받아보기 위하여 부트모드를 설정 할 수 있도록 점퍼용 헤더를 달아 주었다.  부트모드 선택용 GPIO 는 내부 풀업이 되어 있기 때문에 로직 변경시 그라운드 처리만 해 주면 된다.  예제 파일은 SARAM 구동용 이기 때문에 SARAM 부팅을 할 수 있도록 GPIO84~87 까지의 셀렉트 핀을 해당 사항에 맞도록 처리하였다.

4. CCS 3.3 에서 예제 파일을 컴파일 하였다.  혹시나 하던 문제점이 여지없이 들어났다.  28335에 탑재된 FPU 를 사용하기 위해서는 컴파일 옵션에 "--float_support=fpu32" 옵션을 추가해 주어야 하는데 잘못된 옵션으로 인식한다.  출력되는 메세지는 다음과 같다.  

WARNING: invalid compiler option --float_support=fpu32 (ignored)

아직까지는 해결방법을 찾지 못하였다.  최신 컴파일러에서도 같은 현상이 나타나는지 알아보기 위하여 TI 홈페이지에서 CCS 평가판을 다운로드 받고 있다.  시간이 많이 걸리므로 오늘은 여기까지.

2007년 10월 26일 금요일

TMS320F28335 Test Borad

사용자 삽입 이미지


변환기판에 TMX320F28335 를 부착하고, 세개의 Regulator 를 달았다.

Clock Out은 30MHz 오실레이터 사용 시 기본 3.75Mhz 이 출력 되고 24MHz 크리스탈 사용시 3MHz 가 출력된다.

전류 소모는 30MHz 사용시 약 88mA, 24MHz 사용시 약 85mA 정도.

Regulator 와 LED 에서 약 33mA 정도를 소모 하므로 DSP 는 55 ~ 52mA 정도 소모 함.

JTAG 연결을 시도 해 보아야겠다.

TMS320F28335 DOC

Technical Documents
Back to TopDatasheets
TMS320F28332, TMS320F28334, TMS320F28335 Digital Signal Controllers (DSCs) (Rev. B) (tms320f28335.pdf, 2241 KB)
12 Oct 2007 Download
TMS320x2833x Digital Signal Controllers Silicon Errata (sprz272.pdf, 113 KB)
09 Sep 2007 Download
Back to TopApplication Notes
Configuring Source of Multiple ePWM Trip-Zone Events (spraar4.htm, 9 KB)
25 Oct 2007 Abstract
Getting Started With TMS320C28x Digital Signal Controllers (Rev. A) (spraam0a.htm, 9 KB)
25 Oct 2007 Abstract
TMS320x280x to TMS320x2833x Migration Overview (spraaq8.htm, 9 KB)
09 Oct 2007 Abstract
TMS320x281x to TMS320x2833x Migration Overview (spraaq7.htm, 9 KB)
19 Sep 2007 Abstract
Custom Bootloader Options via One-Time Programmable (OTP) Memory (spraaq3.htm, 9 KB)
18 Sep 2007 Abstract
An Overview of Designing Analog Interface With TM320F28xx/28xxx DSCs (spraap6.htm, 9 KB)
13 Aug 2007 Abstract
Interfacing SD/MMC Cards With TMS320F28xxx DSCs (spraao7.htm, 9 KB)
26 Jul 2007 Abstract
C28x FPU Primer (spraan9.htm, 8 KB)
08 Jun 2007 Abstract
TMS320280x and TMS320F2801x ADC Calibration (Rev. A) (spraad8a.htm, 9 KB)
06 Mar 2007 Abstract
Using Enhanced Pulse Width Modulator (ePWM) Module for 0-100% Duty Cycle Control (spraai1.htm, 8 KB)
20 Dec 2006 Abstract
Using the eQEP Module in TMS320x280x as a Dedicated Capture (spraah1.htm, 8 KB)
30 Nov 2006 Abstract
TMS320x281x to TMS320x280x/2801x/2804x Migration Overview (Rev. A) (spraa58a.htm, 9 KB)
05 Oct 2006 Abstract
Programming TMS320x28xx and 28xxx Peripherals in C/C++ (Rev. A) (spraa85a.htm, 8 KB)
05 Oct 2006 Abstract
TMS320F280x DSC USB Connectivity Using TUSB3410 USB-to-UART Bridge Chip (spraa91.htm, 9 KB)
26 May 2006 Abstract
Power Line Communication for Lighting Apps using BPSK w/ a Single DSP Controller (spraad5.htm, 9 KB)
07 Mar 2006 Abstract
Using PWM Output as a Digital-to-Analog Converter on a TMS320F280x (spraa88.htm, 9 KB)
13 Feb 2006 Abstract
Running an Application from Internal Flash Memory on the TMS320F28xx DSP (Rev. F) (spra958f.htm, 9 KB)
31 Jan 2006 Abstract
Online Stack Overflow Detection on the TMS320C28x DSP (spra820.htm, 9 KB)
02 May 2003 Abstract
An Easy Way of Creating a C-callable Assembly Function for the TMS320C28x DSP (spra806.htm, 8 KB)
30 Oct 2001 Abstract
View Application Notes for TMS320F283x Controllers
Back to TopUser Guides
TMS320x2833x External Interface (XINTF) Reference Guide (Rev. A) (spru949a.htm, 8 KB)
25 Oct 2007 Abstract
TMS320x2833x Multichannel Buffered Serial Port (McBSP) Reference Guide (Rev. A) (sprufb7a.htm, 8 KB)
25 Oct 2007 Abstract
TMS320x2833x Analog-to-Digital Converter (ADC) Module Reference Guide (Rev. A) (spru812a.htm, 9 KB)
12 Oct 2007 Abstract
TMS320x28xx, 28xxx Enhanced Capture (ECAP) Module Reference Guide (Rev. B) (spru807b.pdf, 296 KB)
12 Oct 2007 Download
TMS320x28xx, 28xxx Enhanced Pulse Width Modulator (ePWM) Module (Rev. D) (spru791d.htm, 8 KB)
04 Oct 2007 Abstract
TMS320x28xx, 28xxx DSP (Rev. E) (spru566e.htm, 8 KB)
01 Oct 2007 Abstract
TMS320x28xx, 28xxx Enhanced Quadrature Encoder Pulse (eQEP) Module RG (Rev. B) (spru790b.htm, 9 KB)
10 Sep 2007 Abstract
TMS320x2833x System Control and Interrupts Reference Guide (sprufb0.htm, 9 KB)
10 Sep 2007 Abstract
TMS320x2833x Boot ROM Reference Guide (spru963.htm, 9 KB)
10 Sep 2007 Abstract
TMS320x2833x Direct Memory Access (DMA) Reference Guide (sprufb8.htm, 8 KB)
07 Sep 2007 Abstract
TMS320x28xx, 28xxx High-Resolution Pulse Width Modulator (HRPWM) Reference Guide (Rev. B) (spru924b.htm, 8 KB)
07 Sep 2007 Abstract
TMS320C28x Floating Point Unit and Instruction Set Reference Guide (sprueo2.htm, 8 KB)
03 Jun 2007 Abstract
TMS320x28x, 28xxx Serial Peripheral Interface (SPI) Reference Guide (Rev. D) (spru059d.htm, 8 KB)
30 Nov 2006 Abstract
TMS320x28xx, 28xxx Enhanced Controller Area Network (eCAN) Reference Guide (Rev. E) (spru074e.htm, 9 KB)
03 Oct 2006 Abstract
TMS320C28x DSP/BIOS 5.31 Application Programming Interface (API) Reference Guide (Rev. H) (spru625h.htm, 9 KB)
30 Sep 2006 Abstract
TMS320C28x Assembly Language Tools User's Guide (Rev. B) (spru513b.htm, 8 KB)
01 Mar 2006 Abstract
TMS320x28xx, 28xxx Inter-Integrated Circuit (I2C) Reference Guide (Rev. A) (spru721a.htm, 9 KB)
31 Oct 2005 Abstract
TMS320C28x Optimizing C/C++ Compiler User's Guide (Rev. B) (spru514b.htm, 9 KB)
19 Oct 2005 Abstract
TMS320x28xx, 28xxx Serial Communications Interface (SCI) Reference Guide (Rev. B) (spru051b.htm, 9 KB)
04 Nov 2004 Abstract
TMS320C28x DSP CPU and Instruction Set Reference Guide (Rev. D) (spru430d.htm, 8 KB)
31 Mar 2004 Abstract
TMS320C28x Instruction Set Simulator Technical Overview (Rev. A) (spru608a.pdf, 77 KB)
30 Nov 2002 Download
View User Guides for TMS320F283x Controllers
Back to TopMore Literature
TMS320C2000 Digital Signal Controllers Brochure (Rev. B) (sprb176b.pdf, 752 KB)
31 Jul 2007 Download
View More Literature for TMS320F283x Controllers

Tools & Software
Back to Top Name Part # Company Tool / Software Type
Code Composer Studio IDE CCSTUDIO Texas Instruments Code Composer Studio(TM) IDE
Dual Fiber Optic Serial Port Daughtercard for the Spectrum Digital F2812 eZdsp Link Research Daughter Cards
Dual RS-232 Serial Port Daughtercard for the F2812 eZdsp Development System Link Research Daughter Cards
Multi-Channel 14-bit, Precision Data Acquisition Daughtercard for the F2812 eZdsp Link Research Daughter Cards
TMS320F2833x reference design SPRC541 Texas Instruments Development Boards/EVMs
UPCC-2812 - Universal Power Converter Control HPE - High Power Engineering Development Boards/EVMs
MCK2812 DSP Motion Control Kit Technosoft Development Boards/EVMs
MCK2812 Kit C Pro Technosoft Development Boards/EVMs
Blackhawk™ LAN560 JTAG Emulator Blackhawk Emulators/Analyzers
Blackhawk™ PCI560 JTAG Emulator for TI DSPs Blackhawk Emulators/Analyzers
Blackhawk™ USB560 JTAG Emulator Blackhawk Emulators/Analyzers
Blackhawk™ USB560BP JTAG Emulator Blackhawk Emulators/Analyzers
JTAGjet Emulator for C2000 Signum Systems Emulators/Analyzers
JTAGjet USB 2.0 Emulator for TMS320 Signum Systems Emulators/Analyzers
XDS510PP PLUS JTAG Emulator Spectrum Digital, Inc. Emulators/Analyzers
XDS510USB JTAG Emulator Spectrum Digital, Inc. Emulators/Analyzers
XDS510USB PLUS JTAG Emulator Spectrum Digital, Inc. Emulators/Analyzers
TMS320F28335 eZdsp Starter Kit TMDXEZ28335 Texas Instruments Starter Kits
C2833x C/C++ Header Files and Peripheral Examples SPRC530 Texas Instruments Application Software
Download: TMS320F2833x Flash APIs (v1.01) (sprc539.zip, 686 KB )
14 Sep 2007 zip

2007년 10월 25일 목요일

지금.. 내 모습..

사용자 삽입 이미지

지금 나의 모습.

아직 젊다!!  아자!!!


Nikon D70 + Nikkor AF 50mm F/1.8D


2007년 10월 22일 월요일

2007 산업대 라인 트레이서 경연대회



COEX 에서 열린 산업대 라인트레이서 경연대회.

단국대 멤버 주행모습...

다들 블라인드 구간 때문에 안습 상황...

사용자 삽입 이미지

대회 마치고 참가자 단체 사진.


사용자 삽입 이미지

구조부분 우승한 로봇.

2위 3위 로봇은 기존에 많이 보았던 풍량형 주행이라 식상하였지만, 전방향 주행 가능한 이 로봇은

꽤 참신해 보였음.  하지만 저 좋은 스펙에 주행 능력은 정말 꽝...~  요놈 제어 한번 해보고 싶다.


대회 준비위 여러분, 참가자 여러분 수고하셨습니다.


2007년 10월 19일 금요일

TMX320F28335 입수

사용자 삽입 이미지

어찌어찌 하여 요녀석 입수에 성공을 했는데

같은날 싱크웍스에서도 판매를 하네요.. 쩝~

아.. 손가락이 근질근질.. ㅋㅋㅋ

2007년 10월 16일 화요일

로봇에 사용할 DSP 선택하기 [2편]

기억을 더듬어 보면.. 한 5,6년 전쯤의 일인거 같다.. Daum의 마사모 카페에서 정모 공지가 올라왔는데 장소는

경기대 였는지 경희대 였는지.. 수원쪽에 있는 학교 였었다.  당시 나는 196, 188, 296 을 사용해 장난감을 만들어

본 후 ARM 에 관심을 갖고 3410으로 마우스를 만들어보고 있었을 때였는 듯 싶다.  당시에 학교 소모임에 구축

되어 있는 개발환경은 8051과 196 뿐이었고, 배운게 8bit Micom 밖에 없었던 나는 DSP 의 개념조차 생소하였던

미숙아였다.  마우스에 대한 동경심만을 갖은 채... 주변에서 도움을 받을 수 있는 곳은 거의 전무 했었고

그나마 디동의 고전자료와 다음 마사모 회원님들이 간간히 알려주는 노하우 들은 나에게 있어서 사막의 오아시스

같은 존재였었다.  막상 정모에 참석을 하자니 참으로 뻘쭘하드라.  같이 가겠다는 녀석들은 모두다 빵꾸를

냈었고, 갈까말까 많은 고민 끝에 결국은 수원행 버스를 타게 된다.  어리버리 주삣쭈빗 정모장소에 들어선 나를..

꼭 평소에 알고 지내던 사람처럼 맞아 주셨던게 단국대 최윤근 님이었다.  강의실 문앞에서 회원들을 맞아주시고

악수까지 하며 인사를 건내주시던 윤근이형이 얼마나 고맙던지... ㅠㅠ

사진 및 대회장에서 멀찍이 떨어져서 구경하던 마우스를... 처음으로 코앞에서.. 그것도 풀미로 주행하는 모습을

보면서... 감격, 감격, 또 감격 하였고 몇년안에 저자리에 내가 서리라.. 모질게 마음을 다잡았던 자리였었다..

특히 아주대 아톰의 윤병민님께서 제작하신 '삽질만세' 의 주행은... 엄청난 충격이었다..


마우스의 친선경연이 끝난 후 옆 강의실로 자리를 옮겨 세미나를 진행 하였다.  (글을쓰다보니.. 2회 정모와..

3회 정모를 헤깔리고 있는거 같다...  -_-;;;;;  )  무튼.. 윤근형이 어렵게 섭외하여 모셔왔다는...

향후 내 마우스 인생에 있어서 은사님이신 단국대 MAZE의 Killer33 제작자이신 이상문님의 강의를 듣게 된다..

이때가 처음으로 DSP 라는 녀석의 존재를 어렴풋이 느끼게 된 순간이었을 것이다.. 상문형은 본인이 직접

코딩중인 소스를 보여주시면서 세미나를 진행 하셨고... 화면에 나와있는.. 소수(Floating Point)들의 향연이란...

놀라움과 동경의 대상이 되어버린 그 순간을 난 잊을 수 없다.



어찌어찌하여 몇달 후 모 집단에 소속하게 되면서 상문형과 인천대 마마의 후까시 제작자이신 김용현님을

사부님으로 모실 수 있는 인생일대 최고의 기회를 맏을 수 있게 되었다.  수십개월을 혼자서 맨딴에 헤딩하며

만들었던 마우스는 이미 오래전부터 한계에 부딛혀 꼼짝을 못하고 있는 상황이었기에 그 순간은...  희열..

그 자체로 받아들여졌다.

그렇게 시작된 나와 TMS320VC33...  단국대 MAZE의 전유물이라고 생각되었던 33 PCB 를 받게 되었고,

개발환경을 구축하고, 프로그래밍을 시작하게 된다. 

처음부터 난관이 많았다.  쌩 PCB 에 모든 소자를 직접 박아 넣는 과정을 처음으로 해보게 되었고, 33의 LQFP

패키지와 플래쉬용 PLCC to SMD 소켓.. 피치가 겁나게 좁은 여러 IC 등...  하도 떼었다 붙였다 하여 패턴 떨어진

PCB와, 다 되었다 싶어도 전원만 인가하면 타들어가는 IC 들...  과연 이 장벽을 넘을수 있을 것인가.. 포기 할

것인가 하는 고민속에 용현형은 원칩 DSP 로 가시겠다며 TMS320LF2406 으로 넘어가시고...  내 보드는 살아날

가망성이 없고...  결국 울상인 나를 불쌍히 여기사 상문형께서 완성품 33 보드를 하사해 주셨으니, 이제부터

본젹적인 시작.


TMS320VC33 은 TI 사에서 오래전에 개발한 고성능 부동소수점 연산장치 이다.  150 버젼과 120 버젼이 있는데

최대 동작주파수를 의미한다.  75 MIPS, 150 MFLOPS 의 연산속도를 내는.. 빠른 연산장치이다.  VC33 이전에

같은 라인업의 DSP 로써 V31 과 V32 가 있었고, 32는 좀 다르지만 33은 31의 Upgrade 된 버젼이라고 보면 된다.

때문에 처음 시작할 경우 33 관련 자료가 별로 없더라도, 31 같은 경우 국내에 관련 서적이 몇권 있으니 참고하면

많은 도움을 받을 수 있다.  31과 33의 가장 큰 차이점은 동작속도와 매모리 크기 정도라고 보면 되기 때문에

31관련 지식을 습득 후 33의 데이터쉬트 등을 보면서 그 차이점만 이해하면 사용하는데 문제 없다고 본다.

뭐니뭐니 해도 33의 가장큰 장점은 실수연산을 정수연산처럼 겁나게 때려 박아도 정수형 DSP 의 처리 속도만큼

그 연산속도가 나온다는 것이라고 할 수 있겠다.  DSP 든 아니든 실수 연산을 정수 연산장치에서 원하는 속도로

수행하기 위하여 우리는 수없는 꽁수를 쥐어짜냈었고, 그 잔마리 굴리는 시간과 시행착오, 삽질 등을 생각해 볼때

33의 실수연산 처리는 너무나 달콤한 유혹이 아닐수 없다. 

하지만, 예쁜 여자친구를 사귀려면 수없는 스트레스를 감당해야 하는 것처럼, 실수연산이라는 미인계로 우리를

꼬시는 33을 데리고 살라면 많은 스트레스를 받아야 한다.  이 이쁜 녀석이 IQ는 높아서 두뇌회전은 빠른데

할 줄 아는게 아무것도 없다.  다시 말하면, 가지고 있는 것이라고는 달랑 32bit Timer 두개와, 외부인터럽트 몇개,

메모리 관리 능력정도...  아.. 내부램도 꽤 가지고 있긴 하다.

솔직히 말해서 이정도 스펙이면 로봇에 적용하기는 완전 꽝이다.  LED 하나 켜볼수 있는 IO 포트도 하나 없고,

UART 통신조차 못하고... 도대체 무얼 할 수 있단 말인가?

결론은 우리가 필요로 하는 모든 주변장치들을 이 녀석에게 붙여 주어야 한다는 것이다.  보통 아날로그쪽 파트는

전용 IC 를 매모리맵핑 시켜서 사용하고 디지털 파트는 FPGA 나 CPLD 등으로 로직을 구현하여 사용을 할 수 밖에

없다.  그렇다.  상당히 귀찮은 작업이 아닐수 없다.  하다못해 천원짜리 AVR 만 하더라도 LED 하나 켜볼라믄

땜하고 코딩해서 한시간이면 떡을 치는데 VC33.. 이 녀석은 LED 하나 켜볼라고 하려면 회로도 그리고, PCB 뜨고,

PCB 땜빵하고, 프로그래머블 디바이스에 IO 설계하고, 외부 플래쉬에 모니터 굽고, 코딩하고...........  기타 등등..

의 과정을 거쳐야 한다.  정말 토나오는 작업들이다.


나름 맨땅에 헤딩한답시고 VC33 을 이용한 DC 라인트레이서는 만든다는 시나리오로 시뮬레이션을 해보자.


우선 알고 있는 모든 루트와 수단을 이용하여 VC33 및 V31 에 관련된 자료를 모은다.  학교 도서관에 있는 31관련

서적을 두어권 빌려오고, Maze 홈페이지에 있는 33관련 모든 자료를 구해본다.  최근에 정환형님께서 DC카페에

회로도를 공개 해 주셨기 때문에 그것을 참고하면 금상첨화. 

개인적으로 부탁하여 모니터 프로그램까지 얻을 수 있다면 더할나위 없겠다.

책과, 데이터 쉬트와, 회로도 등을 보고 개념을 잡는다.  개념이 안서면 개념을 위한 노력을 아낌없이 한다.

어느정도 개념이 섰으면 내가 사용할 주변장치를 계획해 보자.  일단 센서 입력을 위한 ADC 를 선정해야겠다.

우리는 돈없는 학생이니 샘플 잘주고 종류 많은 TI 홈페이지에가서 ADC 를 검색한다.  검색하는 순간 당황스런

상황 발생.  제품이 너무 많다..  도대체 무엇을 써야할지 감이 안온다.  필터링을 위해 또다시 관련 학습을 시작.

ADC 와 컨트롤러 간의 Interface 방식을 보니 대충 페레럴, SPI, IIC 기타 등등이 눈에 띤다.  관련 용어를

공부하자.  그러면 IC 간의 병렬 및 직렬 연결에 대한 개념을 잡을 수 있을 것이고 각 통신방식에 대한 감을

얻을 수 있을 것이다.  VC33 에서 주변장치를 확장하기 위한 방법은 메모리 메핑 방식이다.  따라서 첫번째

필터로 Interface 방식이 병렬인 것을 골라 정렬해보자.   헉.. 하지만 그래도 많다.  이번엔 SAR 방식 변환이니

시그마델타 변환이지 하는 방법을 공부하고 맘에 드는 놈으로 필터링 하자. 그래도 많다.  이번엔 내가 어느정도의

해상도로 변환을 할 것인지 결정하고, 필터링..  이제 눈으로 대충 훑어볼 수 있을 정도의 컨버터가 보일 것이다.

그럼 내가 하드웨어 트리거 방식으로 쓸 것인지, 소프트웨어 트리거 방식으로 쓸것인지 정도만 결정하면

남는 것은 거의 한두가지... 내가 쓸만한 ADC를 찾은 것이다.  일단 ADC 선정은 여기까지.

다음은 디지털 주변장치를 위한 소자 선정이다.  정환형님 회로도를 보니 CPLD 가 사용되어지고 있다.

프로그래머블 디바이스로 FPGA 와 CPLD 가 있다고 하니 두가지의 차이점을 공부하고 CLPD 면 되겠다 싶어서

디바이스를 선택하는 단계이다.  대표적인 생산 업체를 알아보니 자일링스와 알테라라는 회사가 대세인득 하다.

동전 뒤집기를 해서 선택하던, 주변 지인들에게 개발 Tool 지원을 받을수 있는 쪽으로 선택하던 하나를 선택한다.

고구려에 사용된 CPLD 는 Altera 사의 MAX 계열인 7000 시리즈로써 매크로셀이 512개 들어있는 디바이스다.

주변을 보아하니 알테라 칩을 쉽게 구할 수 있을 것 같기도 하고 맥스플러스나 쿼터스 같은 EDA 도 구할수

있을 것 같으니 같은 모델을 선택하거나, 필자의 경우라면 새로운 라인업인 MAX2 계열의 EPM570 시리즈를

선택한다.  같은 패키지라면 MAX 계열보다 MAX2 계열이 두배 이상의 매크로셀이 들어있고, 가격도 저렴하며

Propagation Delay 도 적기 때문이다.  그럼 CPLD 의 선정도 결정을 하였다.

위와 같은 방법으로 UART IC 와 Regulator, Motor Driver 등등을 선정하여 필요한 아이템을 득 한다.

자, 필요한 사전 준비는 끝났다. 이젠 설계다.  로봇에 장착될 보드이니 PCB 제작이 필요하겠다.

OrCAD 도 좋고 PADS 도 좋고, 내가 편한 CAD 로 회로도를 그린다.  예쁘게 그린다.  그리고 각 CAD 별 관련

서적을 준비하여 Artwork 과정을 익히고 내 보드를 디자인 하고.. 설계가 끝나면 발주를 해보자.

이젠 PCB 도 생겼다.  그럼 땜을 하고, 오실로 스코프로 클럭 아웃을 찍어본다. 정현파 클럭이 나오면 성공이다.

롬라이터로 플레쉬를 굽고, 모니터가 뜨는지 확인이 되면 상당한 진척이다.  이제 디지털 주면장치 설계를 해보자.

필요한 디지털 주변장치를 따져보니, 엔코더 펄스 카운트를 위한 QEP 모듈과, PWM 생성 모듈, 디스플레이

장치 구동을 위한 I/O, 센서 구동을 위한 I/O 및 디코더, 가각의 주변장치 선책을 위한 메모리 디코더 등등이 필요

하겠다.  까마득 하지 않은가?  또 책을 보자.  1학년때 그토록 지겨웠던 디지털 공학 책을 빼들고 씹어먹자.

동기부여가 되었기 때문에 훨씬 재미있고 습득도 빠를 것이다.

기본적인 디코더와 I/O 만 설계 후 테스트를 완료하게 되면 그 기쁨은 처음 LED 구동을 해봤을 때 보다 더 크다.

이제야 쓸만한 제어 및 연산장치 준비가 다 되었다.  진정 VC33 의 위력을 느껴보기 위하여 디지털 필터를 구현해

보자.  또 막막한가?  그럼 신호처리 책을 보자.  필터의 종류를 공부하고 내가 원하는 필터를 구현하여 Matlab으로

돌려보자.  수업시간에는 먼 소린지도 몰랐던 돼지털 필터가 이렇게 쉽게 이해될 줄이야.. 싶을 것이다.

그럼 이제 Matlab 으로 구현한 소스를 C 의 문법에만 맞도록 약간의 수정을 하여 VC33 에 포팅 해보자.  정수형

연산장치에서는 감히 상상도 못할 상황이다.  하지만 원하는 결과는 널널하게 보여주는 VC33.... 감동하자.


뭐.. 일단 위와 같은 진행 사항을 겪어야 할 것이다.  토나온다.  아마도 이 글을 보고 있는 여러분은 VC33 에 대한

정내미가 뚝 떨어져 버렸을지도 모른다.  하지만 다시 생각해 보자.  내가 위 과정을 겪으며 무엇을 얻게 되었는지..


첫째, 이제 어디가서 ADC 에 대한 이야기가 나올때 상식 수준의 이야기라면 절때 꿀리지 않는다. 

또한 칩간의 통신방법도 어지간 하면 다 안다.

둘째, 전자공학 전공자임에도 불구 회로도 한번 Artwork 한번 안해본 학생들이 거의 다 인데 벌써 PCB 도 떠봤고
 
더군다나 CAD도 왠만큼 쓸 줄 알게 되었다. 

셋째, PLD 설계를 위한 준비를 하다보니 디지털 공학의 실력가가 되었으며, HDL 에 관한 경험도 생겼다. 

쿼터스 같은 EDA 도 쓸줄 안다.

넷째, 디지털 신호처리에서 중요한 필터를 설계해 보았고 Matlab 의 기본적인 사용법도 알게 되었다.

다섯째, DSP 및 주변장치의 구조가 내 머리속에 있다.  각각의 모듈을 테스트 해보겠다고 데이터 쉬트를 뒤적거릴

필요도 없으며 테스트된 모듈별 루틴을 합친다고 코드가 꼬일 일도 절대 없다.  그냥... 생각나는 대로 코딩하면

다............ 된다.


이 얼마나 알흠답지 아니한가.



2편 끝.     3편에 계속....

2007년 10월 15일 월요일

로봇에 사용할 DSP 선택하기 [1편]

몇몇 학부 후배들이 이제 전시회도 끝나고, 주행로봇을 제대로 시작 해 보겠다고 한다.  뭐부터 시작하면 좋겠냐고

물어보길래 제대로 할라믄 DSP 를 써야 할 것이고 그러기 위해서 DSP 가 무엇인지, 범용 MPU 등과의 차이는

무엇인지, 어떤게 쓸만한지, 무었을 쓸것인지 등등을 정리해 보라고 하였다.  기특하게도 두어명이 나름 공부하여

정리 해 놓은 것들을 보았다.  하지만 안타깝게도 참신한 자료는 하나도 없드라... 

그네들이 접하고 공부하고 인용하여 정리한 자료는 거의 99%가 싱크워X 라는 회사의 홈페이지에 올라와 있는

자료였다.  나 역시 처음 DSP 를 시작할때 거의 유일하다싶이 자료를 얻을 수 있었던 곳이었고, 유용한 자료가

상당히 많은 곳이긴 하다.  회사의 CEO 로 계신 백 이사님께서 상당히 열성적으로 자료를 구축 해 놓으셨고

수년이 지난 지금 국내의 여느 커뮤니티 보다 많은 자료를 보유하고 있는 곳이기도 하다.  이런 커뮤니티의

존재에 대하여 참 고마움을 표하고 싶기는 하지만 개인적으로 몇가지 불만을 가지고 있기도 하다.

이 회사의 주력은 TI사의 28계열 DSP 의 개발모듈을 개발하여 판매하는 것과, 이를 이용하는 기업 및 기관을

상대로 유료 기술지원 등을 하는 것이다.  때문에 자사의 제품을 부곽시키기 위하여 28계열이 아닌 타 DSP 를

평가절하 하거나 고가의 개발장비를 소유하지 못한 학생들에 대한 기술지원이 엄청 소홀하다는 느낌을

지울수 없었다.  일례로 몇년 전(281x 가 막 번창하고 있을 때. 280x 는 출시 전.) 백 이사님과 식사를 하면서

나누던 대화 중... VC33 에 대한 견해를 들었는데 33을 완전 쓰레기 취급 하더라는......  -_-;;;

홈페이지의 자료를 보면 정수형 프로세서를 홍보하기 위하여 실수형 프로세서를 엄청나게 까고(?) 있는 모습도

어렵지 않게 볼 수 있다.  곧 TI에서 FPU를 탑재한 283x DSP 가 정식 출시 될 것이고 EV Board 를 제작하여

판매를 개시 할 때... 과연 제품 홍보를 어떻게 할 지... 사뭇 기대된다..


사설이 길었다.  본론으로 넘어가고자 한다.

노파심에 한마디 더 하자면 본 글은 불특정 다수에게 은근히 보이기 위한 글이지만 읽는 이로 하여금

"뭐여.. 누굴 가르치려 들어?" 라는 말을 들을 수도 있는 글이라고 생각한다. 

어투나.. 뉘앙스 부터가 그렇다고...  본인도 생각한다.. -_-;; 

하지만 제말 오해하지 말아 주시길 간절히 부탁드린다.  절대 그런 의도가 아닌, 불특정 다수를 절친한 후배로

가정하고 경험을 공유하기 위하여 쓰는 글임을...


필자는 뭐 이렇다 할 경력도 없고, 내새울만한 기술을 보유하고 있는 것도 아니지만 나름 자부하는 것이 있는데

취미삼아 이것저것 여러 MPU 및 DSP 를 다뤄 보았다는 것이다.  특정 솔루션을 개발한다기 보다는,

단지 호기심에 의한 경험이었고, 쉽게 접할 수 있는 녀석들이라면 닥치는대로 입수하여 개발 환경 구축 및

간단한 장난감을 만들어 보는 것이 대학시절 큰 즐거움이였다. 

사용해본 녀석들을 지금 생각나는대로 적어보면 8051(MCS-51)부터 시작하여

80c196(MCS-96), AM188(x86), 80c186(x86), 80c296(MCS-96), ATmega 시리즈, H8 시리즈,

S3C3410(ARM7), S3C2410(ARM9), Strong-ARM, TMS320VC33, TMS320LF2407A, TMS320F2812, TMS320F2808

등이 있다.  DSP의 경우 TI 사의 제품만 사용해 봤다는게 지금도 참 아쉽다.  본 글은 DSP 선택에 관한 글이므로

위에 언급한 TI 사의 C2000 계열에 한해서 내용을 진행 하려 한다.  DSP 가 뭐니, 곱의 합이 어쩌니 하는 원론적인

이야기는 관련된 아주 좋은 자료가 많이 있으므로, 경험에 의한... 특히 로봇에 적용할 녀석을 선정할때의, 각각의

장단점 등을 서술해 보겠다. 

지극히 주관적인 견해가 깔려 있으므로 태클은 걸지 마시길 바라고, 단지!! 참고만 하시길...


후배들이 정리 해 놓을 것을 보니, 각 DSP 들의 특징 및 장점들만 쭈르륵 나열 해 놓고 더 좋은 수식어가 붙어있는

DSP 를 선택하고자 하는것을 볼 수 있었다.  틀린 이야기는 아니지만 그런 식의 선택은 향후 약간의 후회를 야기

할 수 있다고 말 해 주고 싶다.  여러가지 상황이 발생 할 수 있지만 지금 생각나는 한가지 예상 상황을 들어보자면

이놈들은 281x 에 비하여 280x 의 주변장치가 더 성능 향상 되었다는 말에 다들 트레이서에 2808을 쓰겠다고 한다.

훌륭한 선택이다.  단지 스펙만 놓고 따져보면 꿀릴것 하나없고 퍼포먼스 죽여준다.  하지만 오래전 2808 로 마우스

를 만들기 시작할때, 한정된 내부 메로리만을 사용하여 모터 제어기의 게인값을 튜닝하거나, 센서 데이터를 분석

하면서... 옆에서 2812로 작업하는 다른놈이 그렇게 부러울 수 없었다.  난 기껏해야 3초 데이터를 분석할때...

이놈은 수십초 데이터 뿌려놓고 편하게 작업하드라... 뭐.. 이런 상황을 이야기 해주고 싶다.


약 십몇년전 부터 몇년 간 한국에서 가장 인기 좋고 사용자층 두껍고 가장 많이 팔렸던 MPU 중의 하나가 80c196

이었다.  워낙 제품 컨셉 자체가 모터 제어용이였고, 알맞는 주변장치가 쏙쏙들이 들어 있었기 때문에 마우스나

트레이서에서 196을 찾아보기란 어렵지 않았다.  당대의 마우스나 트레이서의 80~90%는 196을 썼었을 것이라

생각된다.  하지만 그 많은 사용자들이... 196의 스펙을 보고 '아 딱 이거네' 라고 탄성을 외치며 196을 사용한

것이라고는 생각하지 않는다.  나는 그 많은 사용자가 196을 선택하게 된 가장 큰 이유는(그들의 자의던 타의던..)

권영철님의 마이크로마우스 '길벗' 이 있었기 때문이라고 생각한다.  길벗의 주행은 당시 마우스계의 센세이션을

불러 일으켰고 감사하게도 권영철님께서 당시 하이텔 디동(디지털 동호회)에 회로라던지 소스를 공유해 주신 덕에

많은 이바닦 선배님들께서 의심없이 믿고 선택하여 사용하게 된 것이 196이다.  지금은 196의 자리를 128에 넘겨

준 상황이 되었지만 당대를 풍미하던 196 마우스보다 잘가는 128 마우스는 손에 꼽히는 정도인 상황을 볼 때..

단지, 길벗이 사용하고 동아리 선배가 사용하였기 때문에 나도 사용한 196은.. 정말 훌륭한 선택이었던 것이다.

만약 길벗에 사용한 연산장치가 Z80 이나 V55 나... H8 이었다면.. 196이 아닌 그것들이 대세였을 것이라는것을

믿어 의심치 않는다.  실제로 일본의 경우 Z80과 V55 의 시대를 거쳐 노리꼬등의 일류 마우스가 H8 계열을 사용함

에 따라 지금까지도 많은 매니아들이 H8 계열을 사용하고 있다.

같은 이유로 고려대 두둥, 콰광에 사용되었던 AM188 이 로봇에 주류를 이뤘을 때가 있었고, 호서대 화랑이나

부유 등에 사용한 296, 아주대 제어만세와 단국대 혜성, 인천대 마마2005 등에 사용된 S3C3410(ARM7) 도

지금까지 훌륭한 연산장치로 사용되어지고.. 기억되고 있다..

또다시 삼천포로 빠지는 듯한 이런 이야기를 떠벌떠벌 하고 있는 이유는... 다 들 느끼셨겠지만.. 당대의 훌륭한

로봇 제작자 분들이 사용하였던 연산장치는 의심의 여지가 없이 '나'도 사용 할 만한 연산장치이고, 사용했을때

좋았으면 좋았지 후회는 안한다는 것이다.  당대의 히어로이신 선배들이 충분한 고민과 시행착오를 거치며

선택된 최고의 아이템들인 것이다.  이제 DSP 한번 써봐야지... 라고 생각했다면... 뭘 사용하지? 라는 고민에

몇날며칠 고민하지 말고, 오늘날 지존 득 하신 분들이 무엇을 사용하는지 부터 알아보자.  조금만 찾아보면

알 수 있고, 모르겠으면 물어보자.  내가 알고 있는 한 안가르쳐 주실분은 한분도 없다.


그럼 오늘날 지존 득 하신 분들은 무얼 쓰시나... 알아보자. (다들 DSP 를 사용하고 계신다.)

감히 이런 허접한 글에 성함조차 올려드리기 죄송스러운... 몇몇 분들이 있다.

마우스에 지존 득 하신 단국대 MAZE 황하윤님. 

현재 마이크로마우스 고구려 시리즈로 미국대회 석권... 한국대회 석권... 마지막으로 올해 11월달에 있을

일본대회만 석권하시면 마우스계의 그랜드 슬램을 달성하는... 명예의전당에 입성할 황하윤님은

고구려 이전의 HH2 시절까지 VC33 을 사용하시다가 현재 고구려에는 TMS320F2808 을 사용하고 계신다.

트레이서쪽에는 모두들 아시다 싶이 지존 득 하신 두분이 계시는데 시립대 제틴 출신의 조세형 님과 단국대 MAZE

출신의 김정환 님.  조세형님의 경우 CC9900 에 TMS320F2812 를 사용하고 계시고 김정환님의 경우는 트레이서

고구려에 TMS320VC33 을 사용하고 계신다.


뭔가 삘이 팍 오는가.  (당연한 이야기지만.. 저런 DSP 를 쓰셨기 때문에 지존 득 하신건 절대 아니다.)

TI 사에서 나온 28x 계열의 DSP 는 기본적인 DSP 기능(연산) 은 기본이고 거기다 다른 반도체 회사의 DSP 와는

차별화를 두어 제어용으로써 다양한 주변장치를 탑재한.. 로봇하기에 정말 구미가 당기게 만든 DSP 이다. 

196의 컨셉과 비슷하게 모터 제어에 최적화 되어 설계된 연산장치이기 때문에 관련 주변장치가 모두 내장되어있고

어떤 모터든 제어가 용이하게 구성되어 있다.  브러쉬형 DC 모터는 물론이거니와, 오히려 BLDC 에 더욱 최적화

되어 있다는 느낌도 받는다.  그러니 우리내가 만드는 로봇에 왜 안쓰이겠는가.


진짜 본론으로...  -_-;;;

위에 언급한... 대표되는 세가지의 DSP (TMS320VC33, TMS320F2812, TMS320F2808) 의 특징을 경험에 비추어

정리해 보려고 한다.  2812의 경우 비교적 많은 사용을 해보지는 않았지만 TMS320VC33과 TMS320F2808으로는

나름 마이크로마우스를 만들어서 입상한 경험이 있기 때문에 믿으셔도 좋으리라 생각된다.


1편 끝.  (결국 본론은 하나도 없다는... -_-;;;)  2편에 계속..

2007년 10월 7일 일요일

THE 28th ALL JAPAN MICROMOUSE CONTEST

 
  일시 : 2007년 11월 16일 ~ 18일
  장소 : Tsukuba International Congress Center (EPOCHAL TSUKUBA), (Takezono, Tsukuba, Ibaraki)
  참가신청 : 10월 15일 까지
  영문 홈페이지 : http://www.robomedia.org/directory/en/mouse-e.html

  올해있을 전일본 대회 공지가 떴다..
  작년과 마찬가지로 동경이 아닌 다른 도시...  젠....

  시립대 상품으로 3명, 단국대에서 서너명, 태준형과 회사분들 세분, 제틴 몇명....
  역대 가장 대규모의 원정단이 될 듯 하다..  대략 십여명이 넘어설 듯...

  갈 수 있을까...?
  간다는 전제로 준비 하련다.. 못굴려도 간다.
  하지만 두개의 과제 평가가 그때쯤 이라는거... ㅎㅎㅎㅎ;;;;

  한국세 스고이가  난발하는 대회를 기대한다.


2007년 9월 26일 수요일

2007년 제25회 한국 마이크로로봇 경연대회 수상식

사용자 삽입 이미지

사용자 삽입 이미지

1등 : 하윤이 (koguryo)
2등 : 나 (INNO)
3등 : 김현국 (두번째 달) '하윤이 후배? 다음엔 인사해요~ ^^;
격려상 : 태준형 (Boowoo)

대회 후기 써야 히는디... 귀찮네...  이러다 다 까묵겠당... ㅋ

인천대 준비해야 히는뎅... ㅠㅠ

INNO2007 증명사진

사용자 삽입 이미지

2007년 9월 23일 일요일

Blue Color VFD

사용자 삽입 이미지

사진찍기 어렵다. 정말 예쁜데.. 사진으로 전달이 안되는군..  -_-;;

역시.. 비싼게........... 좋다.. 냐하..  ㅠㅠ


HCMS-2903
HCMS-2912
HCMS-2919



2007년 9월 22일 토요일

Avr Studio 환경에서 printf() 함수 쓸때 %f 사용하기


Linker Option 에서

-Wl,-u,vfprintf -lprintf_flt -lm

추가.

이거 안하면 '?' 만 출력 됨.

관련 설명은 stdio.h 에 설명되어 있음.

2007년 9월 18일 화요일

DC Motor 선정을 위한 토크 계산

사용자 삽입 이미지

이동로봇이 정지상태로 부터 일정한 속도로 이동을 하기 위해서 보통 위와 같은 속도 프로파일을 사용한다.

물론 jerk 제어를 사용하면 S 프로파일을 적용 할 수 있겠지만 계산과정을 단순화 하기 위하여 위와 같은 등가속도 운동을 전제로 한다.

현재 주행 로봇에서 가장 많이 사용하고 있는 구동 방식은 차륜구동 방식 이므로 차륜 구동에 필요한 토크를 구하는 방법을 적용한다.

그림에서 보듯이 차륜축에 가해지는 전체 토크는 Tm 이라고 할때 가속운동시 필요한 토크 : Tm=Ta+L, 등속운동시 필요한 토크 : Tm=L 이다. 

Ta는 가속 토크, L은 마찰부하 토크.  각각의 계산은 다음의 공식에 의하여 이루어진다.

Ta = J / g × 2πf / t         Ta: 가속토크(kg·cm)
                                    J: 부하관성 모멘트(kg·cm2)
                                    g: 중력가속도(980cm/sec2)
J = WD2 / 8                     f: Wheel의 등속회전속도(rev/sec)
                                    t: 가속 시간(sec)
                                   W: 로봇의 전체중량(kg)
L = μWD / 4                   μ: 마찰계수(보통 0.1)
                                    D: Wheel Diameter(cm)

현재 제작하여 가지고 있는 마이크로마우스 INNO2007의 경우를 예를 들어 계산해 보면

W(중량) : 0.15kg
D(Wheel Diameter) : 2.6cm
f(Wheel의 등속회전속도) : 42.87 rev/sec (3.5m/s 목표)
t(가속시간) : 0.4375 sec (가속도 8m/s/s, 최고속도 3.5m/s로 가정하고 등가속도 공식에 의하여...)

J = WD2 / 8 = 0.15 × 2.6 × 2.6 / 8 = 0.12675 (kg·cm2)
Ta = J / g × 2πf / t = 0.12675 / 980 × 2 × 3.14 × 43 / 0.4375 = 0.08 (kg·cm)
L = μWD / 4  = 0.1 × 0.15 × 2.6 / 4 = 0.01 (kg·cm)

여기서 가속시간과 등속시간의 필요한 토크는 아래와 같이 된다.

Ta + Tm (가속) = 0.08 + 0.01 = 0.09 (kg·cm) = 8.82 (mNm)   [1 (kgf·cm)  = 98 (mNm)]
Tm(등속) = 0.01(kg/cm) = 0.98 (mNm)

가속시 약 9 mNm 정도의 토크와 등속시 약 1mNm 정도의 토크가 필요하고 차륜구동 방식이므로 모터는 두개...

모터 하나당 Stall Torque 약 5 mNm, Nominal Torque 약 0.5 mNm 필요... 안전계수 1.6배 정도 하면 8 mNm, 0.8 mNm 정도...

1단 기어 스테이지의 효율을 약 60% 정도 잡고 기어비 3.5 : 1 정도 잡으면

Stall Torque 1.37 mNm, Friction Torque 0.137 mNm 이상의 모터가 필요하다고 할수 있겠다.

또한 위의 상황에서 9000 RPM 이상의 모터 회전속도가 나와야 목표로 하는 최고속 진입 가능....


이런 계산 한번도 안해보고 사용한 Minimotor 1724 006SR IE512 모터의 스펙을 보자...

Stall torque : 11.5 mNm ===> 충분하다.
Friction torque : 0.13 mNm ===> 충분치 못하다.  -_-;;; (안전계수 범위 근처 이므로 패쑤~ )
Speed up to : 8000 rpm ===> 충분치 못하다.  -_-++ (공급전압을 오버해서 쓰므로 역쉬 패쑤~~)

기타 필요로 하는 여러가시 스펙이 있지만 가장 중요한 스펙을 점검하여 보았다.

결론은...   [모터를 바꾸자...  ~(-_-)~  ...가 아니고 바꾸고 싶다.... ㅎㅎ;;]