[Light Drive 1/4] 적외선 무선제어 수신부, 로봇 메인보드 만들기

2013.01.03 17:55




현재 군 복무중인 상태입니다.




안녕하세요. BinGoon입니다.

AVR을 시작하고 첫 프로젝트를 진행해보려고 합니다. 

리모컨으로 조종하는 RC카? 로봇? 을 만들어 볼려고 직접 PCB기판을 설계해서 만들었는데 잘 됬는지 모르겠네요. 먼저 첫째는 하드웨어 설계입니다.

조작을 위한 리모컨이랑 움직일 본체를 만들어야 겠지요.. 그럼 먼저 아래 회로를 보실까요.!


 Light Drive는 로봇이름이에요. 작명센스가 없답니다. 저는..



회로도는 다음과 같습니다.


아래 회로도는 로봇본체 회로도입니다.


간단하게 모터 제어부도 IC로 만들어버려서 생각보다 복잡하지는 않습니다.

적외선모듈인 KSM603은 37.9Khz를 사용하는 모듈 아무거나 사용하면 동작합니다.


- 부품리스트 -


- ATTINY2313 IC 1개

- 20PIN IC 소켓 1개

- KSM603 IR 수신모듈 1개

- BA6208 모터컨트롤러 IC 2개

- 8Mhz X-TAL 1개

- 22pF 세라믹콘덴서 2개

- 0.1uF 세라믹콘덴서 1개

- 100uF 전해콘덴서 2개

- 4.7uF 전해콘덴서 1개

- 100K 저항 1개

- 10K 저항 1개

- 1K 저항 6개

- 10 저항 1개

- 슬라이드스위치 1개

- 2P 몰렉스커넥터 3개

- 6핀 핀헤더 1개



에칭제작


만능기판에 부품꼽고 납땜으로 제작해도 됩니다만, 깨끗하게, 예쁘게 만들기 위해 직접 집에서 에칭으로 제작했습니다.

라벨지뜯고 남은 박리지로 했을 때는 엉망으로 되서 실패 했지만 시트지 박리지로 했더니 깨끗하게 완성됬네요^


 제작은 다림질 에칭 공법(?) 을 사용했답니다.ㅎ


캐드로 제작된 파일은 여기서 다운로드 받을 수 있고, 제작은 이렇게 했답니다.

 AVR IR ROBOT PCB 디자인 다운로드 - 구글드라이브로 연결됩니다.




빠른에칭을 위해 에칭액을 중탕해서 사용하고 빨리되도록 흔들어주었습니다.

에칭액은 엘레파츠나 디바이스마트에서 파는 에칭파우더를 녹여서 사용했습니다.




다음 수세비로 박박. . . . 구리부분만 남을 때까지. . . .




드릴로 부품들어갈 구멍을 뚫어줍니다. 실수하면 큰일나는 작업!! 조심해서 해줍니다.


 처음 에칭해서 구멍 뚫을 때 손 한번 떨었다가 동박 다날아갔었습니다. ㄷ




보드에 실크스크린까지 올려서 PCB기판 완성!!!




기판에 부품을 싣고 납땜작업을 완료했습니다. *_* 자체축하!!!!

다음포스팅에서는 리모컨제작을 하겠습니다.^

BinGoon AVR/AVR 작품, Project , , , , , , , ,

  1. PCB 까지 직접 만드시는군요 대단하시네요
    예전에 만능기판이용해서 검은 테이프 따라가는 자동차(?)같은건 만든적있는데
    리모트 컨트롤이라니 ㅎ(아마도 적외선 이겠죠?)
    기대되는 군요ㅎ

  2. 먼저 댓글감사드리구요~ㅎ
    적외선으로 조종하는 간단한(?) 무선제어로봇 만들어볼려구요.^
    여러가지 만들어보고 싶은건 많은데 역시 자금이 !!! ㅋ 부족하네요.
    계속해서 열심히 올리겠습니다. ^

  3. Blog Icon
    poltie

    안녕하세요. 평범한 직장인인데 전자공작에 관심이 있어 검색중에 여기까지 왔습니다. 기초지식이 없는 상태에서 책과 인터넷을 보며 한번 시도해보려고 합니다. 여기 보니 너무 막연했던게, 공부하면서 그대로 한번 따라해보면 될수도 있겠다는 희망이 생깁니다. 다름이 아니라 pcb를 만드는 방법과 구글드라이브에 연결된pcb회로도를 받아 볼수 있을까요? 구글드라이브 연결은 권한이 없다고 나와서요~ 부탁드립니다.

  4. 안녕하세요^^ 지금 회로도를 수정 중이라서요.^
    메일로 연락주시겠어요?
    수정한 것 보내드리겠습니다.^
    메일주소는 shin9505s@hanmail.net 혹은
    shin9505s@naver.com으로 보내주시면 금방확인 가능합니다.
    앞으로도 많이 방문해주세요. ㅎ

  5. Blog Icon
    전자공학

    안녕하세요. 전자공학을 전공하고 있는 학생입니다. 이번에 ATmega128과 적외선 센서를 이용해 장애물 회피형 RC카를 만들고 있습니다. 자료를 찾던 중 이 포스팅을 보고 정말 훌륭하다고 생각이 들었습니다. 한가지 궁금한 점이 있는데, MCU를 사용하지 않으시고 굳이 따로 제작하신 이유가 있나요? ^^ 그리고 이 작품관련 자료들을 참고하고 싶은데 엑세스권한?이 없다고 나옵니다ㅠ0ㅠ 혹시 볼 수 있을까요?^^

  6. 방문해 주셔서 감사합니다^
    질문주신 사항은 이메일로 별도로 답변드릴께요^ 소스코드는 메일로 보내드리겠습니다. MCU는 Tiny2313을 사용했는데, 판매하는 제품을 사용하지않고 직접 PCB를 제작한 형태로 좀 더 깔끔하게 제작이 가능하기에 그렇게 했습니다^
    이메일 남겨주세요^!! 덧글 다시한번 감사드립니다^

  7. Blog Icon
    전자공학

    loiolaa@naver.com
    제 메일 입니다!!친절한 답변 감사합니다^^
    저도 열심히 해서 님처럼 훌륭한 실력자가 되고싶네요ㅎㅎ

  8. Blog Icon
    범준빠

    PCB가 아주 깔끔하게 잘 나왔네요.
    다림질 공법으로 저 정도 품질이라면 정말 달인 수준입니다.
    저는 감광 기판으로 몇 번 시도해 본적이 있었는데,
    구멍 뚫기가 너무 힘들어서 그 이후로는 손이 가지 않던데요.
    탁상용 고속 드릴을 써도 쉽지 않은 작업이더라구요.
    직접 회로 설계 하고 PCB 아트웍 및 제작, 프로그램까지 대단합니다.

    특히 PCB TOP면에 Silk까지 올리신 것은 굉장히 좋은 아이디어인것 같습니다.
    보통 PCB 자작 하시는 분들도 top면에 silk 올리는 경우를 거의 못본것 같은데.
    부품 실장할때 오류도 막고 자작품이지만 상당히 고급스러워 보입니다.

  9. 안녕하세요^ 또 찾아주셨네요 ㅎ
    PCB 아트윅은 이글캐드로 하고있는데 ORCAD로 하는것이 좋을지 의문이네요!
    꾸준히 다림질 에칭으로 PCB를 계속 만들어보니 1번해서 성공할 경지에 올랐고, 그리고 Top면에 Silk가 있어야 PCB의 완성 이라고 생각했습니다^

    나중에 성장해서 훌륭한 엔지니어가 되고 싶습니다^
    곧 새작품으로 찾아뵙겠습니다^ 감사드립니다^

  10. Blog Icon
    난나여

    안녕하세요 이 적외선 로봇이 굉장히 깔끔하고 퀄리티있는것같아서
    졸업작품만드는데 참고하고 싶습니다~~
    관련 자료좀 보내주실수있나요 부탁드립니다~~?~~
    제 이메일은 mr9725@naver.com 이나 lhs527gmail.com 입니다

  11. 모바일로 댓글을 달고있다보니 늦게 보내게 되었네요.^
    Light Drive 소스코드를 보내드리도록 하겠습니다.^

  12. Blog Icon
    yesman

    안녕하세요. 이번에 로봇쪽 공부를 하려고 마음먹은 사람입니다. 아직 지식도 많이 없고 맨땅에 해딩을 하면서 공부를 하려니 너무 막연하네요. 이 포스팅을 보고 차근차근 따라하려고 합니다. atmega128로 공부를 하려고 하는데 tiny2313대신 대처해서 사용해도 되는지 여쭤보고 싶습니다.ㅠㅠ
    급할수록 천천히라는 말이 있드시 천천히 차근차근 기초를 다지고 싶은데 위와 관련된 자료들을 혹시라도 받아볼수 있는지ㅠㅠㅠ

  13. 별로 대단한 것 만든건 아닌데 찾아주셔서 감사드려요.^ ㅎㅎ
    먼저 첫번째로 Attiny2313을 Atmega128로 대체가 가능합니다.^
    특수한 AVR이 아닌 경우라면 어떤 AVR시리즈로도 적용이 가능하답니다.^ 그리고 자료는 블로그에서 다운로드아이콘을 클릭하신 후에 링크 연결되는 구글드라이브에서 다운로드 받으실수 있답니다.^^ 앞으로도 도움이 많이 되는 포스팅을 하도록 하겠습니다.^ , 조금 느리작 거려서 문제이지만요 ㅎㅎ

  14. Blog Icon
    sunny

    제작하신 과정을통해서 저도 참고해서 시도해보려고합니다.
    모터는 몇V짜리를 사용하셧나요?


  15. 안녕하세요^ 찾아주셔서 감사드립니다.^
    소형 모터라면 모터의 전압은 그다지 중요하지 않습니다.^
    3~5V로 구동되는 모터라면 충분히 움직이는 것이 가능하구요.
    기어박스가 내장되어 있는 것을 사용하시면 된답니다.^

  16. Blog Icon
    at128

    안녕하세요 ㅎㅎ 정말 대단하시네요
    라인트레이서는 몇번만들어봣는데 적외선리모컨 조종은 첨 접해보네요
    괜찬으시다면 졸업작품만드는데 참고하고습니다 ㅎ.
    관련 자료좀 부탁드려도 될까요..? 꼭 좀 부탁드려용~~
    제 이메일은 dzozb@naver.com 입니다
    그리구 궁금한점 몇가지 있어서 질문드려요 ㅎ
    1. PCB를 할줄 몰라서 만능기판으로 제작하고 싶은데 주의해야할점
    있나요?
    2. 전 ATMEGA128로 제작하고 싶은데요 데이터시트 참조해서 납땜하면
    되는건가요??
    부탁드립니당

  17. 관련자료는 블로그에서 다운로드 아이콘을 클릭하시면 다운로드 하실수 있습니다.^ 이전에는 비공개로 설정해 두었다 공개해두었기 때문에 그냥 다운로드 됩니다.^
    그리고 Atmega128로 이용하시려면 원하시는 포트에 각자 수신부 구동부등을 연결하신 후에 소스코드에서 포트맵핑만 해주시면 똑같이 구동할수 있어서 가능할것 같습니다.^
    만능기판으로 만드신다면 별도의 주의할 점은 없겠네요. ㅎㅎ 동박면이 안떨어지게 깨끗하게 만드시길 바랍니다.^
    그리고 답변이 늦어서 죄송합니다....

  18. Blog Icon
    DSK3

    8mhz x-tal 이 무엇인가여 ??
    avr128 쓰려고 하는데
    거기에 비슷한게 달려있던데
    avr128 쓰면 8mhz x-tal 안써도되나염?

  19. X-tal은 크리스탈로 사람으로 치면 심장에 해당하는 부품입니다. 디지털 IC는 클럭이라는 계속 반복해서 주파수를 만들어줄수 있는 부품이 필요한데요, 이것이 크리스탈 및 레조네이터, 혹은 기타 발진회로가 되겠습니다.^ 8Mhz로 사용하지 않으셔도 되지만, 그럴경우 리모컨 쪽이랑 송수신 타이머카운터에 시간이 맞지 않을수 있기 때문에 조정이 필요하겠습니다. 또 필요하시면 댓글 달아주세요^

  20. Blog Icon
    DSK3

    ATMEGA 128로 만들어 보려고하는데

    거기에 크리스탈이 달려있거든요 숫자는 SC16.000 써있는데

    따로 8MHZ 안달아줘도 될까요 ??

  21. 또 방문해주셔서 감사드려요.~~
    Atmega128을 사용하시는 본체 쪽에 수신 주기를 송신하는 쪽의 2배로 해주시면 문제없이 구동이 가능합니다. 따라서 따로 달아주지 않아도 될 것 같습니다.^

  22. Blog Icon
    쌩초보

    리모컨은 4메가 크리스탈을 달아주셧구
    본체는 8메가 크리스탈을 달아주셨는데요
    위에 댓글에도 수신주기를 송신주기의 두배로해주시라고했는데
    1.왜 두배로 해줘야하는건가요??
    2.아트메가128을 사용할꺼구요 모터쪽에16메가를 달면
    리모컨쪽에 8메가를 달면되나요?? 소스코드는 수정할게 없어보이구요
    3.그리고 2313 리셋에 연결된 회로는 무슨용도인지좀 알려주세요


    그리고 리모컨쪽 포스팅 보시면 회로도에는 8메가 크리스탈인데
    기판에는 4메가 크리스탈이 달려있네요 회로도가 잘못된거겠죠??

  23. 리모컨은 초기 테스트 버전을 만들 때 리모컨 측에 4Mhz짜리 크리스탈을 사용했었습니다.^ 그런데 PCB의 배선이 부식방지 코팅 중에 끊어지는 바람에 완성단계에서 PCB를 새로 떠서 남아있는 8Mhz로 변경하였구요. 그럼 질문에 대한 답변 드리겠습니다.^

    1. 디지털 IC의 경우 클럭에 따라 동작을 하게 되는데 AVR 역시 크리스탈에서 발생되는 주파수를 클럭으로 사용해서 타이머/카운터 기능 등 다른 기능들을 사용하게 됩니다. 그 때 제가 만든 IR로봇은 타이머/카운터에 기초를 두고 있기 때문에 수신측의 경우 16Mhz 크리스탈 발생 주기 1/16M 해주시면, 0.0000000625초 그리고 여기에 8비트 타이머, 카운터 오버플로우 인터럽트는 8비트 값 256을 넘으면 인터럽트가 발생되므로 0.0000000625 * 256 = 0.000016초가 나오게 됩니다. 이 때 16Mhz크리스탈을 사용했을 때 수신 신호 분석시 사용하는 count 변수는 0.000016초마다 1씩 올라가게 됩니다. 그럼 송신측은 8Mhz 사용시 1/8Mhz 주기 0.000000125초 * 256 = 0.000032초로 16Mhz와 두배의 차이가 나게 되므로, 송신측과 수신측의 SYNC(동기화)가 이루어 지지 않게 됩니다. 그래서 원하는 동작을 실행 하지 않게 되구요. 따라서 수신측에서 count변수의 비교값 및 ISR(TIMER0_OVF_vect)부분의 count 변수도 모두 두배로 입력시켜 주어야, 송신측과 수신시간이 맞아 떨어지게 된답니다.

    2. 네^ 크리스탈은 8Mhz 사용하셔도 되고, 소스코드는 일부 부분 수정과 실제 하드웨어 디버깅이 필요합니다.

    3. Attiny2313에 Reset핀에 연결된 저항과 콘덴서는 초기 전원 투입시 전원의 전압이 불안정 하기 때문에 Reset핀에 Low가 걸리는 시간을 콘덴서와 저항으로 조금더 길게 해서, 전압이 안정된 이후에 AVR이 구동되도록 하는 회로 인데요. 조금더 자세하게는 http://binworld.kr/36 다음 포스팅의 리셋 설계 부분에 설명되어 있습니다.

    답변이 도움이 되시기를 바랍니다. 점점 저도 가르치는 느낌이 되어가네요..가르치면 사람들이 싫어한다던데.. 이러면 안되는데... 저도 배우는 학생인데.. 가끔은 어색하네요.^

  24. Blog Icon
    Lilac

    안녕하세요? 질문 하나 하려합니다.

    1. 오버플로우 인터럽트 질문입니다.
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    if(count>100)
    count=0;
    else
    count++;

    TCNT0=0;
    }

    여기에서 atmega128의 8비트 타이머/카운터0 or 2 를 사용한다면 코드를 그대로 가져다써도 되는거겠죠?
    아니면 count를 100이 아니라 200으로 해주어야하는 건가요?

    2. 그리고 8bit 타이머/카운터를 사용한다면 main 함수 안의 count를 두 배를 해주지 않아도 되는건가요?
    아니면 16bit 타이머/카운터를 안 쓰더라도 atmega128은 X-TAL을 16MHz를 사용하니까 main 함수 안에 신호를 받는 count 수는 75 / 50을 각각 두 배 해서 150 / 100 으로 해주어야 하는건가요?

    3. TIMSK=(1<<TOIE0);
    는 정확히 무엇을 의미하고 어떤 동작을 하는 건가요?
    찾아보니까 인터럽트 개별허용이라고 되어 있던데
    atmega128에서 TOIE0는 레지스터에서 01234567 bit 중에 0번 bit더군요 그렇다면 TIMSK=0x01; 로 해줘도 같은 의미인가요?

  25. 답변드리도록 하겠습니다.^^

    1. 입력해주신 부분이 타이머, 카운터 0번 오버플로우 인터럽트 처리 부분인데요, 타이머, 카운터 0번을 사용하시면 되고, 2번의 경우는 오버플로우가 8bit에서 발생하고, 오버플로우 인터럽트 발생이 가능하면 동일하게 사용해도 됩니다. 그리고 또 하나 송신부와 수신부의 시간 동기화가 되려면, 양쪽의 클럭 발생시간이 동일해야 되는데, 소스 수정을 하지 않으시려면 송신부와 수신부의 X-tal(크리스탈)을 같은 주파수 값으로 사용하시면 소스를 변경하시지 않으셔도 됩니다.

    2. 역시 1번과 마찬가지로 송신부와 수신부의 사용중인 크리스탈 주파수 값이 다르다면, 만약 송신부는 8Mhz이고, 수신부는 16Mhz라면 수신부측의 소스코드에서 count 변수값을 2배로 올려주셔야 한답니다.^

    3. TIMSK (Timer Interrupt Mask Register)는 타이머 인터럽트를 총괄하는 레지스터이고, 일단 TIMSK=0x01;과 TIMSK=(1<<TOIE0);과 같은 말입니다. 이미 컴파일러에 #define TOIE0 1 로 1번 비트에 상수로 설정되어있기 때문에 설정을 구분하기 쉽도록 보통 시프트 연산자를 사용해서 표현되어지곤 한답니다. 그리고 개별허용이라는 의미는 아마 각각 TOIE0는 (Timer Overflow Interrupt Enable 0)로 타이머,카운터0번을 사용한 오버플로우 인터럽트만 허용하겠다른 의미이고, OCIE0A등 과 같은 것들은 비교매치 인터럽트를 허용하겠다는 의미로 각각 동작을 구성할 수 있기 때문에 개별설정이라고 표현 한것 같습니다.

    그럼 도움이 되셨기를 바랍니다.ㅎㅎ

  26. Blog Icon
    lucky888

    질문드립니다
    라인트레이서를 제작해본 학생인데 라인트레이서에는 전원부가 들어가거든요
    근데 여기는 없는거 같아요 avr128로 구동하려는데 5v로 변환해주는 전원부가 필요하지않나요
    궁금합니다

  27. 안녕하세요^ 답글드립니다.
    제작한 적외선 제어 로봇은 전원부가 4셀 AAA 또는 AA 배터리로 이루어 져있고, JP1커넥터에 연결되어집니다. 그리고 Attiny2313이 데이터시트 상으로 표기되어있는 입력가능한 전압은 1.8V ~ 5.5V 라고 표시되어있지만, 6V를 공급해도 이상이 없고, 주변회로 LED, 모터, 저항 등에 의해서 걸리는 전압이 있기 때문에 이상없이 동작이 가능합니다.^ 하지만 외부에서 전압이 높은 전원이 들어온다면 예를들어 리튬계열의 배터리를 2셀 직렬연결해서 전원으로 사용하는 경우 공칭전압은 3.7V이나 만충전시 4.2V로 올라가기 때문에 2셀 직렬연결시 8.4V가 되기 때문에 IC 파손우려가 있어서 7805등과 같은 레귤레이터로 전압을 다운시켜 입력시킬 필요가 있습니다.

    추가로 니켈 계열의 공칭전압은 1.2V이고 만충전시에는 1.45V 까지 상승합니다.^^ 도움되시기를 바랄께요.^^

  28. Blog Icon
    lucky888

    아 그렇다면 AA건전지 4개를 사용한다면
    따로 전원부 안만들어도 된다는소린가염??
    그리고 메인보드보니까 리셋이 따로 있더라구요
    AVR128로 제작시에도 따로 만들어 줘야하나용?
    궁금합니다

  29. 네^ 저는 만들때 계속해서 AA 건전지 4개를 사용중입니다. 외부전원이용시에는 전원부를 만들어야 한답니다.^^ 그리고 리셋부는 전원 초기 투입시 기계적인 접점 혹은 전압불안정으로 인해서 AVR이 리셋되는것을 막기 위해서 전원이 안정화 단계에 갈 때까지 AVR을 동작시키지 않도록 설계된 Power-On-Reset 회로 입니다.^ 꼭 만들필요는 없고, Reset핀을 그냥 VCC단에 연결해 두시면 된답니다.

  30. Blog Icon
    달비골

    안녕하세요
    고등학생같은데 대단하네요
    삼성리모콘 으로 송수신 연습하고 있는데 통모르겠어요
    괜찮으시면 관련자료 부탁드려도 될런지?
    가능하시다면 taegusa@hanmail.net 입니다
    감사합니다...

  31. 저는 소프트웨어 UART 방식으로 리모컨 송수신을 만들어 봤고, 아직 공식 리모컨 코드는 시도해 보지 않았습니다. 따라서 자료는 없구요 ^^; 다만 NEC코드, 삼성 리모컨 코드 등을 찾아 보시면 될것 같습니다. 해당 코드도 역시 적외선을 이용해서 직렬로 리피트코드, 데이터코드, 데이터 반전코드 등을 송신하므로, 타이머 카운터 및 외부인터럽트를 이용해서 각 비트의 송신 시간에 맞춰서 수신데이터를 만들어 내시면 될 것 같습니다.^ 큰 도움 못드려 죄송합니다.

  32. Blog Icon
    mk8989

    안녕하세요
    블로그보구 제작해보려는데요
    저는 led를 한 6개정도 달아서 리모컨으러 온오프 하려고 생각중인데여 위의 메인로봇에 6v를 주셧더라구요 근데 led를 6개 추가한상태에서도 6v를 주면 제대로동작될가여

  33. 안녕하세요 :D
    LED가 대전류를 사용하는 파워 LED라면 트랜지스터를 이용해서 http://binworld.kr/36 다음 포스팅 하단의 대전류 회로를 이용 해서 제어해주시면 되고, 일반적인 3파이, 5파이 LED라면 그냥 저항을 통해 LED를 연결하셔도 충분히 구동이 가능합니다.^

  34. Blog Icon
    잘모르겠ㅠㅠ습니다

    안녕하세요 우선 좋은글 감사합니다!! 잘 보고 열심히 만드려고 하는데 몇가지 문제점이 있어서 질문드립니다ㅠㅠ

    ATtiny 두개를 사용하여 모터를 돌리는 부분은 성공을 하였으나, 송신부에 ATmega128을 사용한 경우에 동작을 잘 하지 않습니다.

    1. 컴파일시 오류
    올려주신 소스코드를 가지고 atmega128로 컴파일시 다음과 같은 오류가 납니다.
    ../hello.c:35: error: 'TCCR0A' undeclared (first use in this function)
    ../hello.c:35: error: (Each undeclared identifier is reported only once
    ../hello.c:35: error: for each function it appears in.)
    ../hello.c:36: error: 'TCCR0B' undeclared (first use in this function)
    1) 128의 경우 타이머0번은 TCCR이 0A와 0B로 구분이 되어 있지 않아서 생기는 문제인가요?
    2) 타이머1번을 사용하기 위해 소스코드의 타이머0관련 코드들을 1로 바꾸어 주면 빌드시 에러는 안나는데 괜찮은 방법인지요?
    3)TCCR0A=0x00;
    TCCR0B=0x01;
    이부분에서 0A는 카운터 사용안함, 0B는 분주사용함 이라고 설정된것 같은데 두개를 다르게 설정한 이유가 무엇인가요?

    2. 송신부 Atmega128의 클럭을 내부 8Mhz로 사용할 경우
    송신부 Atmega128의 클럭을 8Mhz로 맞추기 위하여 퓨즈비트를
    int. RC osc. 8Mhz: start-up time 6CK + 64ms로 변경해 주었는데 괜찮을까요?

    3. 송신부 Atmega128의 클럭을 외부 16Mhz로 사용할 경우
    다른 댓글을 읽어보니 클럭의 주파수가 서로 다른경우 카운트 값을 변경하라고 하셨는데
    main 함수 뿐만 아니라 다음과 같은 모든값을 변경해 주어야 하나요?
    while(count<50){}
    if((PIND&0x01)==0)
    data=data|0x20;
    PORTB=data||0x20;


    바쁘실텐데 엄청 길게 질문해서 죄송하고,, 감사합니다!!
    좋은하루 되시길,,^^

  35. 안녕하세요.^
    바로 답글 들어가겠습니다. :D
    1. 먼저 발생하는 에러는 Attiny2313과 Atmega128은 타이머/카운터0번의 레지스터 정의가 다릅니다. Atmega128은 TCCR0에 Attiny2313의 TCCR0A와 TCCR0B가 모두 포함되어 있습니다. 따라서 이 부분은 제거하고 CS00만 비트1로 셋팅되도록 TCCR0 = 0x01; 로 설정해 주시면 되겠습니다. 레지스터에 대한 자세한 사항은 http://binworld.kr/35 해당 포스팅에 Attiny2313 기준으로 설명 되어 있고, Atmega128 데이터시트에서 찾기로 TCCR0을 찾아 비교해 보시면 차이를 확실히 알 수 있을 것 같습니다.^ 그리고 TCCR0A에 0x00한 것은 원래 입력하지 않아도 되는 문장이나 타이머/카운터에 사용되는 레지스터이기에 소스코드에 입력되어 있습니다. 사용하지 않는 것은 아니고, 단순히 초기화 구문정도의 역할이 되겠습니다. :>

    2. 내부클럭을 사용할 경우 정확도가 떨어지기는 하지만, 문제는 없습니다. 설정하신 퓨즈비트도 맞구요, 그리고 혹시 퓨즈비트에 CKDIV8이 설정되어 있지않나 확인하시기 바랍니다. 해당 비트를 체크하면 클럭이 8분주 되어 1Mhz를 클럭으로 이용하게 됩니다.^

    4. 이 부분에 대해서는 다른 분의 댓글에 작성했다 싶이, 8Mhz는 16Mhz 크리스탈의 주기에 2배 이기 때문에 16Mhz 크리스탈을 사용하는 쪽에서 타이머/카운터 인터럽트 루틴 부분과 count변수를 8Mhz 쪽 두배로 올려주셔야 합니다. 그리고 리모컨 쪽에서 타이머/카운터 값중 time 값은 변경하지 않으셔도 된답니다. :D

    그럼 좋은 작품 만드시기를 바라겠습니다.ㅎㅎ

  36. Blog Icon
    이상범

    먼저.. 좋은 자료 성의있게 올려 주신점에 너무 감사드립니다. 또 존경스러울 정도네요^^

    저도 avr공부하는 학생이구요. 궁금한것이 하나 있어 여쭙겠습니다.

    그 회로도 그리고 엣칭하는 작업?에 관한 것들은 어디서 보고 배울 수 있습니까?

    서적이면 서적이름 기술이면 기술이름.. 어떻게 검색해서 공부해야할지 알려주시면 감사하겠습니다.^^

  37. 안녕하세요^
    올해 초부터 정신없게 보냈더니 답변이 너무 늦어버렸습니다. 저는 이쪽분야에서 공부하시고 계신 선생님 작업을 도우면서 조금씩 배운것도 있고, 주로 인터넷 당근이의 AVR 갖구놀기 같은 카페에서 정보를 얻고 있습니다. 처음 샀던 로봇 책은 송용수 저자의 AVR Bible책을 사서 보았는데요. 아마 Attiny2313으로 공부하시려면 AVR Bible2를 구매하시면 될것같습니다. 그리고 이 책이 본인에게는 어려울수 있으므로 잘 맞는 책을 서점가서 보시고 사는것이 확실히 좋을것 같습니다. 더 필요한것이 있다면 제 메일로 문의 주시기 바랍니다^^ 도움되셨기를 바래요 ^-^

  38. Blog Icon
    황재혁

    안녕하세요. 지금 학교에서 rc카 프로젝트를 하고있는데, 생각못한 아이디어가 많네요ㅎㅎ
    현재 진도가 잘안나가고 모르는게 많다보니 벽에부딪혔어요.. 혹 실례가 안된다면 관련자료 부탁드려도 될까요? 메일은 hit5053@naver.com 입니다 부탁드릴게요.

  39. 안녕하세요.^ BinGoon입니다.
    먼저 죄송합니다만, 따로 관련된 자료는 없습니다. 그 때 그 때 필요한 정보 있으면 관련된 카페에 질문을 올려서 해결했기때문에 블로그에 개제된 것 이상의 자료는 없습니다.

    그렇지만, 모르는 점이 생긴다면, 우측 하단에 Blogroll에 당근이의 AVR갖구놀기 카페에 질문하시면 대단하신 분들이 자세하게 답변하여 주신답니다. 또한 코드자체나 동작에 대한 기술에 대해서는 블로그 또는 이메일을 보내주시면 답변 드릴수 있습니다. 참고부탁드립니다.

    부족하지만 찾아주셔서 감사드립니다.^^

  40. Blog Icon
    김태민

    안녕하세요 글 정말 잘 읽고 있습니다. 정말 많은 도움이 되고 있습니다.

    저도 공부하기 위해서 브레드보드에 따라서 회로도 구성해보고, PCB판에 납땜도 하고 있는데요.

    적외선 송신부는 그대로 해서 적외선이 나오는 것을 확인했는데

    수신부는 확인을 어떻게 해봐야 할 지 모르겠습니다.

    제가 한 방법으로는 똑같이 회로를 구성해 보고 만들어 둔 적외선을(적외선 송신부) 가져다 대 봤습니다.

    그런데 출력 전압에 변화가 없네요...

    귀찮으시겠지만 답변 부탁드립니다^^

티스토리 툴바