임베디드랜드

    ▶ 회로설명 (circuit description) : 필자는 (누구나) 어떤 새로운 일을 배울 때면, (반드시) 목적이 있거나 또는 있어야 한다고 생각합니다. 예를들면... 새로운 게임을 습득하려고 할 때 화려한 그래픽, 현란한 사운드, 탄탄한 스토리, 친구들과의 협동 또는 경쟁, 승리의 기쁨 등을 마음속에 그리고 있다고 할 수 있습니다. 영화나 만화, 소설책에서는 새롭고 특이한 모험과 악의 응징, 지순하고 열렬한 사랑, 인간애 또는 무지막지한 공포와 반전을 기대합니다. 음악에서는 정열적이거나 차분하게 정리되는 마음을... 월드컵 축구와 같은 운동경기에서는 (각본없는 드라마에서 느낄 수 있는) 예키지 않은 감동을 마음속에 두고 있습니다. ^^
    그렇다면 전자회로에서는 (이들과는 다른) 감동적이고 가슴 벅찬 새로운 어떤 것을 기대할 수 있을까요? 한 마디로 어떤 목적이 있기에... (보통 사람들이) 전자회로를 공부할 만한 가치가 있는 것인가요?
    답은 자연세계 안에서 여러분을 관객이 아닌 주인공으로 만들어 준다는 것입니다. 다시 설명하면 (우리가 살아가는) 물리세계의 변화나 기계의 동작을 관측하고 해석해서... 그들을 (원하는 대로) 움직일 재주와 능력이 있는 주연(not 관객)이자 창작자의 반열로 여러분을 초대하는 것입니다. 즉 영화의 감독, 연극무대나 드라마의 PD, 책의 작가, 만화가, 팝이나 가요, 교향곡의 작곡가, 그림의 화가, 게임의 제작자나 스토리 메이커와 같은 수준이라고 보시면 이해하기 쉽겠지요... ^^
    살아가는 인생이란 연극 가운데서... 주인공의 역활을 맡고자 하는 마음은 누구에게나 공통적인 욕망입니다. 문제는 나의 재능(talent)에 적합한 어떤 역활의 주인공을 선택하느냐 하는 것이지요... 인생의 주인공은 인간세계와 자연세계의 크게 두 부류로 나누어 집니다. 물론 두 세계를 총괄하는 신(神)이라는 총 감독이 있기는 하지만... 복잡하게 분화되어 있는 세상에서 나만의 (작은) 역활을 찾아내는 것이 그렇게 어렵지만은 않을 것입니다.
    "전자회로를 이해"한다는 뜻은... (자연세계 안에서) 나를 주인공으로 하여 씌여진 대본을 읽을 수 있는, 아이템(기술) 중 하나를 찾았다는 점을 의미합니다. 또 하나의 아이템은 "컴퓨터 언어"이며 마지막 아이템은 "센서와 엑튜에이터" 입니다.
    ※ PC 자체와 Basic, C, C++와 갈은 컴퓨터 언어는 이미 널리 보급되어 있습니다. (필요하다면 쉽게 배울 수 있는 책과 자료도 많이 있고요...) 센서는 처음부터 끝까지 (다 배우고 나서) 사용할 수 있는 것이 아닙니다. 내가 관심있는 분야가 나타나면, 그 때 집중적으로 탐구하는 형식으로 공부하는 방법이 유효합니다. (종류가 워낙 다양하기 때문이죠...) 모터와 솔레노이드로 대표되는 엑튜에이터는 몇몇만 이해하면 충분합니다. 그러므로 전자회로만 활용할 수 있으면, 여행준비의 50%는 완료되는 셈이지요... ^^

    ▶ 회로도 (The circuit diagram) : 인터페이스란 물리세계와 컴퓨터 세계의 국경에 세워진 검문소... ^^

    우리의 자연세계 이해와 통제(제어)를 위한 여행에서... 전자회로의 습득은 "인터페이스 영역"을 담당하는 회로를 제작하는데 목적이 있습니다. "인터페이스 영역"이란 컴퓨터 세계와 물리세계의 국경선에 세워진 검문소(초소)와 같은 것으로, 그림에서 ②, ③번을 합한 부분입니다. 이 부분을 거쳐서... 컴퓨터 명령은 전압과 전류로 변환되어 물리세계로 전달되며, (센서에 의해 전압/전류로 바뀐) 물리세계의 신호는 컴퓨터의 언어가 이해할 수 있는 디지털 데이터로 전환되는 것입니다.
    "인터페이스 영역"은 데이터 수집/제어 보드시그널 컨디셔너라는 고가의 장치로 판매되고 있습니다. 전용 소프트웨어도 마찬가지입니다. 이 이야기는 우리에게 들어가고 싶어도 (입장권이 비싸서) 문 앞에 서 있을 수 밖에 없는, 테마동산 앞의 어린이를 연상시킵니다. 이 어린이는 우리의 호기심을 의미합니다.
    오늘 날... 보통 사람들 까지도 PC를 보유하고 있습니다. 교육에 의해 컴퓨터 언어를 구사할 수 있는 사람도 많아졌습니다. 더구나 우리나라는 세계최고의 인터넷 환경을 자랑합니다. 인터넷의 발달로 (과거에는 꿈도 꿀 수 없었던) 자료의 공유와 고급정보의 습득이 용이해졌습니다. 기술의 발달로 전자부품과 각종 센서, 모터의 종류는 나날이 풍부해지고 가격은 이미 저렴합니다. 어떻게든 인터페이스라는 (최후의) 장벽을 부수고, 새로운 공기를 맛 보고 싶지 않으십니까? 필자는 이와같은 강한 욕구와 충동을 느낍니다...

    그림에서 처럼, 지금까지 소개한 전자회로와 마이컴의 지식만으로... ②, ③번 "인터페이스 영역"의 기술적 내용을 충분히 이해할 수 있습니다.

    필자의 전략을 말씀드리지요... ② 번의 로거/콘트롤러는 (반복해서) 사용되며, 반드시 마이컴을 사용해서 개발해야 합니다. 마이컴은 초보자가 단시간에 습득하기 힘듭니다. (동작의 이해는 가능합니다) 그러므로 ② 번은 전문가가 개발합니다. 단 사양 (즉 성능)을 크게 낮춰서 개발합니다. 걱정하지 마십시요. 성능을 낮춰도 80~90%의 대상에는 적용 가능합니다. 그렇게 되면 개발시간이 단축되고 개발비가 적게 들 뿐만 아니라, 만들어진 로거/컨트롤러의 가격도 함께 저렴해집니다.
    ※ ② 번의 로거/콘트롤러부의 정식명칭은... A/D를 중시한 DAQ (Data Acqusition) 보드와 D/A, I/O, Counter/Timer 보드입니다. 대부분의 보드(board)는 PC 슬롯에 장착되는 구조를 채택하고 있습니다. 로거(Logger)란... 본래 PC와 분리되어 독자적으로 데이터를 수집/저장하는 장치를 일컫는 용어입니다. ^^

    ③ 번 "시그날 컨디셔닝" 부분은 ④, ⑤ 번의 대상에 따라 달라집니다. 이 부분에 (지금까지 공부해 온) 전자회로로 직접 제작합니다. 브레드보드에 만들어도 좋고, 만능기판에 납땜해 만들어도 좋습니다. 어차피 ③ 번 부분은 전자회로로 구성되는 부분이니까요... ^^

    ※ ④, ⑤ 번 (물리세계의) 대상 선정과 측정/제어방법은, 본 홈페이지의 프로젝트 테마로 꾸분히 개발되어 나갈 것입니다. (개발된 테마의 개선과 확장에는 많은 분들의 도움이 필요하게 되겠지요... ^^)

    ① 번 PC 부분은 프로그래밍만 남습니다. ② 번을 (표준 포트를 사용하도록 설계하면) 따로 프로그램을 작성하지 않고, (응용 프로그램 만으로) 간단히 동작을 확인할 수 있습니다. 그러나 기본 동작의 확인만으로는 성에 차지 않게 될 것입니다. 내 생각대로 동작시켜 보려면, 프로그램을 확장해서 작성하면 됩니다. 표준 통신포트를 이용하므로, 현존하는 모든 프로그램 언어를 활용할 수 있습니다. 도전 하십시요... ^^

     
    ▶ 회로도 (The circuit diagram) : 나의 로거 설계전략 (MY Logger Design Strategy)

    지금까지 제시한 데이터 인터페이싱의 핵심을 이루는 로거/콘트롤러 (Logger/Controller)의 설계전략을 설명 하겠습니다. 설계전략의 기본은 1. 간단한 사용 2. A/D, D/A, I/O 통합기능 3. 샘플링 레이트로 수 회 samples/sec 정도를 목표 (1 초에 2~3 회 자료수집과 명령수행이 가능) 4. 펌 웨어 업그레이드 기능 5. 저가형 설계 (안정화 전원회로를 내장한) 등으로 요약할 수 있습니다.
    이 정도 성능이면... 필요한 (초급 수준의) 신호처리 회로를 제작하고, PC에서 작성한 간단한 프로그램만으로... 대다수의 (기초) 실험을 수행하면서 자료수집해석제어실험을 만끽해 볼 수 있습니다. ^^
    1 번 목표를 위해... PC의 표준 I/O 포트인 RS-232 통신방식으로 명령을 받고, (수집한) 자료와 (명령)수행 결과를 PC로 전송하도록 설계합니다. 명령과 데이터 형식은 ASCII 방식을 사용... (문자교환방식)
    2 번 목표를 위해... 5 ch A/D 컨버터가 내장된 PIC16F873A 마이크로 콘트롤러를 채택하였습니다.
    3 번 목표를 위해... RS-232 통신/문자명령 처리등을 위한 임베디드 프로그램을, C 언어로 개발합니다.
    4 번 목표를 위해... 부트로더(boot Loader) 프로그램을 내장합니다. PIC용 부트로더는 사용법과 자료가 인터넷에 공개되어 있습니다. 부트로더를 채택함으로써 언제라도 새로운 버젼의 펌 웨어를 업그레이드 할 수 있게되어 로거/콘트롤러의 활용도가 높아지고 기능변경과 개선이 용이하게 됩니다. ^^
    5 번 목표를 위해... 다소 투박하더라도 표준형태의 부품을 사용합니다. 또 (자신에게 맞는 형태의) 로거/콘트롤러를 제작하고 싶은 사람들을 위해 부품만도 따로 공급합니다. (PCB 형태의 완제품도 판매)

    마이컴에 익숙한 사람이라면, 자신만의 로거/콘트롤러를 설계하고 만들 수 있으리라고 생각됩니다. 왜냐하면 로거/콘트롤러 프로그래밍에 특별히 어려운 부분은 없기 때문입니다. (회로도는 다음 페이지에...)

    그러나 필자의 의견으로는 굳이 로거/콘트롤러를 따로 설계해서 제작하지 않기를 권합니다. 그 이유는 (앞으로 프로젝트를 진행하면서 점차 밝혀 지겠지만) 이제부터 진행하려는 프로젝트에서, 로거/콘트롤러는 일종의 (부분적인) 부품에 불과하다는 점을 이해하게 될 것이기 때문입니다.
    정말 재미있고 흥미를 자아내는 주제는... 실제 세상에서 데이터를 수집하고 해석해서 의미를 알아내고, 모터를 제어해서 원하는 동작을 만드는 등의 문제를 해결해 나가는 것입니다. 이 과정에서 로거/콘트롤러가 중요한 부품이기는 하지만, 한 편으로는 사용할 수 있으면 충분하다고 볼 수도 있는 것입니다. 왜냐하면 로거/콘트롤러 그 자체만으로는 어떤 문제가 해결되지 않으며, 반드시 다른 부분들과 조합되어 사용되어야 하기 때문입니다. 이런 이유로 대학과 연구소에서도 고가의 DAQ 보드를, (설계하지 않고) 구입해서 사용하는 것입니다. 결론적으로 로거/콘트롤러는 (최종)목적에 도달하기 위한 하나의 필요품일 뿐입니다.

    From http://www.devicemart.co.kr/mart7/circuitry/bbs.php?table=beginner&query=view&uid=47&p=1

Posted by suvisor