[30호]USB to Serial-Dual Converter(ssenU2S2) 출시
USB to Serial-Dual Converter(ssenU2S2) 출시
쎈테크놀러지에서 출시한 ssenU2S2는 USB 포트를 통해 시리얼 포트를 사용할 수 있도록 지원하는 USB to Serial Converter 이다.
통신 시스템이 고속화, 소형화 됨에 따라 다양한 통신 방법이 개발되어 활용되고 있지만 시리얼 통신 방식은 여전히 광범위하게 사용되고 있다. 특히 자동화기기, 산업용 기기, 임베디드 시스템 등에서는 그 편리성과 효율성으로 인해 필수적인 통신 방식이라 할 수 있다. ssenU2S2는 다양한 시리얼 통신 방식의 지원과, 배선 연결의 편의성에 초점을 맞추어 사용자 편리성을 최우선으로 고려하여 제작됐다.
ssenU2S2는 하나의 USB 포트로 2개의 시리얼 포트를 사용할 수 있다. 따라서 서로 다른 시리얼 통신을 동시에 사용해야 하거나 임베디드 보드 디버깅과 실제 장비간 통신을 동시에 진행할 경우 편리하게 사용할 수 있다. 또한 총 4가지 형태(RS-232, RS-422, RS485, TTL)의 인터페이스를 지원한다. 각 통신 방식 별로 별도의 시리얼 컨버터를 준비하는 불편함을 줄였고 별도의 선택 스위치나 설정이 필요 없으며, ssenU2S2에서 하드웨어 기반으로 자동 처리한다. 특히 MCU 내장형 보드를 개발하는 경우 UART 포트를 사용한 디버깅 채널을 사용하는 경우가 많은데 이를 위하여 TTL 인터페이스를 직접 연결할 수 있도록 지원한다. MCU에서 디버깅 용으로 사용하는 UART 인터페이스에 별도의 시리얼 칩을 사용할 필요가 없이 바로 연결하여 사용이 가능하다.
TEL. 070-8732-3000
FAX. 032-227-2000
[30호]제2회 대한민국 화학산업대전
화학산업의 현재와 미래를 확인하는
제2회 대한민국 화학산업대전
글 | 이용동 bluelyd@ntrex.co.kr
한국석유화학협회가 지난 5월 6일부터 9일까지, 서울 코엑스에서 ‘제2회 대한민국화학산업대전’을 개최하였다. 이번 행사는 산업통상자원부가 주최하고 한국석유화학협회와 ㈜더페어스, 코트라에서 주관하였고, 20개국 200개사 700부스의 규모로 개최되어 석유화학, 정밀화학, 화학장치, 가공기계 등 화학 전 분야에 걸쳐 이루어졌다. 국내에서는 금호석유화학, 롯데케미칼, LG화학, 한화케미칼 등 대표 석유화학 기업들이 총출동하였고, 전기전자, 자동차, 건설, 섬유 등 전방 업체들도 대거 참여하여 앞으로도 대한민국의 대표 전시회로서의 전망을 밝게 하였다.
입구는 특별하지 않았지만, 부스 안내도를 통해서 국내 다른 전시회들에 비해서 규모가 상당함을 알 수 있다. 대한민국에서 주관하는 국내 전시회임에도 불구하고, 국내 업체 뿐만 아니라 많은 해외 업체들이 참여하였으며, 특히 잠시 후 사진으로도 확인하시게 되겠지만 중국 업체들이 상당히 많이 참여하였음을 알 수 있다.
크게 홀을 두 군데로 나누어서 보자면, 작은 홀은 해외 업체 위주, 큰 홀은 국내 업체 위주로 구성되어 있었다.
전시회장 한 쪽에는 신기술 인증 제품에 대한 공공구매 상담회가 마련되어 있었다. 기술 발전에 대해 많은 노력을 기울이고 있는 많은 중소기업들에 대해서, 공공 기관과의 거래를 통하여 안정적인 거래선 유지 및 기술투자 기반 마련 등의 기회가 될 수 있는 좋은 시도로 보여진다.
작은 홀과 큰 홀의 통로에는 나름 준수한 카페가 자리 잡고 있었다. 업체와 업체 사이에 비지니스 공간으로도 활용 가능하고, 열심히 전시회에서 일하고 있는 직원들, 또는 고객사들의 잠깐의 휴식시간으로도 활용 가능한 아주 유용한 공간이 아닌가 싶다.
돌아다니다가 유난히 눈길을 끌던 부스. 꼭 스스로의 개인적인 취향이 아니더라도 사진에서 처럼 사람들이 많이 모여들었던 오리엔탈드림의 부스였다. 일반적인 발열매트, 장판이 아니라, 탄소로 구성된 코튼(면)망사 발열체를 선보였다.
아래쪽에 전기를 공급하면, 탄소로 구성된 면 조직(망사 모양)을 따라서 열이 전달되며, 아주 고르게 열이 전달되는 것을 볼 수 있었다. 오랜 전시 기간에도 딱딱하게 경화되지 않고, 특히 가운데 구멍을 뚫어도 모든 위치까지 끊어지지 않고 골고루 열이 전달되는 모습이 인상깊었다. 또한 전기 회선이 지나가지 않기 때문에 자기장이 생기지 않으며, 이로 인한 전자파도 거의 없는 수준이라는 것이 업체의 설명이었다.
전시회에서 가장 큰 부스를 가지고 있는 곳은 바로 LG화학이었다. 자동차의 구성품부터 각종 배터리, 전자 부품 등을 깔끔하게 디스플레이 해 두었다.
특히 전기 자동차의 기반이 되는 배터리와 충전 원리, 프레임을 볼 수 있었는데, 이제 드디어 전기 자동차의 시대가 다가오고 있는 것 같았다.
한국 탄소융합기술원에서는, 탄소 밸리 구축사업을 위한 부스를 개설하였다. 업체들과 상담할 수 있도록 많은 직원과 테이블, 의자가 마련되어 있었다.
사출성형기를 대표 제품으로 내세우고 있는 (주)JSK-uwa는 최근 하이브리드 제품을 내 놓으면서 국내를 비롯하여 일본 등 해외에도 진출하고 있는 업체이다. 꽤 큰 제품이기에 단 3-4개의 제품을 시연하는 데에도 많은 공간이 필요하였다.
롯데케미칼은 이번 전시회에서 메인 루프를 영화 ‘스타트랙’의 ‘엔터프라이즈호’를 떠오르게 할 만큼 높고 넓은 원형으로 설계해 롯데케미칼의 강인한 도전정신과 모험심을 보여줬다. 또 총 10개의 존을 구성해 롯데케미칼이 생산하는 다양한 제품들은 물론 메가트렌드 기술력까지 총망라해 선보임으로써 국내 최정상급의 석유화학회사 이미지를 강조했다. 특히 마이크로필터의 정수기 필터, 디와이엠의 전선용 컴파운드 등의 우수 파트너사들의 제품을 엄선해 전시하였다.
이번 전시회에서는, 중국 업체들이 상당히 많이 참여하였고, 해당 업체들을 한 군데 모아서 전시 효율성을 높이고 편리성을 증대시키기도 하였다. 중국 업체들의 특이한 점은, 부스가 작고 전시품이 적어서 전시보다는 주로 상담에 중점을 둔 모습이었다.
주식회사 로킷에서는 3D 프린터 Edison 을 내세워 전시하였다. 직원이 없어서 많은 상담은 해 보지 못하였지만, 다양한 출력물과 다양한 라인업을 가지고 전시회에 참여하였다.
한화케미칼은 철의 100배에 이르는 인장 강도와 구리보다 1000배 높은 전기 전도성을 자랑하며, 자동차 경량화뿐만 아니라 우주, 항공 분야에서도 각광 받고 있는 “탄소나노튜브”를 선보였고, 롯데케미칼과 마찬가지로 엄청나게 넓은 부스를 통해서 다양하고 많은 사람들과 소통할 수 있는 공간을 마련하였다.
멀리 울산광역시에서도 코엑스 화학대전을 통하여 화학 산업의 발전에 기여하고, 업체들과 동반 성장을 이룩하기 위하여 부스를 마련하여 업계의 다양한 가능성의 문을 열어두고 있었다.
최근 여러 업계에서 단연 주목 받고 있는 것이 바로 3D프린터이기 때문인지, 다양한 3D프린터 업체가 참여하고 있었다. 주식회사 캐리마는, DLP방식의 3D프린터를 선보였고, 뉴스에서 볼 수 있던 액체 경화형 3D프린터를 직접 체험할 수 있었다. DLP방식이 현재 상당한 기술발전으로 꽤나 정밀하고 매끈한 인쇄 결과를 출력하고 있으나, 아주 작은 미니형 기기가 500만원 가량 되기 때문에 아직 주머니가 가벼운 학생들이나, 사회 초년생들에게는 부담스러울 수도 있을 것으로 생각된다.
전시회의 출구 앞 산업용 3D프린터를 전시하고 있는 세중정보기술에서는, ProJet 1200 을 선보였다. 앞서 캐리마의 제품과는 다르게 SLA 방식을 채용하고 있었다.
많은 전시회를 가 보진 않았지만, 상당히 흥미롭고 재미있는 전시회였다. 화학이라는 것이 우리가 학창 시절에 배우던 그런 공식과 같은 학문이 아니라, 정수기 필터, 자동차 부품, 발열 매트 등, 결국 우리 삶에 깊숙이 맞닿아 있는 것이라는 것을 새삼 느끼게 된 전시회였다.
특히 부품, 소재, 플라스틱 등의 세분화된 전시회는 많이 존재하지만, 석유화학 업계의 기초 화학물질 제조업, 기타 기초 유기화학 물질 제조업, 합성 고무 제조업, 합성수지 및 기타 플라스틱 물질 제조업에 이르기까지 화학 산업 전반의 모든 품목을 아우르는 화학 소재 기업의 참가는 국내에서 유일하다는 것에, 이번 제 2회 대한민국 화학산업대전은 큰 의의가 있다.
[30호] 너무 쉬운 아두이노 DIY ② – 카멜레온 반지 + 빨노파 게임기 만들기
글 ㅣ 신상석 ssshin@jcnet.co.kr
여러분, 안녕하세요. 앞으로 1년에 걸쳐(6번 정도) [너무 쉬운 아두이노 DIY(Do It Yourself)] 강의를 진행할 강사 신상석입니다. 제 소개 간단히 드립니다. · 서울대 제어계측공학과(학사) →, KAIST 전산과(석사) → KAIST 전산과(박사 수료) · ETRI 책임연구원 → 해동정보통신 연구소장 → 욱성전자 연구소장 → (현재) 제이씨넷 연구소장, 상명대학교 컴퓨터시스템공학과 겸임교수, 임베디드홀릭 카페(http://cafe.naver.com/lazydigital) 부매니저, 아두이노 / AVR 강사 · 자격증 : 전자계산기 기술사 · 취미 : 영화보기, 바둑두기, 책읽기, 글쓰기(?), 여행하기, 이야기하기 · 연락처 : ssshin@jcnet.co.kr, 있는그대(cafe.naver.com/lazydigital)이 강의는 아두이노를 가지고 간단하게 생활에 필요한 용품을 만들어 보는 강의입니다. 뚝딱뚝딱 뭔가 자신만의 DIY 용품을 만들어 보는 쏠쏠한 재미가 있는 강의라고나 할까요? 이미 주변에 아두이노와 관련한 많은 책이 출간되었고 카페나 블로그를 통하여 강의가 진행된 경우도 꽤나 많이 있는데도 불구하고, 이 지면을 통하여 강의를 개설한 이유는 다음과 같습니다. 1. 아두이노의 초보자들을 위한 쉽고 재미있는 강의가 거의 없는 것 같아, 가능하면 초등학생(?)까지도 함께 해 볼 수 있는 그런 강의를 한 번 해보고 싶어서… 현재 구상하고 있는 회차별 내용을 간략하게 정리해 보면 다음과 같습니다. (변경될 수 있습니다.) 앞으로 즐겁고 알찬 강의가 될 수 있도록 최선을 다할 것을 약속 드리며, 이 강의를 보는 독자들도 메일이나 카페를 통하여 Q&A(Question & Answer)나 피드백을 주셔서, 함께 정감을 나눌 수 있는 계기가 되기를 기대해 봅니다. |
여러분, 안녕하세요. 신상석 강사입니다. 이번 회에서는 컬러 LED를 가지고 만들 수 있는 DIY 작품을 2가지를 만들어 보겠습니다. 하나는 여러가지 색깔로 변하는 ‘카멜레온 반지’이고, 또 하나는 가위 바위 보 게임과 비슷한 ‘빨노파 게임기’입니다. 간단하고 재미있는 DIY이므로, 이를 약간씩 응용하여 최종적으로는 각자 자신만의 개성있는 DIY 작품을 만들어 보면 좋겠습니다.
■ 카멜레온 반지
카멜레온(chameleon)을 아시나요? ‘땅 위의 사자’라는 뜻을 가진 그리이스어에서 유래한 카멜레온은 주변의 색에 따라 아주 비슷한 보호색으로 변하는 능력을 가진 재주꾼입니다. 자신의 감정을 표현하기 위하여 자신이 원하는 색깔로 변할 수도 있다고 하니, 세상에는 인간 말고도 오묘한 동물이 정말 많은 것 같네요.
그런데 “카멜레온 반지”가 뭐냐구요? 아마도 다들 모르실텐데요. 왜냐하면 제가 얼마 전에 작명한 이름이어서요. 카멜레온 반지는 카멜레온처럼 반지의 색깔이 자유자재로 변하는 반지를 말합니다. 가만히 있으면 저절로 색깔이 변하는 반지라고나 할까요?.
아래 그림은 12개의 달을 상징하는 보석으로 탄생석입니다. 에머랄드, 다이아몬드, 루비… 참 아름답지요. 무엇보다도 알록달록한 색깔이 압권입니다.
그래서 오늘은 이렇게 멋진 보석이 콕 박혀있는 반지를 상상하며 12개의 보석으로 변신이 가능한 카멜레온 반지를 만들어볼까 합니다. 반지의 링은 준비가 되었다고 가정하고 보석 부분만 카멜레온처럼 색깔이 변하도록 만들면 될 것 같네요. 그런데, 어떻게 만드냐구요? 예. 컬러 LED로 만들지요.
■ 컬러 LED
컬러 LED는 빨강, 녹색, 파랑 LED 3개를 하나로 모아 1개의 캡슐로 씌운 LED입니다. 그러니까 3개의 LED를 바짝 붙여서 한 개의 전구 속에 넣은 것이지요. 요렇게요.
다리가 가장 긴 것이 공통 애노드(Anode, +), 또는 공통 캐소드(Cathode, -)로 공통 애노드 타입의 경우는 (+) 핀을 High(VCC, 5V)에 연결하고, R, G, B 핀에는 Low(GND, 0V) 값을 연결하는 경우에만 불이 들어오고, 공통 캐소드 타입의 경우는 반대로 (-) 핀을 Low(GND, 0V)에 연결하고, R, G, B 핀에는 High(VCC, 5V) 값을 연결하는 경우만 불이 들어옵니다. (물론, 지난번 설명처럼 직렬 저항은 연결한다고 가정하였습니다.) 여기서는 아래와 같이 공통 캐소드 타입의 컬러 LED를 사용하여 제작해 보는 것으로 하겠습니다.
(53N RGB 262C-9001, 참조 : 디바이스마트)
어 그런데, LED가 3개면 다리가 6개라야 되는 것 아닌가요? 다리가 4개 밖에 없는데…
예, 원래는 6개지만 (-)에 해당되는 다리는 공통이니까(공통 캐소드), 빨강, 녹색, 파랑, 공통 (-), 이렇게 다리를 4개로 줄일 수 있겠습니다. 지난번 3색 신호등을 만들 때 각 LED의 (-)에 해당되는 것은 모두 GND로 함께 연결한 것을 생각해 보면 쉽게 이해가 갈 겁니다..
그렇다면, 이 컬러 LED는 빨강, 녹색, 파랑으로 색깔이 고정되어 있는데, 어떻게 카멜레온처럼 여러가지 오묘한 색깔을 나타낼 수 있을까요?
이 질문에 대한 해답은 바로 빛의 혼합에 있습니다.
아래 그림은 누구나 초등학교 시절에 한 번은 보았을 것입니다.
왼쪽은 빛의 삼원색(빨강(Red), 녹색(Green), 파랑(Blue), RGB)이고, 오른쪽은 색의 삼원색(자홍(Magenta), 청록(Cyan), 노랑(Yellow))입니다. 우리는 LED를 가지고 색깔을 만들 예정이므로 빛의 3원색의 경우만 보면, 3개의 빛이 합해지는 부분에 다른 색이 나타나는 것을 볼 수 있습니다.
■ 빨강 + 녹색 = 노랑
■ 녹색 + 파랑 = 청록
■ 파랑 + 빨강 = 자홍
■ 빨강 + 녹색 + 파랑 = 흰색
오. 그렇네요. 이렇게 하니까 4개의 색이 더 만들어졌습니다. 하지만, 탄생석과 같이 알록달록한 여러가지 색은 아직도 만들어지지 않았는데 이것은 어떻게 만들 수 있을까요?
이것은 광량(빛의 양)에 해답이 있습니다.
즉, 빨강과 녹색, 파랑을 각각 100%씩 섞으면 흰색이 나오지만, 예를 들어 빨강 100% + 녹색 75% + 파랑 75% 로 빛을 섞으면 핑크(Pink)색이 나오는 원리입니다.
결국 관건은 우리가 3가지 LED의 광량을 강하게 했다 약하게 했다 조절할 수 있느냐 하는 것인데 결론은 “할 수 있다” 입니다.
아래 그림을 보시지요.
원래 디지털 값은 High(1, 5V, 100%), Low(0, GND, 0%)의 2가지 값밖에 존재하지 않지만, 위 그림과 같이 어떤 핀의 값을 High ▶ Low ▶ High ▶ Low … 형태로 상태를 변환시키게 되면, 출력 전압의 평균(%)은 빨강색 점선과 같은 값을 갖게 됩니다. 예를 들어 High를 유지하는 시간과 Low를 유지하는 시간의 비율이 3:7이라면 평균값은 High값의 30%가 된다고 말할 수 있는 것이지요. 이렇게 주기적으로 High ▶ Low를 반복하는 신호를 펄스(Pulse)라고 하는데, 이 펄스(Pulse)의 폭(Width)을 조절(Modulation)하여 평균값을 조절하는 방법을 PWM(Pulse Width Modulation)이라고 합니다. 즉, PWM을 이용하면 디지털 출력인 High(1)와 Low(0)을 가지고 0.3(30%), 0.85(85%)와 같은 아날로그 값을 만들 수 있게 되는 것입니다. 핑크색을 컬러 LED로 표현해 본다면 아래와 같이 되겠네요.
■ 핑크 = 빨강 PWM 100% + 녹색 PWM 75% + 파랑 PWM 75%
■ PWM 출력을 만드는 방법
이제 PWM 출력을 만드는 방법을 알아봅시다. 아두이노에서는 다음과 같은 analogWirte( ) 라이브러리 함수를 제공하는데 이것을 이용하면 PWM 0% ~ PWM 100% 까지의 펄스를 아주 쉽게 만들 수 있습니다. 단, analogWrite( ) 함수를 사용할 수 있는 핀은 핀 번호 앞에 틸드(~) 표시가 있는 핀으로 한정되어 있다는 점은 주의하셔야 합니다.
■ analogWrite(pin, value)
■ pin : 입출력핀 번호에 해당되는 숫자, 틸드(~) 표시가 되어 있는 핀만 가능
■ value : 0~255까지의 값으로 0이면 PWM 0%, 255이면 PWM 100%를 의미함
예를 들어 “analogWrite(5, 128)”으로 프로그램 한다면, 핀 5번의 출력을 PWM 50%(128/256 = 0.5 = 50%)로 출력한다는 의미가 되겠습니다.
왜 value 값으로 알기 쉽게 0~100을 사용하지 않고 0~255를 사용하게 되었을까요? 사실 그렇게 라이브러리를 만들 수도 있겠지만 디지털 세계는 2진법으로 이루어져 있어, 1, 2, 4, 8, 16, 32, 64, 128, 256 이렇게 만들어지는 수를 더욱 좋아한답니다. 아두이노 내부적으로 본다면 Atmega328, 타이머, ADC(Analog Digital Converter) 등 좀 더 자세하게 알아야 할 것이 많지만 우리는 그냥 이 정도만 알고 넘어가는 것으로 하겠습니다.
이제 색의 배합을 %로 할 수 있다는 것을 배웠으므로, 간단히 한 번 연습해 보지요.
노랑과 흰색, 핑크를 R, G, B의 value 값으로 표현해 보세요. 아래와 같이 나오면 정답!.
▶ 노랑 : R(255), G(255), B(0)
▶ 흰색 : R(255), G(255), B(255)
▶ 핑크 : R(255), G(192), B(192) // 192/256 = 0.75 = 75%
■ 컬러 LED 연결
자, 그럼 이제 기본 원리는 모두 이해했으니, 프로그램을 하기 전에 컬러 LED를 아두이노와 연결해 보겠습니다. 컬러 LED는 시중에서 구할 수 있는 것 아무거나 구하셔도 됩니다. R, G, B 및 (-) 핀을 아래와 같이 연결하면 되겠네요.
■ R (가장 왼쪽) ←→ 330오옴 저항 ←→ 아두이노 6번핀
■ (-) (왼쪽에서 2번째, 길이가 가장 긴 다리) ←→ 아두이노 GND
■ G (오른쪽에서 2번째) ←→ 330오옴 저항 ←→ 아두이노 5번핀
■ B (가장 오른쪽) ←→ 330오옴 저항 ←→ 아두이노 3번핀
우리가 연결한 아두이노 6번, 5번, 3번 핀의 옆쪽에 실크로 쓰여진 숫자에는 틸드(~) 표시가 되어 있는데, 이것은 아두이노 핀 중에서 analog_write( ) 함수로 PWM 신호를 만들어 낼 수 있는 핀이라는 것은 앞에서 설명하였습니다. 우리는 3개 핀에 모두 PWM을 사용하여야 하므로 반드시 틸드(~) 표시가 연결된 핀을 R, G, B에 연결해야 합니다. 아래의 그림처럼 연결이 되겠네요.
■ 연습 프로그램 작성
이제 연결은 끝났으니 프로그램을 작성하여 실행할 차례입니다.
최종 목표는 카멜레온 반지이지만 기왕 회로를 꾸몄으니 지난번 배운 것도 복습할 겸 7가지 색(빨강, 녹색, 파랑, 노랑, 청록, 자홍, 흰색)을 먼저 만들어 보도록 하겠습니다.
아래는 기능 규격입니다.
[7가지 색 만들기 기능 규격]
1. LED가 ON되는 순서는 빨강 ▶ 녹색 ▶ 파랑 ▶ 노랑 ▶ 청록 ▶ 자홍 ▶ 흰색 ▶ 빨강 ▶ … 으로 무한 반복됨
2. LED는 어떤 한 순간 한가지 색깔만 표시함
3. 표시된 색깔은 1초 동안 켜진 상태를 유지함
위의 7가지 색 중 노랑, 청록, 자홍은 동시에 2개의 LED를 ON 하면 얻을 수 있고 흰색은 3개의 LED를 동시에 ON하면 얻을 수 있으므로 analogWrite( ) 함수를 사용하지 않고 digitalWrite( ) 함수만 사용하여도 충분히 구현이 가능하겠습니다. 스스로 혼자 구현해 보신 후 10분 후에 함께 해보도록 하지요. (10분간 실시!)
(1분), (2분), ……, (10분)
모두 잘 되셨으리라 생각합니다. 함께 해 보겠습니다.
#define RED_LED 6 #define GREEN_LED 5 #define BLUE_LED 3 void setup() { pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT); } void loop() { digitalWrite(RED_LED, HIGH); digitalWrite(GREEN_LED, LOW); digitalWrite(BLUE_LED, LOW); // R=ON, G=OFF, B=OFF –> 빨강(Red) delay(1000); digitalWrite(RED_LED, LOW); digitalWrite(GREEN_LED, HIGH); digitalWrite(BLUE_LED, LOW); // R=OFF, G=ON, B=OFF –> 녹색(Green) delay(1000); digitalWrite(RED_LED, LOW); digitalWrite(GREEN_LED, LOW); digitalWrite(BLUE_LED, HIGH); // R=OFF, G=OFF, B=ON –> 파랑(Blue) delay(1000); digitalWrite(RED_LED, HIGH); digitalWrite(GREEN_LED, HIGH); digitalWrite(BLUE_LED, LOW); // R=ON, G=ON, B=OFF –> 노랑(Yellow) delay(1000); digitalWrite(RED_LED, LOW); digitalWrite(GREEN_LED, HIGH); digitalWrite(BLUE_LED, HIGH); // R=OFF, G=ON, B=ON –> 청록(Cyan) delay(1000); digitalWrite(RED_LED, HIGH); digitalWrite(GREEN_LED, LOW); digitalWrite(BLUE_LED, HIGH); // R=ON, G=OFF, B=ON –> 다홍(Magenta) delay(1000); digitalWrite(RED_LED, HIGH); digitalWrite(GREEN_LED, HIGH); digitalWrite(BLUE_LED, HIGH); // R=ON, G=ON, B=ON –> 흰색(White) delay(1000); } |
약간 긴 듯하지만 알고리즘은 지난번과 거의 비슷하고 간단합니다.
자, 컴파일 ▶ 업로드 ▶ 실행해 봅시다. 그리고 결과는 ?
동영상에서는 LED 빛이 너무 밝아서 색깔 구별이 또렷하지 않지만, 실제 눈으로 보면 아주 예쁜 7가지 색깔이 나옵니다. 이 정도면 만족스럽네요.
■ 컬러 및 컬러값 선택
연습으로 몸을 풀었으니, 이제 본격적으로 카멜레온 반지를 D.I.Y.하러 가겠습니다. 우리가 할 일은 12개 탄생석의 대표색을 찾아서 이것이 R, G, B의 어떤 값(어떤 세기, %)으로 표현되는지를 알아낸 다음 이것을 analog_write( ) 함수를 이용하여 구현하면 될 것 같습니다.
자, 이제 탄생석의 색깔에 알맞은 R, G, B의 값을 찾아내면 되겠는데… 2가지 방법이 있습니다.
1. 색상표를 이용하는 방법
아래와 같이 색상표가 있으므로 이것을 보고 탄생석과 가장 비슷한 색깔을 찾아 그 코드값을 추출하는 방법입니다. 6개의 숫자는 16진법으로 나타낸 코드 값으로 앞의 2개는 R(Red), 중간 2개는 G(Green), 마지막 2개는 B(Blue)에 해당되는 값을 나타냅니다. (혹, 2진법, 10진법, 16진법의 표기법이나 변환이 익숙하지 않은 분은 이 부분에 대하여 따로 각자 공부하신 후 다시 오시기 바랍니다.) 가장 왼쪽 줄의 위에서 6번째 색상이 노랑인데, 이 값을 보면 FFFF00 으로 표기되어 있으니까 [R(FF), G(FF) B(00)] ▶ [R(255), G(255), B(0)]가 되어 노랑색 PWM 표기값과 동일하다는 것을 확인할 수 있습니다.
2. 컬러 추출 응용프로그램을 이용하는 방법
PC 상에서 특정 컬러에 대한 코드값을 추출해 내는 응용프로그램을 실행시켜서 원하는 색상을 클릭하여 코드값을 추출하는 방법입니다.
탄생석은 코드표로 똑 떨어지는 색상이 아니고 우리가 색상을 직접 추출해보는 것도 재미있을 것 같으니까 우리는 두번째 방법을 사용하도록 하지요. 여러가지 프로그램이 있겠지만 여기서는 그냥 간단하게 실행시킬 수 있는 컬러캅(ColorCop)이라는 무료 프로그램을 사용하는 것으로 하겠습니다. (인터넷에서 찾아 다운로드받아 실행하면 됩니다.) 아래와 같은 화면이 나오는데요. 중간 왼쪽에 있는 스포이드처럼 생긴 아이콘을 드래그(클릭한 후 끌기)하여 원하는 컬러 위치에 가져다 놓으면 10진수로 표시된 R, G, B 값이 나타나게 됩니다. 참 쉽네요.
자, 그러면 지금부터는 탄생석의 대표색에 대한 코드값를 추출해 보는 시간입니다. 색깔도 감상해 가면서 즐거운 마음으로 표를 작성해 보면 더욱 좋겠네요.
코드 추출은 혼자서도 가능하겠지요? 12분 드립니다.
1분, 2분, …, 11분, 12분
제가 직접 찍어서 추출한 값은 아래와 같습니다. (각자 다를 수 있습니다.)
월 | 한글 이름 | 영어 이름 | R | G | B |
1 | 가넷 | garnet | 254 | 26 | 27 |
2 | 자수정 | amethyst | 179 | 117 | 180 |
3 | 아쿠아마린 | aquamarine | 211 | 146 | 251 |
4 | 다이아몬드 | diamond | 254 | 155 | 255 |
5 | 에메랄드 | emerald | 14 | 219 | 133 |
6 | 진주 | pearl | 246 | 241 | 237 |
7 | 루비 | ruby | 206 | 3 | 163 |
8 | 페리도트 | peridot | 167 | 212 | 31 |
9 | 사파이어 | sapphaire | 26 | 27 | 216 |
10 | 오팔 | opal | 203 | 200 | 149 |
11 | 토파즈 | topaz | 254 | 198 | 40 |
12 | 터키석 | turquoise | 58 | 197 | 189 |
참, 가넷이라는 보석은 얼마전 종료된 ‘지니어스’라는 TV 프로에 이름이 소개되었던 짙은 자주색계통의 보석이지요. 꽤나 재미있었던 시리즈물이었는데 여러분들도 기회가 되면 꼭 한 번 시청해 보시기 바랍니다.
■ 카멜레온 반지 프로그램 작성
모든 준비가 끝났으니 이제 목표 프로그램을 작성하여 실행할 차례입니다. 우리가 원하는 기능 규격을 작성해 보지요.
[12가지 탄생석의 대표색을 디스플레이하는 카멜레온 반지 기능 규격]
1. 컬러 LED로 12개 탄생석의 대표색 12개를 차례대로 ON하며, 무한 반복된다.
2. 한 가지의 색은 1초 동안 켜진 상태를 유지한다.
지난번에는 digitalWrite( ) 함수를 사용했지만 이번에는 analogWrite( )를 사용하고 작성된 표를 참조하여 R, G, B에 해당하는 PWM value값을 정해주는 것만 조금 다를 것 같습니다.
같이 한 번 작성해 보시지요.
#define RED_LED 6 #define GREEN_LED 5 #define BLUE_LED 3 void setup() { pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT); } void loop() { analogWrite(RED_LED, 254); analogWrite(GREEN_LED, 26); analogWrite(BLUE_LED, 27); // 가넷 delay(1000); analogWrite(RED_LED, 179); analogWrite(GREEN_LED, 117); analogWrite(BLUE_LED, 180); // 자수정 delay(1000); analogWrite(RED_LED, 211); analogWrite(GREEN_LED, 246); analogWrite(BLUE_LED, 251); // 아쿠아마린 delay(1000); analogWrite(RED_LED, 254); analogWrite(GREEN_LED, 255); analogWrite(BLUE_LED, 255); // 다이아몬드 delay(1000); analogWrite(RED_LED, 14); analogWrite(GREEN_LED, 219); analogWrite(BLUE_LED, 133); // 에메랄드 delay(1000); analogWrite(RED_LED, 246); analogWrite(GREEN_LED, 241); analogWrite(BLUE_LED, 237); // 진주 delay(1000); analogWrite(RED_LED, 206); analogWrite(GREEN_LED, 3); analogWrite(BLUE_LED, 163); // 루비 delay(1000); analogWrite(RED_LED, 167); analogWrite(GREEN_LED, 212); analogWrite(BLUE_LED, 31); // 페리도트 delay(1000); analogWrite(RED_LED, 26); analogWrite(GREEN_LED, 27); analogWrite(BLUE_LED, 216); // 사파이어 delay(1000); analogWrite(RED_LED, 203); analogWrite(GREEN_LED, 200); analogWrite(BLUE_LED, 149); // 오팔 delay(1000); analogWrite(RED_LED, 254); analogWrite(GREEN_LED, 198); analogWrite(BLUE_LED, 40); // 토파즈 delay(1000); analogWrite(RED_LED, 58); analogWrite(GREEN_LED, 197); analogWrite(BLUE_LED, 189); // 터키석 delay(1000); } |
음. 조금 많이 길긴 하지만…
일단, 컴파일 ▶ 업로드 ▶ 실행해 봅시다. 결과는?
카메라에 찍힌 것은 색깔 구별이 또렷하지는 않은데, 실제로 보면 아름다운 색깔이 구분되어 나타납니다. 보석에 비할 수는 없지만 그래도 아주 색상이 화려하고 아름답습니다.
그런데 프로그램 짜면서 조금 마음에 걸리는 것이 있습니다.
무엇이냐구요? 비슷한 내용이 12번이나 반복되고 코드 값을 일일이 입력해 주는 것이 조금 불편한 듯 하네요. 그래서, 12번 반복하는 것은 for 문을 이용하여 수정하고, 코드 값은 미리 어레이에 지정해 놓았다가 사용하도록 하여 위 코드를 조금 단순화시켜 보겠습니다. 아래와 같이 될 것 같습니다.
#define RED_LED 6 #define GREEN_LED 5 #define BLUE_LED 3 void setup() { pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT); } void loop() { analogWrite(RED_LED, 254); analogWrite(GREEN_LED, 26); analogWrite(BLUE_LED, 27); // 가넷 delay(1000); analogWrite(RED_LED, 179); analogWrite(GREEN_LED, 117); analogWrite(BLUE_LED, 180); // 자수정 delay(1000); analogWrite(RED_LED, 211); analogWrite(GREEN_LED, 246); analogWrite(BLUE_LED, 251); // 아쿠아마린 delay(1000); analogWrite(RED_LED, 254); analogWrite(GREEN_LED, 255); analogWrite(BLUE_LED, 255); // 다이아몬드 delay(1000); analogWrite(RED_LED, 14); analogWrite(GREEN_LED, 219); analogWrite(BLUE_LED, 133); // 에메랄드 delay(1000); analogWrite(RED_LED, 246); analogWrite(GREEN_LED, 241); analogWrite(BLUE_LED, 237); // 진주 delay(1000); analogWrite(RED_LED, 206); analogWrite(GREEN_LED, 3); analogWrite(BLUE_LED, 163); // 루비 delay(1000); analogWrite(RED_LED, 167); analogWrite(GREEN_LED, 212); analogWrite(BLUE_LED, 31); // 페리도트 delay(1000); analogWrite(RED_LED, 26); analogWrite(GREEN_LED, 27); analogWrite(BLUE_LED, 216); // 사파이어 delay(1000); analogWrite(RED_LED, 203); analogWrite(GREEN_LED, 200); analogWrite(BLUE_LED, 149); // 오팔 delay(1000); analogWrite(RED_LED, 254); analogWrite(GREEN_LED, 198); analogWrite(BLUE_LED, 40); // 토파즈 delay(1000); analogWrite(RED_LED, 58); analogWrite(GREEN_LED, 197); analogWrite(BLUE_LED, 189); // 터키석 delay(1000); } |
예. 요렇게 작성해서 다시 실행시켜보면… 처음 프로그램하고 똑같이 실행되는 것을 알 수 있습니다. 이것도 당근 성공이겠죠?
그럼, 마지막으로… 이 반지를 진짜 반지처럼 한 번 연출해 볼까요?
손가락에 켜보는 형태로 흉내를 내보지요.
컬러 LED를 뽑아서 4개의 다리에 선을 연결하고 이선을 원래 LED가 위치했던 브레드보드의 핀 위치에 꼽으면 원래 회로와 똑같은 회로입니다. 이것을 반지 모양으로 손가락 앞쪽으로 LED만 보이게 만들고 아두이노에 전원을 넣으면?
야호~~~ 카멜레온 반지가 완성되었습니다.
소품을 이용하여 잘 만들면 어느 정도 쓸만한 것도 만들 수 있을 것 같은데, 이것은 여러분들이 D.I.Y. 해보시기 바랍니다. 잘 만들어졌으면 주변에 자랑도 한 번 해 보시구요.
시간나실 때 아래 과제도 한 번 해보시면 더욱 좋겠죠?
[과제-카멜레온반지-1] R, G, B 색이 임의로 변하는 카멜레온 링을 만들어 보세요. |
[과제-카멜레온반지-1] R, G, B 각각이 0~255까지 짧은 시간 내에 계속 변화하면서 모든 색상을 디스플레이할 수 있는 카 멜레온링을 만들어 보세요. 총 256 x 256 x 256 = 16,777,226 가지의 색깔을 만들수 있을까요? |
■ 스위치 연결
바로 전 강의까지 우리는 아두이노로 할 수 있는 2가지 기초 기능을 다루어 보았습니다. 디지털 출력(digitalWrite())과 아날로그 출력(analogWrite())이지요. 여기서의 아날로그 출력은 엄밀히 말하면 디지털 출력을 PWM을 이용하여 만든 유사 아날로그 출력이지만요.
기본적인 출력을 2가지 해보았으니 이번에는 기본적인 입력을 이용하여 ‘빨노파 게임기’ D.I.Y.에 도전해 보겠습니다. 빨노파게임기란 빨강 ▶ 노랑 ▶ 파랑 순으로 LED 색깔이 상당히 빠르게(0.1초 이내) 변하다가 스위치를 누르는 순간 빨강, 노랑, 파랑 중의 1가지로 약 5초 정도 고정되는 LED 디스플레이어입니다. 아주 빠르게 색깔이 변하므로 사람이 임의로 색깔의 변화를 읽어서 스위치를 누른다는 것은 불가능하다고 볼 수 있으므로 임의의 색깔이 나타나는 상황이 됩니다. 그러므로 가위바위보 게임과 비슷하게 빨강은 파랑을 이기고, 노랑은 빨강을 이기고, 파랑은 노랑을 이긴다고 룰을 정한 후 두 사람이 스위치를 순서대로 눌러서 나온 색깔로 승부를 가린다면 간단한 게임기가 될 수 있겠습니다.
아 참, 이건 여담인데, 빨노파… 하니까 생각나는게 하나 있네요. ‘개그콘서트’라는 TV 프로의 ‘나는 킬러다’ 코너에 등장하는 빨노파 3형제… ‘일소일소(一笑一少)’라는 말이 있는데 한 번 웃으면 한 번 젊어진다고 하니, 여러분도 틈나는 대로 개그 프로 열심히 보면서 많이 웃으시기 바랍니다.
LED가 대표적인 기본 디지털 출력 부품이라면, 스위치는 대표적인 기본 디지털 입력 부품입니다. 스위치를 모르는 사람은 천지(天地)에 없겠지만, 기왕 말이 나왔으니까 많이 쓰는 스위치 2-3가지만 조금 살펴보고 가는 것도 나쁘지는 않을 듯 합니다.
우리가 제일 흔하게 많이 보고 많이 쓰는 스위치는 무엇일까요?
요렇게 생긴 것이겠죠? 전자기기 전원 껐다 켰다 하는 스위치, 형광등 껐다 켰다 스위치.
(KCD1-101A RED, 상품코드: 1790)
실생활에서 가장 많이 쓰이는 스위치로 이름은 로커(Locker) 스위치입니다. 잠긴(lock) 것처럼 ON이거나 OFF이거나 한가지 상태로 존재하지요.
또, 어떤 스위치가 있을까요? 아래와 같이 생긴 슬라이드(Slide) 스위치도 많이 사용됩니다. 왼쪽이나 오른쪽으로 옮기면 각각 가운데 신호가 왼쪽이나 오른쪽에 연결된 신호와 연결되는 구조를 가진 스위치입니다. 요건 2단으로 되어 있어 2개의 서로 다른 신호가 동시에 왼쪽 또는 오른쪽으로 연결되는 형태네요.
(MSL-1C2P(듀얼)-2mm, 상품코드: 30530)
이번 강의에서 사용할 스위치는 아래와 같이 생긴 택트(Tact) 스위치입니다. 이것도 굉장히 많이 사용됩니다. 아마도 contact에서 이름이 유래(?)된 듯한데, 손가락으로 누르면(contact 되면) ON, 떼면 OFF 상태가 되는 스위치이지요.
아래 것은 다리가 4개가 있어서 2쌍의 신호가 한꺼번에 연결되거나(ON), 끊어지거나(OFF) 하는 스위치가 되겠습니다.
(ITS-1105-5mm, 상품코드: 34555)
자, 스위치가 결정되었으니 그럼 이제 스위치를 연결해 볼까요?
스위치 심볼은 보통 아래와 같은 2가지 형태를 취합니다. 스위치가 눌려지면 왼쪽과 오른쪽에 연결된 전선이 연결되는 것이지요. 스위치를 놓으면 양쪽의 연결은 끊어지는 것이구요.
스위치가 디지털 입력이라고 하였고, 스위치는 양쪽 끝이 있으니까 한 쪽은 당연히 아두이노의 디지털 신호선 중 하나에 연결하여야 할 것이고, 다른 한쪽은 어디에 연결해야 할까요? 스위치를 눌렀을 때 ‘1’(HIGH)이나 ‘0’(LOW)이 입력되어야 하므로, ‘1’이 연결되려면 VCC(+5V)가 연결되어야 하고, ‘0’이 입력되려면 GND(0V, Ground)가 연결되어야 할 것입니다.
그러면 이렇게 연결이 되겠네요.
그런데 가만히 보니까, 스위치를 눌렀을 때는 연결된 상태에 따라서 +5V 또는 0V(GND)가 연결되지만 스위치가 눌리지 않았을 때는 선이 끊어진 상태(floating 상태)가 되는데… 어라, 이렇게 되면 아두이노는 이 핀의 값을 HIGH(1)로 판단할까요? 아니면, LOW(0)로 판단할까요? 조금 어려운 문제인데 이것은 아두이노의 내부 로직과 상태에 따라 값이 결정될 수 있으므로 정확하게 HIGH 또는 LOW라고 단정지어 말할 수 없습니다. 즉, 상황에 따라 HIGH가 될 수도 있고 LOW로 될 수도 있다는 뜻인데, 이렇게 되면 값이 확정되지 않으므로 프로그램을 작성하는 사람은 대략난감(大略難堪, 이러지도 저러지도 못하는 당황스러운 상황)하게 됩니다. 그래서, 이렇게 선이 끊어진 상태가 될 때는 아두이노가 HIGH 또는 LOW 중, 하나의 값으로만 결정되도록 만들어 주는 조치가 필요합니다. 즉, 스위치를 눌렀을 때 HIGH가 되는 회로는 눌러지지 않았을 때 LOW가 되도록 조치해 놓아야 하고, 반대로 스위치를 눌렸을 때 LOW가 되는 회로는 눌러지지 않았을 때는 HIGH가 되도록 조치해 놓아야 하겠습니다. 아래와 같이 될 것 같습니다.
하지만 위 그림도 아직은 문제가 있어 보입니다. 왜냐하면 스위치가 눌려졌다고 생각하면 위 2개 회로 모두가 +5V와 GND가 직접 연결되는 형상이 되어 버리니까요.
뿌직~~~ 번쩍! 푸쉬푸쉬~~~
무엇인가 터지던지… 불꽃이 튀던지… 연기가 나던지… 뭔가 문제가 생길 것 같습니다. 그래서 이런 경우를 방지하기 위한 대비책이 필요한데 이 역할을 수행하는 것은 저항입니다. 아래와 같이 스위치가 눌렸을 때와 눌려지지 않았을 때의 값이 서로 다르게 입력되는 위치에 저항을 달면 문제가 해결되겠습니다. (저항값은 보통 1K~10K 정도를 사용합니다.) 참고로 GND에 저항이 연결되는 것을 풀다운(pull down) 저항이라고 하고, VCC(+5V)에 연결되는 것을 풀업(pull up) 저항이라고 합니다.
하나 하나 설명하다보니 조금 장황해졌는데요. 어쨌든 이제 연결 방법은 알았으니, 실제로 회로를 아두이노에 연결해 봅시다. 조금 전에 만들었던 카멜레온반지 회로에 스위치 한 개를 추가하여 2번핀(D2)에 연결하는 것으로 하겠습니다. 아래와 같이 되겠네요.
오, 그럴듯하게 잘 꾸며진 것 같습니다. 만족? 만족!
■ 신호등 게임기 프로그램 작성
이제 프로그램을 작성하여야 하는데요. 언제나 마찬가지로 일단 원하는 기능 규격을 작성해 봅시다.
[신호등 게임기 기능 규격]
1. 컬러 LED,의 색깔은 0.1초 마다 빨강 ▶ 노랑 ▶ 파랑 ▶ 빨강 ▶ 노랑 ▶ 파랑… 의 순으로 계속 바뀐다..
2. 스위치를 누르는 순간 5초 동안만 현재의 LED 색이 유지되었다가 다시 ‘1’번을 수행한다.
컬러 LED의 색깔이 바뀌는 것은 지난번에 했으니까 별 문제가 없을 것이고, 스위치 값을 읽어서 그 값이 0(LOW, 스위치 눌림)인지 1(HIGH, 스위치 눌리지 않음)인지를 검사할 수만 있으면 쉽게 해결될 것 같습니다. 이런 경우에 대비해서 아두이노에서는 digitalRead(pin)라는 기능의 함수를 제공하므로 이것을 이용하도록 합니다.
digitalRead(pin)
■ pin : 핀 번호
■ return 값 : pin을 통하여 들어온 디지털 값으로 0 또는 1
이제 기능 규격을 만족할 수 있는 프로그램의 알고리즘을 만들어 보지요. 아래를 보기 전에 각자 먼저 5분 정도 생각해 보시구요.
… (1분) … (2분) … (3분) … (4분) … (5분)
아래와 같은 모습이 될 것 같습니다.
이제 프로그램을 함께 해볼까요?
int SW=2; // #define을 이용해도 되지만 이와 같이 변수로 선언하는 것도 방법 int BLUE_LED=3 int GREEN_LED=5; int RED_LED=6; void setup() { pinMode(SW, INPUT); // 2번핀은 스위치 입력 pinMode(BLUE_LED, OUTPUT); // 3번핀은 파랑 LED 출력 pinMode(GREEN_LED, OUTPUT); // 5번핀은 녹색 LED 출력 pinMode(RED_LED, OUTPUT); // 6번핀은 빨강 LED 출력 } void loop() { analogWrite(RED_LED, 255); analogWrite(GREEN_LED, 0); analogWrite(BLUE_LED, 0); // 빨강 if (digitalRead() == 0) delay(5000); // 스위치를 눌렀으면 5초 대기 else delay(100); // 스위치를 누르지 않았으면 0.1초만 대기 analogWrite(RED_LED, 255); analogWrite(GREEN_LED, 255); analogWrite(BLUE_LED, 0); // 노랑 if (digitalRead() == 0) delay(5000); else delay(100); analogWrite(RED_LED, 0); analogWrite(GREEN_LED, 0); analogWrite(BLUE_LED, 255); // 파랑 if (digitalRead() == 0) delay(5000); else delay(100); } |
digitalRead()를 수행하여 값이 ‘0’인 상태가 나타나면 스위치가 눌려진 것이니까 그 상태에서 delay(5000); (5초 동안 아무것도 하지 않음)을 수행하게 되므로 LED가 5초 동안 한가지 색깔을 유지하게 됩니다. 자신의 색깔이 결정되는 것이지요.
작성이 다 되었으면… 컴파일 ▶ 업로드 ▶ 실행! 잘 나오나요?
옆에 있는 가족/친구/상사/동료와 간단히 게임 한 번 해 보시지요! 나는 빨강, 상대는 파랑, 야호~ 내가 이겼다. 밥 먹으러 갑시다.
오늘은 여기까지입니다. 다음 시간에는 FND(Flexible Numeric Display)를 가지고 007 영화에 항상 등장하는 카운트다운 계수기 D.I.Y.에 도전해 보겠습니다. 아래 과제는 짬을 내서 해보시고 다음 강의에서 예쁜 얼굴로 또 만나겠습니다. 감사합니다.
[과제-빨노파게임기-1] 스위치를 누르면 ‘1’이 되도록 연결하고 프로그램해 보세요. |
[과제-빨노파게임기-2] 스위치를 2개 사용하여 더 재미있는 DIY 작품을 만들어 보세요. |
아두이노 구매하러 가기 : 클릭!
[30호]측정/센서 필수 길라잡이 4. 변형률
한국NI에서 알려주는 측정/센서 필수 길라잡이 4
글 | 한국 NI, SW 및 측정 담당 이지석
4. 변형률
변형률 혹은 스트레인(strain)은 물체의 길이가 얼마나 팽창 혹은 수축하였는가를 나타내는 것으로 단위는 스트레인입니다. 일반적으로 물체의 변형은 너무나도 작기 때문에 변형률의 단위는 주로 마이크로 스트레인을 사용합니다.
이러한 변형률을 통해 내 시스템의 기계적 상태를 아주 잘 살펴볼 수 있습니다. 변형률은 대상에 얼마나 많은 부하가 걸리는지 알려주기 때문에 대상이 설계공차 내에서 작동할 수 있도록 보장하고 시스템의 구조적 정상 여부를 판단할 수 있도록 모니터링도 가능합니다. 변형률 측정 어플리케이션의 예로 구조물 피로도 모니터링, 수력발전 터빈, 오일 파이프라인 모니터링 등이 있습니다.
스트레인 게이지는 힘에 의해 유발되는 이러한 변형을 측정할 수 있는 센서입니다. 현재까지 가장 많이 사용되고 있는 스트레인 게이지 종류는 포일 또는 결합형 스트레인 게이지입니다. 이 스트레인 게이지는 흡사 PCB회로와 유사하게 비전도성의 표면에 인쇄된 전도성 물질로 이루어져 있으며 주로 지그재그 패턴으로 구성됩니다. 측정 타겟에 견고하게 부착된 게이지는 타겟이 늘어나거나 줄어들 때 함께 움직이게 되며 발생하는 변형은 스트레인 게이지로 동일하게 전이됩니다.
한 가지 유념해야 할 점은 변형률은 축 방향과 국부 변형에서만 측정된다는 것입니다. 이런 특성으로 인해 스트레인 게이지가 유한 요소 분석에 사용할 수 있는 것이고, 피로도 어플리케이션에서 유용하게 활용됩니다.
어떤 와이어든 어느 정도의 저항을 가지고 있습니다. 스트레인 게이지 위의 포일은 굉장히 얇기 때문에 어느 정도의 높은 저항을 가지고 있습니다. 스트레인 게이지가 당겨지면, 포일은 그림 B처럼 더욱 얇아지게 됩니다. 이 때 포일에는 더 많은 저항이 생기게 됩니다. 게이지를 꾹 누르면 포일 라인은 두꺼워지게 되어 저항이 줄어듭니다. 이런 변화를 저항으로 측정하면, 시스템에서 스트레인을 직접 파악할 수 있습니다.
저항의 변화는 게이지율(Guage Factor)이라고 하는 요소를 통해 측정된 스트레인에 직접 비례합니다. 게이지율은 스트레인 게이지의 속성이며, 포일 라인의 레이아웃과 두께에 따라 다릅니다. 일반적인 게이지율은 약 2입니다.
이제 스트레인 게이지가 표본에 있는 스트레인을 저항의 변화로 변환한다는 것을 알게 되었습니다. 그렇다면 이 저항은 어떻게 측정할까요?
이 저항을 측정할 수 있는 특수 유형의 선형 회로인 분압기가 있습니다. 두 개의 저항기를 일련으로 배치하고 알려지지 않은 전압을 적용하면, 위의 등식을 이용하여 저항기의 전압만 계산할 수 있습니다.
만약 저항기 중 하나가 스트레인 게이지이고 다른 하나가 알려진 저항으로 구성된 분압기를 제작할 수 있다면, 스트레인 게이지의 전압을 측정하고 위의 동일한 등식을 이용하여 스트레인 게이지의 저항을 계산할 수 있었을 것입니다. 이 전압은 일반적인 NI 측정장비를 이용하여 쉽게 측정할 수 있습니다.
만약 두 개의 분배기 회로를 병렬로 배치하게 되면, 결과적으로 위와 같은 휘트스톤 브리지(Wheatstone Bridge)가 완성됩니다. 휘트스톤 브리지는 모든 브리지 기반 측정 시스템(스트레인 포함)의 기본이 되는 회로입니다.
브리지의 균형이 맞춰지면 R1/R2는 R3/R4와 같고 Vin의 전압 측정 값은 0이 됩니다. 하지만 저항 중 하나라도 바뀌게 되면 Vin은 0이 되지 못합니다.
한 가지 유념해야 할 점은 분압기에서 확인한 것처럼 알려진 구동 전압이 회로에 적용되어야 하고 포일 스트레인 게이지 측정 중 한 면 은 전압 구동으로 보통 5 또는 12 볼트가 필요합니다. 이 말은 스트레인 게이지 측정을 위해 내가 구동전류를 흘려보내 주어야 한다는 것 입니다. 기본적으로 스트레인 게이지 측정에서 이러한 구동전류의 운용에 어려움을 느끼는 경우가 많지만 NI의 스트레인 게이지 전용 모듈을 사용하면 손쉽게 구동전류를 제공하고 스트레인 값을 확인할 수 있습니다.
스트레인 게이지의 세 가지 주 유형으로 쿼터(1/4), 하프(2/4), 풀 브리지(4/4)가 있습니다. 이 브리지들의 명칭은 스트레인 게이지를 감지하는 “레그”가 휘트스톤 브리지에 얼마나 많은 지를 뜻합니다.
첫 번째로 쿼터 브리지를 살펴보겠습니다. 쿼터 브리지에는 하나의 활성 스트레인 게이지와 알려진 저항이 있는 레그들로 구성되어 있습니다. 이 저항기들이 휘트스톤 브리지를 완성하기 때문에 데이터 수집에서 보통 “브리지 완성 회로망”이라고 합니다.
쿼터 브리지 시스템은 장착하고 연결해야 하는 스트레인 게이지가 하나뿐이기 때문에 설치가 쉽지만, 스트레인의 정보를 한 방향으로만 제한적으로 제공하고 표본의 열 변동에 민감하게 반응합니다.
쿼터 브리지 스트레인 게이지 시스템은 보통 두 가지 유형이 있는데, 이 둘에 대해 알아보겠습니다.
Quarter-Bridge Type I
쿼터 브리지 타입 1 구성에서 스트레인 게이지는 스트레인을 측정 방향으로 장착하여 양쪽의 축 스트레인을 측정할 수 있으며, 인장/압축 뿐 만이 아닌 벤딩에 대한 스트레인도 확인할 수 있습니다.
Quarter-Bridge Type II
쿼터 브리지 타입 2에는 실질적으로 두 개의 스트레인 게이지가 있습니다. 하지만 이 중 하나만이 스트레인을 측정하기 때문에 쿼터 브리지라고 합니다. 다른 스트레인 게이지는 순전히 온도 효과를 보상하기 위해 표본에 연결되는 것이지 스트레인을 측정하기 위해 결합되지는 않습니다.
기본적으로 스트레인 게이지도 온도에 따라 늘어나기 때문에 표본이 너무 뜨거워지거나 차가워지게 되면 실제 변형된 값에 온도 변형값이 오차로 더해지게 됩니다. 축에 수직으로 부착된 스트레인 게이지는 이 온도변형값만을 반영하기 때문에 효과적으로 온도로 발생한 에러를 제거하고 더 정밀한 측정을 가능하게 해 줍니다.
하프 브리지 스트레인 게이지는 두 개의 스트레인 게이지를 사용하기 때문에 휘트스톤 브리지에 두 개의 알려진 저항기가 필요합니다. 하프 브리지 시스템은 두 개의 게이지를 사용하고 온도 효과에 더 많은 내성을 가지고 있기 때문에 더 민감하다는 장점이 있습니다. 하프 브리지 구성에는 두 가지 주 종류가 있습니다.
첫 번째 유형은 하프 브리지 타입 1로, 축 스트레인을 측정하기 위해 한 스트레인 게이지가 장착되어 있고 가로 변형을 측정하기 위해 다른 게이지가 수직으로 장착되어 있습니다.
Half-Bridge Type I
두 번째 하프 브리지 타입 2 유형에서 두 개의 스트레인 게이지는 표본의 반대 방향에 동일한 방향으로 장착되어 있습니다. 이 방식은 일부 어플리케이션에 유용할 수 있는 축 스트레인 측정을 중화시킨다는 장점이 있지만, 구부러진 스트레인을 측정하는데 더욱 유용합니다. 만약 물체가 당겨졌을 경우, 두 스트레인 게이지는 동일한 양만큼 늘어지게 되고 브리지는 여전히 균형이 맞춰져 있어 Vin에서 눈에 띠는 전압 차이는 없을 것입니다. 하지만 만약 표본이 구부러져 있다면, 상단의 스트레인 게이지는 늘어질 것이고 하단은 눌려져 저항의 차이를 증폭시킬 것입니다.
Half-Bridge Type II
풀 브리지 타입 1은 하프 브리지 타입 2와 유사합니다. 스트레인 게이지를 표본의 반대편에 각각 부착하게 되고 당겨지는 축과 구부러지는 축에 같은 효과를 가지게 됩니다. 다만 4개의 스트레인 게이지로 측정하기 때문에 2개로 측정할 때 보다 결과 값이 훨씬 더 증폭됩니다.
풀 브리지 타입 2는 측면 측정을 위하여 2개의 스트레인 게이지가 더 부착되는 것을 제외하면 풀 브리지 타입 1과 유사합니다. 당겨지는 축과 구부러지는 축에 같은 효과를 가지게 되지만 축 방향에 대해서만 측정하지는 않습니다.
Full-Bridge Type I
풀 브리지 타입 3은 풀 브리지 타입 2와 매우 비슷하게 보이지만 휘트스톤에서 표현되는 레그의 위치가 변경되어 있습니다.
Full-Bridge Type II
Full-Bridge Type III
National Instruments는 스트레인 게이지의 필터링, 브리지 완성 회로망, 원격 감지, 비율 척도 측정, 구동 등 요구사항을 충족시킬 수 있는 다양한 데이터 수집 하드웨어 플랫폼을 제공합니다. 스트레인 게이지 측정에 대한 자세한 정보는 ni.com/strain 에서 확인할 수 있습니다.
위의 표에서 서로 다른 브리지 구성 유형의 요약을 확인할 수 있습니다. 이 표는 필요한 게이트 수를 포함한 7개의 다른 구성과 온도 효과를 포함한 여러 컴포넌트에 얼마나 민감한 지와 장착 위치에 대한 개요를 제공합니다.
특수한 유형으로 로제트가 있습니다. 로제트는 표본 표면의 다른 방향에 배치된 최소 두 개의 스트레인 게이지로 구성되어 있습니다. 일반적인 구성에서는 세 개의 스트레인 게이지를 사용하며, 이 게이지들은 45도 각도로 배치되어 있습니다. 이런 형태를 직각 로제트라고 합니다. 많이 사용하는 다른 유형에서는 게이지간에 60 또는 120도의 각을 사용합니다.
일반적인 로제트 어플리케이션은 평형 스트레인으로 계산됩니다. 세 개의 게이지로부터 측정된 스트레인은 평형 스트레인 어플리케이션의 방향성 스트레인을 계산하는데 사용할 수 있습니다. 또한, 로제트는 표본의 주요 스트레인을 파악하는데 사용되기도 합니다.
스트레인 게이지 공급업체는 스트레인 게이지 장착에 대한 자세한 설명을 제공해야 합니다. 스트레인 게이지를 잘못 장착하게 되면 불량한 측정 품질을 얻을 수 있습니다.
스트레인 게이지를 부착할 때는 일반적으로 아세톤이나 알코올을 이용하여 테스트 표본의 먼지와 기름을 제거하고, 실리콘 카바이드 종이로 표본을 가볍게 감싸 적절한 결함 위치를 만듭니다. 이제 스트레인 게이지를 표본에 부착할 수 있습니다. 에폭시 소재를 이용하면 몇 분만에 표본에 게이지를 고정할 수 있습니다.
도선은 스트레인 게이지 터미널에 납땜하고, 테잎과 같은 소재를 이용하여 표본에 고정하여 남땜 접합에 장력이 생기지 않도록 합니다.
마지막으로 실리콘 고무와 같은 보호 코팅을 입혀 스트레인 측정 품질에 영향을 줄 수 있는 물과 오염물질로부터 보호합니다.
지금까지 변형률 측정을 위한 스트레인 게이지의 종류와 측정 방법에 대하여 알아보았습니다. 이렇게 내가 원하는 변형률 측정을 위한 센서의 선정이 완료되면 센서에서 나오는 데이터를 수집할 수 있는 하드웨어가 필요합니다.
다음 시간에는 하중, 압력, 토크 등에 대하여 알아보도록 하겠습니다.
[30호] 2015 ICT 융합 프로젝트 공모전 결과 발표 및 시상 소식
글 | 편집부 press@ntrex.co.kr
전자, 로봇, 기계 분야 중 자유 주제로 2015년 2월 1일부터 3월 31일까지 진행된 2015 ICT 융합 프로젝트 공모전의 발표와 시상이 지난 5월 15일 (주)엔티렉스 본사 대회의실에서 진행되었다.
총 30개 팀 및 개인이 응모하여, 이 중 18개 작품을 최종 선정하였으며, 이 중 최우수상은 단국대학교 강영웅, 이주명 님이 응모한 “전도성 페인트를 이용한 Electric Menu”가 수상하였다.
최우수상을 수상한 강영웅, 이주명 님이 본사를 방문하여 상장과 상금을 수령하고 간단한 작품 소개 및 본사 연구소 및 3D 프린터실 탐방의 시간을 가졌다.
이번 공모전 심사는 (주)펌테크, JK전자, (주)뉴티씨, (주)칩센, (주)위드로봇과 본사 연구소에서 공동으로 심사하였으며,
시상 내역은 아래 표와 같다.
구분 | 수상자 | 작품명 |
최우수상 | 단국대학교 강영웅, 이주명 | 전도성 페인트를 이용한 Electric Menu |
우수상 | 동양미래대학교 전자공학과 권영제 외 5명 | 반딧불이 – 센서부착 맹인 지팡이 |
우수상 | 단국대학교 김진우, 김준환 | 임의파형 발생기 |
우수상 | 아주대학교 송광근 외 3명 | 추측항법 모형 자동차 |
입선
|
가천대학교 전자공학과 김진형, 조용범 | 물 뿜는 러버덕 |
세종대학교 정보통신공학과 정승철 | 개 쾌변 | |
단국대학교 이찬우, 조현우 | 손주야 톡 해 | |
상명대 정보통신공학과 이정욱 외 3명 | 지능형 화재 감시 자율 주행 로봇 | |
동양미래대학교 전기공학과 임종헌 외 5명 | 자가발전기구 GX-1 | |
부경대학교 공영훈 외 5명 | 원격지 작업이 가능한 이동 로봇 팔 관리 시스템 | |
참가상
|
부산대학교 전기공학과 김권겸 외 4명 | 다중 추돌 사고 방지를 위한 스마트 솔루션 |
동양미래대학교 임우람 외 3명 | 조립형 Hybrid Wheel Chair | |
상명대학교 정보통신공학과 황인철 외 4명 | 스마트 가로등 조명제어 시스템 | |
동아대학교 김준호,김태구,천현재 | 비닐하우스 자동제설 및 자동습도 조절장치 | |
가천대학교 전자공학과 정현우 | 밸런싱로봇을 활용한 펭귄로봇인형 | |
충남대학교 컴퓨터공학과 김진욱,이선민,박지훈 | 프리젠터 장갑 | |
원광대학교 김지언 | Shield | |
홍익대학교 안두기 외 4명 | C.R.O.P (Car’s Revolver Option for Parking) |
이번 공모전을 빛내주신 지원자분들과, 심사를 지원해주신 협찬사에게도 감사의 말씀을 드린다. 마지막으로 수상한 팀들 모두 축하드리며, 수상작들에 대한 내용은 다음 디바이스마트 매거진을 통해서 소개하고자 한다.
내년 2월에 진행될 다음 대회에도 많은 참여와 관심을 부탁드린다.