'마이크로 프로세서'에 해당되는 글 2건

  1. 2007/05/27 [5/27]7Segment 제어 성공 및 모터 구동 실패 (1)
  2. 2007/04/19 AVR로 갑니다.
5월 27일.

스테핑 모터, 바퀴를 비롯한 LCD모듈, 7Segment(FND), 적외선 센서 등 수없이 많은 부품을 주문한 게 이번주 월요일, 물건 도착은 며칠 전에 했으나 정보올림피아드 준비 관계로 개봉을 절대적으로 자제하고 있다가 오늘 드디어 모두 열어봤습니다.

역시 가장 눈에 띄는 것은 모터였습니다. 생각보다는 꽤 큰 크기에 무게도 묵직한 것이 힘도 좋아보였습니다. 바퀴도 가격(하나에 11,000원이라니..)에 걸맞게 마찰도 좋고 튼튼해보여 다행이었습니다. 자잘한 부품들이 잔뜩 들어있는 비닐을 뜯어보니 FND, OSC, 적외선 수/발광소자, 가변저항 등 여러 가지 부품들이 눈에 들어왔습니다. 가장 만만해보이는 FND부터 컨트롤해보자는 마음으로 멀티테스터기로 불빛이라도 내 보려고 했습니다.

제가 주문한 FND는 초록색의 Annode Common 타입이었습니다. 그렇다면 당연히 멀티테스터기의 붉은색 침에 Common Pin(3, 8번)을 대 주고 나머지에 검은색 침을 대 주면 불이 들어올 것이라고 생각했으나, 아니었습니다. 왜인지는 아직까지 미스테리입니다. 혹시나 하는 마음에 침을 바꾸어서 대 보니 선명하게 불빛이 들어오더군요. 저는 잘못해서 Cathod Common이 온 줄 알고 Eleparts에 문의글까지 올렸다지요...ㅡㅡ;

Cathod Common이어도 제어 못 하는 건 아니니 일단 Atmega128과 연결해보자라는 마음에 회로를 꾸몄습니다.
사용자 삽입 이미지

FNDTest.c (Language : c)
  1. //FND에 1부터 10까지가 순서대로 나타나는 프로그램입니다.
  2. #include <avr/io.h>
  3.  
  4. short int table[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xA7, 0xA1, 0x86, 0x8E, 0xFF};
  5.  
  6. void delay(int time)
  7. {
  8.     while(time>0)
  9.         time--;
  10. }
  11.  
  12. int main(void)
  13. {
  14.     DDRA=0xff;
  15.     PORTA=0xff;
  16.     int pp=0;
  17.     while(1)
  18.     {
  19.         PORTA=table[pp++];
  20.         delay(10000);
  21.         if(pp==17) pp=0;
  22.     }
  23.        
  24.     return 0;
  25. }

정상적으로 동작하는 것을 확인하고 모터에 도전했습니다.

구입한 스테핑 모터에는 선이 6개가 달려 있습니다. 그런데 도대체 이 녀석을을 어떻게 쓰는 것인지 알 수가 없어 각 선의 용도를 찾는데만 몇 시간이 걸렸습니다.

일반적으로 스테핑 모터의 선은 세트로 되어 있습니다. 6가닥인 경우 3선씩 두 세트입니다. 3선 중 한 가닥은 Common(이라는 말을 써도 될까?) 선이고, 나머지는 Common 선과 반대되는 선입니다. 즉, Common에 +를 접속하면 나머지 두 선에는 -를 접속하면 됩니다. 모터의 선 배치를 모식도로 그려보면 다음과 같습니다.
사용자 삽입 이미지
모터에 6선이 있을 때, 이를 순서대로 A~F라고 하면, 위와 같은 선 구조로 볼 수 있습니다. B와 E에 +를 접속하고 C, D, F에 모두 +를 준 상태에서 A에 -를 주면 A-B에만 전류가 흐르므로 그 사이에 전기장이 형성되고, 그쪽으로 모터에 토크가 걸립니다. 그 상태에서 A에 다시 +를 주고 C에 -를 주면 C-B에만 전류가 흐르므로 A-B쪽에 불어있던 회전자가 C-B쪽으로 이동합니다. 같은 원리로 A, C, D, F에 번갈아 신호를 주면 회전자가 번갈아가면서 붙기 때문에 회전을 할 수 있게 됩니다.

하지만 모터에 공급하는 전압은 정격 9.4V, 보통 11~12V정도 주기 때문에 마이컴으로는 엄두도 못내고, 외부 전원을 연결해야 합니다. 저는 외부전원으로 12V를 걸어주었습니다. 하지만 분명 모터를 돌리고 남는 전압이 있을 것이고, 그것이 마이컴으로 들어가야되는데, 어느 정도가 남는지 아직 확인이 안 되어서 확인하던 도중에 밤이 되었습니다.

휴,, 이제 다음에는 확실히 모터 돌려봐야지요.


2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry

AVR로 갑니다.

Robots 2007/04/19 23:28

로봇 대회 출전이 임박하여 마이크로 프로세서 구입에 대해 대충 알아보았습니다.

마이크로 프로세서는 제조 회사에 따라 크게 세 가지가 있습니다.

Intel - 8051, Atmel - AVR, Comfile - PIC
제일 많이 사용하는 것이 무엇인지는 모르겠습니다. 사람들마다 자기가 쓰는 것이 가장 많이 쓰이는 것이라고 하기 때문에 객관적이고 정확한 정보를 얻기가 힘들군요.
사용자 삽입 이미지

ATMEL128 Basic Extension Board (출처 : AVR Mall)



저는 이 중 AVR을 사용하기로 했습니다. 네이버에 큰 카페 가 하나 있어 정보를 얻기 수월할 것 같고, 전용 온라인 샵 이 있기 때문이었습니다. 그리고 왠지 모르게 다른 것들보다 끌리더군요.

아직 로봇의 설계가 되어 있지 않기 때문에 어떤 부품을 사야 할 지는 모르겠습니다. 조만간 설계를 끝내서 부품은 한꺼번에 주문하려고 합니다. 그 동안에는 관련 서적을 구입(혹은 대여)하여 공부를 착실히 해야겠습니다. C Programming이라고는 하지만 중요한 것은 C 실력이 아닌, 라이브러리를 얼마나 많이 알고 잘 다룰 수 있느냐이니까요. 지금까지 해 왔던 것과는 전혀 별개의 것으로 인식하고 새로 시작하는 마음으로 해야겠습니다. 특히 전자쪽은 진짜로 처음 접하는 것이기 때문에 어려움이 많겠지만, 이번 기회를 잘 살려서 전자 쪽에도 지식을 뚫어 놓아야겠습니다.

AVR 프로세서에도 여러 가지가 있습니다. 동작 클럭이나 플래시의 크기에 따라 Atmega4 ~ Atmega128까지 다양한데요, 가격도 얼마 안 하는데 이왕 사는 거 좋은 거 사는 게 낫겠다 싶어서 Atmega128 생각하고 있습니다. 프로세서만 사면 4,400원밖에 안 하는데 보드에 얹혀져 있는 컨트롤러는 18,000원이네요. 거기에 ISP(컴퓨터와 연결하여 프로그램을 다운받는 장치)까지 사려면 5만원돈 깨지겠네요. 서보 모터가 하나에 16,000원 정도 하니까 두어 개 생각하고, 기타 부품까지 생각하면... 대략 100,000원 잡아야 되지 않을까요. 역시 로봇은 혼자서는 무리입니다. 왜 팀인지 이제야 알겠습니다...

일단는 사는 것은 급하게 생각하지 말고 공부를 통해 충분히 내공을 쌓은 후 결정해야겠습니다.
다음은 유용한 사이트 링크입니다.

온라인 샵 - AVR Mall
네이버 카페 - 당근이의 AVR 갖구 놀기
PIC Study - 마하전자기술연구소



2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry