Linetracer

ROBOTICS 2011. 3. 4. 01:00


요즘 DSP로 만들고있는것!

TMS320F2812 모듈을 사용하여 라인트레이서를 만들고 있다.

배우고 싶은게 많은데 쉽지 않다.. 끝까지 열심히해서 좋은 성과를 거두길..

'ROBOTICS' 카테고리의 다른 글

Linetracer  (0) 2011.05.06
Love Maker  (0) 2011.03.06
Counter  (3) 2011.02.26
Dot Matrix_2  (0) 2010.11.18
Dot Matrix_1  (0) 2010.11.18
Posted by GaengKki
,

Counter

ROBOTICS 2011. 2. 26. 23:28

    로보틱스에 처음 들어오면 회로도와 함께 똥기판과 여러 부품들을 받게된다. 처음 가입하고 Counter를 만들면서 회로도 보는 법을 익히고 납땜연습과 각 도구 사용법과 Vcc,Gnd 각 소자의 동작개념들을 익히게 된다.
 .

                                                                                                    그림출처 : robotics.ssu.ac.kr


  로보틱스 회원이라면 한번쯤은 본 회로도이다. 이 회로에서 Vcc와 Gnd는 건전지의 +, - 개념으로 보통 이해를 한다. Vcc가 + 이고 Gnd가 - 라고 보면된다. 여기서 사용전압 Vcc는 5V를 인가한다.

다음으로 소자를 하나하나 살펴보자

1. 저항 330옴, LED
2. 리셋스위치, 저항 10k옴, 캐패시터 10uF
3. 74HC393
4. 74LS47
5. Segment

  1번
  330옴과 LED는 전원이 들어오면 전원이 잘 들어왔는지 안들어왔는지 확인용으로 쓰는 LED이다. 보통 전자제품을 살펴보면 이런 LED가 하나씩 꼭 있을것이다. LED의 동작전압은 LED마다 다르지만 보통 적게는 1.7v 에서 많게는 3.4v 까지의 전압으로 동작을 한다. 이회로에서 Vcc 5V를 사용하므로 동작 전압을 맞추기위해 저항을단다. LED의 동작전압과 사용전류에 따라 사용되는 저항이 다른데 저항 계산법은 옴의 법칙을 생각하며 다음식을 보자.
  R = (사용전압 - LED전압) / LED전류
여기서 사용전압은 Vcc라 보면된다. 예를들어 사용할 LED의 동작전압이 1.7v이고 10mA를 소모한다면 (5-1.7)/0.01 을 계산하여 330의 저항값을 얻을 수 있다.
  그런데 굳이 계산값대로 저항을 맞출필요는 없다. 계산값보다 높은수치의 저항을 달면 LED가 조금더 어두울 것이고 낮은수치의 저항을달면 조금더 밝을것이다. 단지 그차이다.

  2번, 3번
  여기서 리셋스위치는 스위치를 누를때마다 74HC393으로  신호를 주는 역할을 한다. 74HC393에서 신호를 받을때마다 QA(3), QB(4), QC,(5) Qd(6) 으로 L L L L 에서 H H H H 까지 신호를 준다. 여기서 L은 Low(0v), H는 High(5v)를 말한다.

        

       그림1                                                 그림2
                                                                             
   그림출처 : alldatasheet.com

  회로에서 10k옴의 저항은 풀업저항을 구성한 것이다. 풀업저항 회로를 구성하게 되면 1번핀에는 평소에 5v가 떠있다가 스위치를 누르게되면 0v로 하강된다.
  여기서 Vcc에 10k옴을 달았는데 어떻게 5v가 떠있을수 있냐는 의문이다. 옴에법칙으로 다시 되돌아가면 옴의법칙 전압강하는 전류*저항 (V=IR) 인데 리셋스위치를 누르지 않고있으면 전류가 흐르지 않으므로 전류 I 는 0이다. 그러므로 Vcc와 74HC393 1번핀 사이에 전압강하가 일어나지 않으므로 5V가 인가되는 것이다. 스위치를 누르면 393 1번핀이 GND에 연결되게 되므로 10K옴에 5V의 전압강하가 일어나 0V가 되는것이다.
  10uF 캐패시터는 채터링방지를위해 달았다. 소자마다 이캐패시터때문에 엣지를 인식을 못하는경우도 있으므로 버튼을 눌러도 393이 카운트를 잘 하지 못하는거 같으면 과감히 캐패시터를 떼버리자.

  4번, 5번
74LS47은 위의 그림2처럼 0(LLLL) 에서 15(HHHH)의 신호를 받아 각신호에 맞게 세그먼트가 숫자를 나타낼수 있도록 해준다.


                                                                                                               그림출처 : alldatasheet.com

  여기서 에노드(+) 타입의 세그먼트를 사용하였다. 케소드(-)타입의 세그먼틀를 사용하는경우는 74LS47소자 대신 74LS48소자를 사용하면 된다.

 - 이번에 다시 만든 카운터

- 작동되는 동영상


'ROBOTICS' 카테고리의 다른 글

Linetracer  (0) 2011.05.06
Love Maker  (0) 2011.03.06
Linetracer  (0) 2011.03.04
Dot Matrix_2  (0) 2010.11.18
Dot Matrix_1  (0) 2010.11.18
Posted by GaengKki
,

Dot Matrix_2

ROBOTICS 2010. 11. 18. 19:46

우선 작동하는 동영상을 보자.


ROBOTICS 라는 글자를 띠워보았다.

원하는 글자 모양을 배열로 선언을 하고

반복문을 사용하여 돌리면 글자 모양이 켜진다.


Direction 이라는 배열은 7*5 매트릭스에서 열의 방향을 의미한다.

LED를 병렬로 연결을 하여 글자를 킬때 1열부터 5열까지 순서대로 켜야되

열에 해당하는 PORTA에 Direction 배열을 넣어주고

행에 해당하는 PORTB에 R 이라는 배열을 넣어주고

반복문으로 돌리면 R 이라는 모양이 나오게 된다.




마찬가지로 ROBOTICS 배열을  PORTB에 넣어주면 ROBOTICS라는 글자가 나오게 되..려나?

문제가 있다... LED가 5열밖에 되지 않아서 저렇게 긴 글자를 한번에 출력 할 수가 없다.

글자를 오른쪽에서 왼쪽으로 쉬프팅하는 방식으로 켜보았다.

Direction이라는 5개 배열과  ROBOTICS라는 50개의 배열중에 지금 보여지게 될 5개의 신호를
 
맞추면서 LED를 키면 된다.

순서 1)

순서 2)

순서 3)

순서 끝)


위 순서대로 반복을 하면 된다.

이번엔 버튼기능을 하나 추가해 보았다.



ATmega128의 외부인터럽트 기능을 사용해서 제어를 해보았다.

128 외부인터럽트 기능을 하는 핀의 신호가 평소에는 5V가 입력되고 있다가

버튼을 누르면 0V로 떨어진다. 128이 5V에서 0V에서 떨어지는것을 감지하여

그에 따른 명령을 실행하게 된다.

위 동영상에서는 버튼을 누르면 무한루프에 빠지도록 하여 쉬프팅이 멈추는 기능을 하도록

코딩을 해보았다.




초창기에 만든 작품 치고는 정말 만족스러운 작품이였다...

처음으로 블로그에 작품을 만든것을 올려보았는데 앞으로도 꾸준히 이어갔으면 좋겠다.

오늘은 여기까지...

'ROBOTICS' 카테고리의 다른 글

Linetracer  (0) 2011.05.06
Love Maker  (0) 2011.03.06
Linetracer  (0) 2011.03.04
Counter  (3) 2011.02.26
Dot Matrix_1  (0) 2010.11.18
Posted by GaengKki
,