TOF(Time of Flight)는 신호(근적외선, 초음파, 레이저 등)를 이용하여 어떤 사물의 거리를 측정하는 기술이다. 어떤 곳에서는 레이저로 TOF 기술을 이용하여 질량분석기를 구현하기도 한다. TOF 센서를 이용한 깊이 정보를 추출하기 위해 TOF 거리 연산의 기본원리를 알아본다. 1. TOF의 개념 TOF(Time of Flight)는 신호(근적외선, 초음파, 레이저 등)를 이용하여 어떤 사물의 거리를 측정하는 기술이다. 2015년 현재 최신 3D 카메라에 적용되지만 점차 그 응용범위를 넓혀가고 있다. 어떤 곳에서는 레이저로 TOF 기술을 이용하여 질량분석기를 구현하기도 한다. 'Time of Flight' 기술이란 신호가 날아가서 어떤 물체에 부딪친 후 다시 돌아오는 시간(비행 시간)을 측정하여 사물의 깊이(depth)를 측정하는 것이다. 2. TOF 거리 연산의 기본원리 TOF 센서를 이용한 깊이 정보를 추출하기 위한 기본원리를 알아본다. TOF 기술은 송신부에서 신호를 발사하고, 수신부에서 신호를 측정하는데 신호의 비행시간을 측정하므로 TOF 센서는 송신부와 수신부를 한 장치에서 약간 떨어뜨려 구현한다. 그리고 송신부에서 반사된 신호가 수신부
1. 복사생성자(Copy Constructor)의 개념 C, C++은 하드웨어 제어 등 가장 많이 쓰는 언어 중 하나이다. 이번에는 C++에서 복사생성자에 대해 파악해 본다. C++에서는 C에는 없는 복사생성자(Copy Constructor)가 사용된다. 같은 class에서 객체를 생성할 때 새로 멤버 데이터를 일일이 지정하는 번거로움을 피하기 위해 이미 존재하는 객체의 정보를 그대로 가져다 사용한다. 또한 동적메모리에서 두 개 이상의 객체를 다룰 때 한 객체의 메모리가 삭제되면 다른 객체의 메모리도 삭제되는 것을 막기 위해서이다. 복사생성자는 같은 class에서 한 객체의 값을 다른 객체에 전해 주어야 할 때 다른 생성자처럼 객체 생성을 도와주면서 객체의 데이터를 초기화 시킨다. 한 객체의 값을 다른 객체에 전해 주는 방법에는 2가지가 있다. 첫째, 대입을 통해서다. 둘째는 초기화를 통해서다. 복사생성자는 초기화 방법을 통해서 한 객체를 값을 다른 객체에 전해주는 것이다. 왜 초기화를 하는가 하면 프로그램이 원하지 않는 쓰레기 값 대신 의미 있는 값으로 동작시키려고 하는 것이다. 복사생성자는 사용자가 직접 정의할 수도 있고, 사용자가 별도로 정의하지 않으면
C++에서 friend 함수 다루기 1. friend 함수의 개념 C, C++은 하드웨어 제어 등 가장 많이 쓰는 언어 중 하나이다. 이번에는 C++에서 friend 함수에 대해 파악해 본다. C++에서는 C에는 없는 friend 함수가 사용된다. 왜 friend 함수를 사용하는가? friend 키워드를 정의하면 class의 멤버 함수가 아니라 class 내부에서도 class 외부에서 선언하는 독립된 일반 함수로 동작한다. 따라서 class의 모든 멤버 변수(public, private, protected로 선언된 비공개 멤버변수 포함)에 접근하여 참조할 수 있는 전역함수로 사용할 수 있기 때문이다. 2. friend 함수 형식 friend 함수형 friend 멤버 함수명(매개변수); 3. friend 함수를 사용하는 방법 (예제 1) //friend 함수 선언 class Sky { public: friend void DataShow(Sky &obj); // friend 함수 선언. 전역 함수로서 어떤 class에도 속하지 않는 독립된 함수 private: unsigned int Temperature ; unsigned int Weather; }; /
최근 국내 전기, 전자 분야를 보면 반도체를 응용한 제품이 많다. 이러한 제품은 지금도 수없이 많이 개발되고 있다. 이러한 상황에서 전기, 전자, 반도체 관련 기술자들은 반도체의 종류와 응용 기술에 대해 숙지하고, 응용하는 것이 중요해 보인다. 따라서 이 글에서는 반도체의 종류와 그 응용 기술에 관해 살펴본다. 반도체의 종류를 알아보자 그림 1에 반도체의 종류를 분류했다. 이러한 분류 외에도 집적도, 용도 및 재질, IC Package에 따라 여러 가지로 나눌 수 있다. 이 글을 쓰는 목적은 전기전자 회로 설계, 회로 분석과 응용을 위한 것이므로 위의 분류를 토대로 분석하려 한다. 1. 아날로그 반도체 아날로그 반도체는 빛, 소리, 압력, 전기 등의 아날로그 신호를 디지털 신호로 전환 및 관리하는 반도체이다. 다음과 같은 종류가 있다. ■전력관리IC(PMIC) : 전자기기의 전력 소모를 최소화하는 반도체이다. 일례로 휴대폰을 사용하지 않을 때 LCD화면이 꺼지게 하는 IC를 들 수 있으며, 대표적 기업으로 텍사스인스투르먼츠(TI)와 실리콘 마이터스를 꼽을 수 있다. ■조명용 LED구동 IC : LED 조명에 전원을 연결하는 반도체이다. 일례로 LED 조명의
성공한 골든 크리에이터들의 선견지명 2015년 1월 언론보도에 의하면 민간 우주개발업체 스페이스X사와 전기자동차 업체인 테슬라모터스의 CEO인 엘론 머스크 회장이 새로운 비즈니스를 준비하고 있다고 한다. 그 새로운 사업은 ‘지구저궤도 위성 인터넷 서비스 사업’으로서 향후 화성 식민지 개발 계획도 연계할 예정이라고 한다. 엘론 머스크 회장은 남이 하지 않거나 생각지도 못하는 다소 엉뚱하다고 싶을 정도의 사업에 뛰어 들어서 그 사업을 끝내 성공시킴으로써 큰 부를 창출한 어찌 보면 괴짜 CEO이다.그런데 그는 나름대로 사업에 대한 선견지명적인 안목을 갖고 있다고 할 수 있다. 왜냐하면 보통 사람들은 생각도 하지 못하는 사업을 추진하여 대부분 성공시켰기 때문이다. 지금은 잘 알려진 전자결제 서비스인 Paypal의 전신으로서 온라인 결제 서비스 회사인 X.com을 설립하여 성공을 거둔 것이나, 우주여행을 위한 로켓을 저렴한 가격으로 만들고 싶다는 비전으로 세운 스페이스X사의 사업도 성공을 거두고 있다. 최신 보도에 의하면 구글은 스페이스X에 10억달러(약 1조 786억원)를 투자하기로 했다고 월스트리트저널(WSJ)이 관계자의 말을 인용해 2015
미래창조과학부, 산업통상자원부, 방송통신위원회, 금융위원회 및 중소기업청 등 5개 부처는 2015년 1월 15일 청와대 합동 대통령 업무보고에서 ‘역동적 혁신경제’를 보고했다. 이 보고의 핵심은 수도권 지역인 판교․테헤란로․홍릉을 창조경제 전진 기지로 육성한다는 것이다. 정부는 올 상반기 중 전국적으로 17개의 창조경제혁신센터를 구축할 예정이다. 대한민국의 기술을 총괄하는 기관이 기획하고 준비했기 때문에 전반적으로는 좋은 기획과 내용이라고 생각한다. 이 외에 필자 나름대로 제안할 사항들이 있어 이 글을 쓰게 됐다. 역동적 혁신경제 내용 1. 창조경제 구현 미래창조과학부는 창조경제 생태계 확산을 위해 경기도 판교에 창조경제밸리를, 서울 강남구 테헤란로에는 하이테크 창업 캠퍼스를 조성할 예정이다. 판교에는 제2 테크노밸리를 건설해 혁신 클러스터로 육성하며, 테헤란로에 10,000㎡ 규모로 설치되는 창업 캠퍼스에는 창업팀뿐만 아니라 투자사 등도 함께 입주시킬 예정이다. 더불어 민간 창업양성 업체 등과 협력해 미국 실리콘밸리식의 네트워킹 환경을 마련하겠다는 방침이다. 2017년까지 테헤란로에는 160개 팀이 입주하며, 이들
마이크로콘트롤러(이하 MCU)로 LED를 제어하는 것은 제어의 기본이라고 할 수 있다. 그런데 실무에서는 소스 코드(source code)가 상당히 긴 편이므로 기본적인 코드를 많이 숙지하면 응용에 도움이 된다. 그래서 LED 제어로 기본 응용을 파악하고, 노하우를 잘 익히면 LED 제어를 다양하게 할 수 있다. LED 제어에는 기본적으로 DDR(Data Direction Register) 레지스터와 PORT 레지스터를 사용한다. DDR 레지스터는 Atmega128 MCU의 PORT 입출력을 결정하며, PORT 레지스터는 실제 데이터를 설정해 준다. DDR 레지스터와 PORT 레지스터의 리셋 후 초깃값은 0이다. 여기서는 Atmega128 MCU를 사용하여 LED를 제어하는 방법을 살펴본다. 간단한 LED 제어 비교적 간단한 LED 제어에 대한 회로는 그림 1과 같다. 이 회로에서 PORT에 직접 LED가 연결되어 있으며, 스위치를 이용하여 선택적인 동작을 할 때는 Buffer IC(74HC244)를 사용할 수도 있다. LED는 Active Low 방식으로 구동된다. 회로를 구동하기 위하여 WinAVR2010의 Mfile에서 Makefile을 만든다. Mak
AVR MCU 개발 시 유의해야 할 사항 마이크로컨트롤러(이하 MCU) 개발 시 하드웨어 또는 C 언어 프로그래밍 오류에 의해 장비가 원하는대로 동작하지 않는 경우가 있다. 여기서는 MCU 개발 시 유의해야 할 점에 대해 살펴본다. 현재 AVR MCU가 많이 사용되므로 AVR 위주로 설명한다. 시뮬레이션과 회로 동작 일반적으로 전자회로를 개발할 때 양산하기 전에 회로를 미리 구성하여 회로가 정상적으로 동작하는지 파악한다. 그리고 시뮬레이션 프로그램 사용하여 전자회로의 동작을 체크하기도 한다. 비교적 간단한 회로인 경우 시뮬레이션에서 잘 동작하면 실제로도 잘 동작한다. 그러나 회로가 복잡해질수록 시뮬레이션에서는 잘 동작했지만 실제로 회로를 꾸며보면 제대로 동작하지 않는 경우가 있다. WinAVR Programmer's Notepad와 Codevision C의 특징과 비교 1. WinAVR WinAVR을 설치하면 자동으로 WinAVR Programmer’s Notepad가 깔린다. WinAVR에는 gcc 컴파일러를 구동할 수 있는 기능이 있으며 무료 프로그램치고는 사용하기 좋은 편이다. 단, gcc 컴파일러를 사용할 때는 소스 파일을 작성한 후, 작성
소프트웨어 교육, 무엇이 해법인가? 필자는 그 동안 소프트웨어 교육을 많이 받았고, 실제 실무 현장에서 연구 및 개발도 해 보았지만 아쉬운 점들이 있었다. 이 글은 필자가 소프트웨어 분야에 종사하면서 분석, 조사, 경험했던 일을 바탕으로, 우리나라 소프트웨어 교육에 일익을 담당하고자 서술한 것이다. 초중고 학생들에게 적합한 내용이지만, 대학 및 일반인 대상의 소프트웨어 교육에도 적용할 수 있을 것이다. 소프트웨어 교육의 필요성 요즘 첨단 IT 제품이 활발히 개발되면서 소프트웨어의 중요성이 커지고 있다. 우리나라의 하드웨어 분야는 세계 최고 수준이지만, 소프트웨어 분야는 아직 풀어야 할 과제가 많다고 생각한다. 이에 따라 정부에서도 소프트웨어 교육의 필요성을 느껴 중학교 및 고등학교에서도 소프트웨어 교육을 강화시키려고 하고 있다. 교육 당국에서는 소프트웨어 교육에 대해 훌륭한 전문가들을 참여시켜 많은 논의를 거치고, 여러 가지 교육 방법들을 고려하여 거의 완벽한 지침이 확정된 후 일선 학교들에 교육시킬 에정이다. 이렇게 교육 당국이 상당한 노력을 기울이고 있음에도 불구하고, 일선 실무자로서 겪은 좋은 제안도 도움이 될 수 있다는 생각에, 필자가 평소 소프트웨어