April 28, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

『내가 바로 초보자다!! – 서미스터 온도센서편』

CYMERA_20130726_140339
안녕하세요..^^ 『내가 바로 초보다!!』를 쓰고 있는 저자 유광원입니다. 이번 주제는 센서편에서 다뤄지지는 않았지만 온도센서 중에 유명한 서미스터에 대해 알아볼려고 합니다. 전문적인 지식은 아니지만.. 저도 공부하는 입장에서..ㅎ 열심히 찾아보아서 정리하였으니.. 이쁘게 봐주세요~~^^

1. 서미스터란 무엇인가?

<<출처 : http://blog.naver.com/PostView.nhn?blogId=kmjunja&logNo=80178515233>>
저항기의 일종으로, 온도에 따라 물질의 저항이 변화하는 성질을 이용한 전기적 장치입니다. 열가변저항기라도고 하며, 주로 회로의 전류가 일정 이상으로 오르는 것을 방지하거나, 회로의 온도를 감지하는 센서로써 이용되고 있습니다.
서미스터는 주로 폴리머세라믹 소재로 제작되며, 섭씨 영하 90도에서 130도 사이에 높은 정확도로 온도를 측정할 수 있고, 이러한 점에서 순수한 금속을 사용하여 고운의 온도를 측정하는 저항 온도계와는 차이를 보입니다.
또한 미세한 온도 변화에 의해서 저항의 변화가 크게 일어나도록 제작됩니다. 따라서 미세한 온도의 측정을 수반하는 체온계나 온도계, 습도계, 기압계, 풍속계 등에 활용되고, *PolySwitch와 같은 *PTC는 과전류를 차단하는 재사용가능한 퓨즈용도로 사용되며,  *NTC는 장비의 전원투입 시 돌입전류를 제한하는 용도로도 사용됩니다.

여기서 잠깐!!

PolySwitch 란? : 퓨즈대용으로 사용하는 반도체의 일종으로 낮은 온도에서는 저항값이 매우 낮아 그냥 쇼트상태와 비슷하게 동작이 되지만, 과전류가 흐르면 자체 발열에 의해 온도가 상승하고, 그에 따라 순간적으로 저항이 증가하면서 전류를 차단하는 스위치입니다! 퓨즈와 다른 점은 퓨즈는 1회용이지만 폴리스위치는 전류가 정상상태로 돌아가면 다시 복귀하므로 반영구적으로 사용할 수 있다는 점입니다.
PTC 와 NTC 란? : 이 내용은 서미스터 종류에서 말씀드리겠습니다.

2. 서미스터의 장단점

<< 출처 : http://cafe.naver.com/datacar/818 >>
어느 제품이던지 마찬가지로 서미스터에도 장단점이 존재 합니다. 그럼 서미스터의 장단점을 알아보겠습니다.

 장점  * 고감도(온도에 따른 저항변화가 크다)
 * 반도체 소자이므로 대량생산이 가능하다.
 * 소형이며 응답속도가 빠르다.
 * 외란의 영향이 적으며, 정밀 측정이 가능하다.
단점   * 측정가능한 온도범위가 좁다.
 * 각 소자마다 특성의 변화폭이 크다.
 * 비직선적인 출력을 나타내므로, 부가적인 회로가 필요하다.
 * 호환성이 나쁘다.

3. 서미스터의 종류

<<출처 : http://cafe.naver.com/datacar/818>>

NTC

NTC 서미스터는 Mn(망간), Ni(니켈), Fe(철) 등을 이용한 천이 *금속산화물(MnO,NiO,Fe2O3) 분말을 주성분으로 하여 1200[℃] 이상의 고온에서 소결하여 *스피넬(spinel) 구조와 흡사한 결정 구조를 갖고 있습니다.
이러한 NTC는 구리 또는 알리마나(Alumina)등을 첨가하여, 재료의 조성비를 변화시키는 것에 의해 측정 가능한 온도 범위를 조절할 수 있으며, 또한, 서미스터가 고온에서 소결된 반도체 세라믹이므로 측온 저항체와 같이 공기와의 접촉에서 산소의 영향을 받지 않으므로 장시간에 걸쳐 안정적인 동작을 할 수 있습니다..

NTC 서미스터는 다양한 종류가 있으며, 일반적으로 다음 아래와 그림과 같이 비드형, 디스크형, 칩형으로 분류됩니다.

NTC 서미스터

비드형(Bead Type) 서미스터 : 표면을 유리로 코팅하여 안정성과 신뢰성이 매우 높으며, 소형이므로 열용량이 작아 응답속도가 빠릅니다. 또한 구조적으로 기밀성이 높으므로 고온에서 사용할 수 있고, 정밀 계측이 가능하지만. 제작상의 문제로 가격이 비싸다는 단점이 있습니다.
디스크형(Disc Type) 서미스터 : 현재 가장 널리 사용하고 있는 서미스터로서, 기밀성이 우수하지 않으므로 정밀한 온도측정이나 액체의 온도측정과 같은 특수한 환경에서의 사용은 적합하지 않습니다. 그러나 가격이 저렴하여 에어콘 등에서 주로 사용되고 있습니다.
칩형(Chip Type) 서미스터 : 대량생산에 적합한 구조로서 가격이 저럼하며, 디스크형보다 응답속도가 빠릅니다. 또한 디스크형에 비해 우수한 안정도를 나타내며, 150[℃]정도까지 온도계측이 가능하고, 소형 제작이 가능하므로 전자체온계 등에서 사용되고 있습니다.

여기서 잠깐!!

* 금속산화물이란? : 금속 원소와 산소 원소로만 이루어진 화합물, 산화알루미늄, 산화철, 산화구리 등이 있다.

* 스니펠 구조란? : 산화물 따위에서 볼 수 있는 결정 구조의 하나! 등축 정계에 속하며 자성이나 전기 전도성 따위의 특수한 성질이 있는 것이 많다.

PTC

PTC 서미스터*티탄산 바륨(BaTiO3)에 미량의 *회토류 원소 (Y,La,Dy 등)를 첨가시켜 도전성을 갖게 한 n형 반도체입니다. 이것은 BaTiO3가 큐리점에서 도전성이 크게 변화하는 성질을 이용한 정(正)특성을 갖는 서미스터로써 포지스터(Positor)라고도 부르며, 포지스터는 설정 온도 부근에서 급격하게 저항이 변화하므로, 좁은 온도 영역에서 온도스위치, 서지전류 방지 등과 같은 각종 전기회로의 보호용으로 폭넓게 사용되고 있습니다. 또 다른 종류로, 다량의 불순물로 도핑한 불순물로 도핑한 실리콘 PTC인 실리스터(Silistor)가 있으며, 온도 변화에 따라 저항의 변화가 거의 직선적으로 나타납니다. 그러나, 일반적으로 PTC라 하면 포지스터를 말합니다. 그럼 포지스터의 특징에 대해 알아보도록 하겠습니다.

1. 어떠한 *임계전압 이상에서, 증가하는 전압에 반비례하여 전류가 감소하는 전류제한 작용으로 인해 동작이 유지될 수 있는 범위 내에서는 소자에 인가되는 전력과 소비되는 전력이 동일하게 되는 열평형 상태를 유지한다.
2. PTC 서미스터에 일정 전류 이상의 과전류를 흐르게 하면, 서미스터 자체의 발열현상이 발생하게 되며, 이에 따라 전기저항이 증가하게 되고, 증가된 저항에 의해 전류가 감소한다.

이러한 PTC 서미스터의  특징을 이용하여 전기모기향, 가습기 등에서 사용되고 있습니다.

여기서 잠깐!!

* 티탄산 바륨이란 ? : 강유전체 물질로서, 비유전율이 매우 크지만 온도와 주파수의 영향이 크기 때문에 커패시터에는 그다지 사용되지 사용되지 않는다. 오히려 압전효과가 큰 점을 이용하여 음향 전기변환 소자로 많이 사용된다.
* 회토류 원소란? : 스카듐(Sc, 원자 번호21), 이트륨(Yt, 원자 번호 39), 이테르 븀(Yb, 원자 번호 70), 악티나이드 원소(원자 번호 89~103)의 일군의 원소의 총칭, 어느 것이나 지구상에 미량밖에 존재하지 않으므로 값이 비싸다.

CTR

CTR 서미스터는 V2O5, B2O3와 같은 산화물에 Ba(바륨), Sr(스트론튬), P(인)에 의한 산화물을 미량 첨가하여 소격하는 과장으로부터 제작됩니다. CTR은 NTC와 같이 부의 온도 특성을 보이며, 또한 PTC와 같이 어떠한 특정 온도 부근에서 그 저항값이 급격하게 변화합니다. 즉, 특정 온도 이하에서는 절연성 온도를 보이고, 그 이상에서는 금속 전도를 나타내게 되는 것입니다.
이러한 특징을 이용하여 특정 온도에서 스위칭 동작을 하도록 사용할 수 있으며, CTR의 온도설정은 첨가되는 불순물 산화물에 의해 결정할 수 있고, 실용화되어 있는 온도 범위는 50~80[℃] 정도입니다. 또한, 적용되는 분야로는 조리기구의 렌지류, 가스 취반기, 전자조리기, 커피 메이커, 토스트기, 전기 밭솥 등이 있으며, 히터, 에어컨, 급탕기, 냉장고, 다리미, 시계, TV, 세탁기, 복사기 등등 많은 제품을 통해 사용되고 있습니다. 

4. 서미스터의 기본적인 특성

<<출처 : http://www.micombox.com/index.php?document_srl=26721&mid=ee_electronics>>
서미스터는 3가지의 기본적인 특성을 띄고 있습니다. (1) 저항-온도의 특성, (2) 전류-전압의 특성, (3) 전류-시간의 특성이 이 3가지입니다. 그럼 3가지의 특성에 대해 알아보도록 하겠습니다. ( 이 부분은 초보자 입장에서는 상당히 어렵습니다만.. 중요한 내용이기에 넣었습니다. )

전류-전압의 특성

서미스터는 주위 온도의 변화에 대해서 저항치의 변화가 음으로 극히 크고, 그 저항-온도 특성은 반도체 물성론에서 다음식으로 나타낼 수 있습니다.
tec-img16

R : 절대온도 T(K)에서의 저항값 / R0 : 절대온도 T0(K)에서의 저항값
β : 서미스터의 B점수 / T To : 절대온도 ((K=℃_237.15)

여기에서, R 및 Ro는 각각 온도 T 및 To[K]일 때의 저항치를 나타내고, To는 일반적으로 298.15k(℃)를 기준으로 하는 때가 많습니다. 식(1)에서 알 수 있는지 InR과 1/T은, 직선관계를 갖고 직선의 구배가 B정수에 상당하며 B의 값은 다음식으로 나타낼 수 있습니다.

tec-img17

여기서 R1, R2는 각각 온도 T1, T2에서 측정한 저항치를 나타냅니다.
그러나, 실제로 사용하는 반도체 재료에 대해서 저항치와 온도의 관계를 실측하면 엄밀히 직선이 되지는 않습니다. 따라서 정밀한 온도 특성이 필요한 경우에는, 저항-온도의 특성으로 다음식과 같이 나타내는 것이 적당합니다.

tec-img18

여기에서 A, C 및 D는 재료조성에 의존하는 정수로 그 중에서 C는 양의 값 또는 음의 값을 나타냅니다. 또 서미스터의 온도계수a는 다음식에 의해서 정의 됩니다.

tec-img19

따라서 온도계수 곡선 a는 제곱 곡선이어서, T에 의해서 크게 변하여 저온이나 고온이 될 수록 a가 커지게 됩니다.

전류-전압의 특성

임의의 규정온도에서 서미스터의 전류-전압사이 관계로 매우 적은 전류 범위에서는 서미스터의 자기발열이 작아서 전압이 전류에 비례하여 옴의 법칙을 따라서 직선으로 나타냅니다. 그러나 전류가 증가하게 되면 서미스터의 자기발열 현상이 발생하여 서미스터의 온도를 상승시키고, 결국 서미스터의 저항이 감소하게 됩니다. 이러한 이유로 특정전류에서의 전압이 최대값을 갖고 즉, dE/dI가 계속적으로 감소하게 되는 것을 말합니다.

tec-img21

전류-시간의 특성

저항의 감소는 서미스터가 자기발열 될 정도의 충분한 전류가 가해져도 즉시에 감소되지 않으며, 또 서미스터가 등가회로상에서 여기(EXCIT)될 때 평형 작동상태에 도달하기 전에 반드시 Time Delay가 발생하게 됩니다. 이러한 특성을 전류-시간의 특성이라 하며, 서미스터의 열발산, 열용량과 회로 구성에 의존하게 됩니다.

tec-img22

1,2,3번까지는 어떻게 알겠는데..ㅎㅎ 4번은.. 무리무리.. 공부를 해야 이해가 될 것 같습니다. 그렇지만 엔티렉스를 오시는 공학관련 분들은 거의 다 아시겠죠??ㅎ 그럼 이상 『내가 바로 초보다!! – 서미스터 온도센서편』을 마치도록 하겠습니다!! 감사합니다..^^

서미스터 사러가기

내가 바로 초보자다!! 시리즈 보기⊙▼⊙v

1탄 저항편 2탄 다이오드편 3탄 커패시터편 4탄 센서편

최대 30Kg의 토크! 강력한 힘을 느껴보시고 저렴한 가격에 만나보세요~

20130718_151650

-오늘 강력한 힘을 가진 모터를 소개해드리겠습니다.

소형모터의 최강자라고 할 수 있는 마부치모터에 웜기어를 장착한 바로 24V [ 1:1656 ] Micro Worm Gear Motor (WGM370)입니다.

20130718_151650

-이 모터는 세계 소형모터 시장에서 55%를 점유하고 있을 정도로 인지도가 높은 마부치모터에서 제작된 DC모터이며, 여기에 1:1656비율의 웜기어를 장착한 모델입니다.


※여기서 웜기어란?

-웜기어는 기어축의 방향이 직각을 이루고 있습니다. 서로 접촉을 하여 동력을 전달하고 있으며, 큰 감속비율을 얻을 수 있어 감속기로 많이 사용됩니다.
웜기어의 장점으로는 다른 일반 기어들에 비해 소음과 진동이 낮으며, 웜을 원동력으로 웜기어를 회전하는 것은 쉬우나 반대로 웜기어를 원동력으로 웜을 돌리기는 쉽지가 않습니다.
이런 특성때문에 웜기어는 역전방지용으로도 많이 쓰이고 있습니다.
하지만 단점으로는 접촉을 하며 회전하기 때문에 마찰에 대한 손실이 커지며 속도나 기어의 비율에 따라서 효율성이 급격히 떨어집니다.


-마부치 모터에 대한 스펙

스펙2

-입력전압 5v일때에 대한 모터 특성치의 그래프와 스펙사항입니다.


-감속기를 장착한 모터에 대한 스펙

스펙

-감속기를 결합했을때에 대한 스펙이며, 감속비 별로 분류된 정보들을 확인하실 수 있으며, 현재 소개하는 제품의 감속비는 1:1656으로 표에서 4번째 해당되는 제품입니다.
위 스펙 또한 입력전압이 5v일때에 대한 스펙을 소개하고 있습니다. 회전속도(RPM)는 무부하 1.8r/min, 부하시 1.4r/min이며, 부하시 토크는 10kg.cm이고 최대 30kg.cm입니다. 하지만 감속비가 높아 질수록 효율이 떨어지게 되므로 정확한 수치는 아닙니다.

여기까지 모터에 대한 간단한 스펙을 알아보았습니다.


-본격적으로 테스트를 진행하기전 몇가지 준비물에 대하여 간단히 알아보겠습니다.

전 이 모터의 성능을 측정하기 위해 모터를 고정하고 축을 연장하여서 무거운 물체를 끌어올리는 과정으로 테스트를 할것이므로 작업에 필요한 준비물은 몇가지 되지 않습니다.

1. 모터를 고정하기 위한 마운트

cats1

-테스트를 하기 위하여 모터를 고정해야 되므로 마운트를 제작하였습니다. 두께는 모터의 축이 조금 짧은 관계로 2t의 판재로 가공하였으며, 제가 제작한 마운트는 사진에서 보시면 아시겠지만 모터보다 많이 크게 제작되었습니다. 이유는 저희 연구소에서 모터의 성능을 테스트하기 위한 프레임이 제작되어 있는데 그 프레임이 큰 모터들을 테스트하기 위함이다 보니 크게 제작되어 있습니다. 그 프레임에 홀을 맞추다 보니 자연적으로 마운트는 모터보다 큰 사이즈로 제작하였습니다. 유저 분들은 모터와 사용해야 될 제품의 크기만 확인하시어 제작하시면 되겠습니다. 모터의 도면을 참고하여 제작하였으며, 마운트 제작에 대한 자세한 설명은 아래의 페이지로 이동하시면 보실 수 있습니다.

마운트 제작방법 보러가기

2. 동력을 전달하기 위한 제품 커플링

커플링

-제가 선정한 커플링은 축하중이 적어 축에 부담을 줄여주며, 비틀림의 강성이 크고 출력에 대한 응답성이 뛰어난 제품으로 품명은 DOH-32로 선정하였습니다.
제품을 구매하기전 유의사항으로 모터축의 샤프트 외경과 상대물에 외경을 정확히 파악하여 그에 맞는 옵션을 선택하셔야 됩니다. 물론 커플링의 내경이 모터 및 상대물의 내경보다 조금 커야지 삽입이 되며, 무두볼트가 결합되어 있으므로 볼트를 조여서 완벽히 고정하시면 됩니다.
커플링 구매하기


3. 축을 연장하기 위한 샤프트

cats

-모터와 커플링을 연결하였으면 상대물인 샤프트와 연결을 해줍니다. 커플링의 한쪽 내경이 12mm인곳에 삽입한 뒤 무두볼트로 완벽히 고정하였습니다.
이 샤프트는 고정이 될 수 있고 회전되는 힘에 의해 휘어지거나 부러지지 않는 제품으로 어떤것이든 사용이 가능합니다. 저 또한 간단하게 알루미늄 봉재를 잘러서 연결하였습니다.

-최종적으로 모든 준비물과 모터를 결합한 사진입니다.

20130725_145834


-이 모터를 통해 들어올릴 제품은 9.5Kg 정도의 배터리 입니다. 모터의 스펙상 최대 토크가 30Kg지만 회전체의 반지름이 약 3cm 정도라서 최대 토크의 1/3인 10kg미만으로 테스트 하였습니다.

20130725_164848

-배터리의 실제 무게를 확인하셨죠?  그럼 이제 테스트영상을 보시겠습니다.

-모터의 힘을 느끼셨나요? 보시는것처럼 작은 모터에서 나오는 힘이 대단합니다. 10kg의 배터리를 안정적으로 들어올리는 힘과 배터리를 고정하는 힘까지 아주 뛰어납니다.
이 모터는 웜기어를 사용했기 때문에 작은 공간에서도 높은 기어비를 사용하여 큰 힘을 얻을수가 있습니다. 하지만 모터의 감속비율에 따라 출력되는 토크는 한계치가 있어  감속비율이 높다 하더라도 회전은 감소하지만 토크는 변동이 없게 됩니다. 스펙에서 보시면 아시겠지만 현재 감속비율이 이 모터의 가진 최대 힘을 낼 수 있는 감속비율입니다.

○현재 창고 대방출 이벤트를 진행중이니 50% 할인된 가격으로 만나보시기 바랍니다~!

모터 구매하러 가기

MoonWalker의 스크립트 기능을 이용한 역진자 제어

7

001

 

위 사진에 이번에 출시 예정인 MoonWalker가 있습니다. 응? 근데 왜 펜들럼[바로가기]과 연결되어 있냐구요? 원래 모터 제어기를 펜들럼 같은 장비랑 물리면 하나의 보드가 더 필요합니다. 바로 펜들럼의 제어입력을 계산하기 위한 보드인데요. 저희가 이번에 야심차게 출시할 예정인 MoonWalker가 저 사진에는 딸랑… 딸랑 하나만 연결되어 있자나요? 이번글에서는 MoonWalker가 지원하는 아~주 많은 멋진 기능중에서 SCRIPT 언어에 대해 자랑하기 위해 저렇게 연결해 두었습니다.

이번 MoonWalker에는 바로 [바로가기]에서 언급했던 스크립트 기능이 포함되어 있습니다. 이 기능은 뭐 일종의 매크로 보다는 더 강력하다고 생각하시면 됩니다. 간단히(사실 좀 복잡해도 됩니다.^^) 몇몇 기능들을 조합해서 프로그램을 짜야하는데 그것때문에 모터 제어기와 함께 별도의 보드를 쓰기는 불편하자나요.

몇몇 예를 들어보죠.

상황1)
버튼 스위치를 이용해서 누를때마다 모터 RPM을 10씩 증가시키다가 50RPM이 되면 다시 10씩 감소하는 것을 계속하고 싶다. 이때, 모터의 RPM은 속도제어가 되어서 부하가 바뀌더라도 지령된 RPM을 잘 유지해야하며, 버튼을 1~3초안에 여러번 누르는 것은 오류로 보고 인식하지 않아야한다.
상황1에 대한 기존의 방식)
1. 속도 제어가 잘 되는 모터 제어기를 모터와 엔코더와 연결한다.
2. 별도이 MCU가 장착된 보드를 만들어서 버튼을 결선한다.
3. 2에서 만든 MCU 보드에 모터 제어기를 연결한다.
4. 아차~ 모터 제어기는 MCU와 통신으로 연결되는 방식이어야 한다.
5. 더 슬픈건, MCU 보드에 프로그램을 컴파일 하기위해 잘 쓸일이 없는 컴파일러를 구해야하고
6. 더더더 슬픈건, 이 컴파일러의 사용법 마저 익혀야한다…ㅠㅠ
7. 그나마 다행인건, 난 C는 그래도 좀 할 줄 안다…ㅠㅠ
상황1에 대해 MoonWalker가 제시하는 솔루션)
1. 속도 제어가 잘 되는 모터 제어기는 MoonWalker이다.
2. 별도이 MCU가 장착된 보드 따위 구할 생각하지 말고, 그냥 MoonWalker의 Digital Input 단자에 버튼을 연결한다.
3. miniUSB단자에 USB케이블을 꼽고, 편하게 내 PC에 연결한다.
4. 더 편한건, 제공되는 UI 컨트롤러 프로그램을 다운 받아서 실행하고 스크립트를 조건대로 작성한다.
5. 그냥 실행한다.
상황2)
난 제어를 공부하는 학생인데 교수님이 역진자 시스템을 제어해보라고 숙제를 줬다. 난 제어만 공부해서 MCU의 환경따위 구축할 줄 모른다.ㅠㅠ 그러나 역진자를 제어하기 위한 제어 알고리즘은 어떻게든 C 문법으로 작성할 수 있을 듯 하다.
상황2에 대한 기존의 방식)
1. 역진자는 폴과 암으로 구성되어 있으니, 두 개의 엔코더를 받아들이고, 하나의 모터를 구동할 수 있는 2채널형 모터 제어기를 구한다.
2. 모터 제어기만으로는 안된다. 별도의 보드를 가지고 역진자를 제어할 수 있는 코드를 작성할 수 있어야한다.
3. 그나마 다행인건 C로는 역진자 제어 코드를 짤 수 있을 것 같다.
4. 근데 젠장… 이놈의 MCU는 뭘 하지? DSP? CORTEX? 난 그냥 역진자만 간단히 제어할 수 있으면 좋겠다..ㅠㅠ
상황2에 대해 MoonWalker가 제시하는 솔루션)
1. 그냥 MoonWalker…. 하나면 된다.

히히… 과대 광고인가요? 아닙니다. 이제부터 보시면 됩니다.

MoonWalker의 MW-MDC24D200D 모델은 2채널형 모델입니다. 즉, 구동하고 싶은 모터는 하나지만 엔코더를 읽어야하는게 두 개니 2채널형으로 선정합니다. 그리고 모터 연결, 엔코더 연결, 그리고 PC와 시리얼 통신을 연결합니다. 추가적인 보드 따위 필요없습니다. 그냥 MoonWalker면 됩니다^^

002

그리고 살짝, 엔코더의 한 바퀴당 펄스 숫자를 저희가 제공해 드릴 모터 컨트롤 UI 프로그램을 통해 설정해 둡니다.

003

그리고, 펜들럼을 제어하기 위한 코드를 짜서 넣어둡니다. 역진자는 처음보는분은 어려울 수도 있지만, 지금은 역진자 정도의 제어 조차도 저희 MoonWalker 모터 제어기에서 제공하는 스크립트 기능으로 구현할 수 있다는 걸 보여드리는 것입니다. 모터 제어기 내부의 변수들을 읽어와서 위치와 속도를 알고, 그걸 가지고

004

제어 입력도 계산하는 것이 가능하다는 것입니다. 모터제어기 하나만 썼을 뿐인데 말이죠. 그리고, 저희 스크립트 기능은 문법은 C 문법을 따라가지만, 별도의 변수 선언 과정은 생략됩니다. 또하나더… 저희 MoonWalker의 스크립트는 사용하는 변수를 위 그림 우측처럼 실시간으로 관찰할 수 있게 해줍니다.^^

이제 펜들럼 기구부(모터 포함)와 모터제어기인 MoonWalker만 딱.. 사용해서 MoonWalker가 지원하는 스크립트로 코드를 작성하고, 펜들럼을 제어하는 것을 동영상으로 보시죠^^

MoonWalker.. 기대되죠? Comming Soon… 입니다^^

 

 

오픈 소스 전자 설계 자동화 (Fritzing)

브레드보드 예제

Fritzing 은 디자이너, 예술가, 연구가 및 전자를 취미로 즐기는 비 전공자도 쉽게 사용하기 위해 만든 프로그램 입니다.

많은 사람들이 알고 계신 CAD 와 비슷한 기능을 가진 프로그램 이지만, 비용 지불이 없는 오픈 소스 소프트웨어입니다.

브레드보드(Breadboard), 회로도(Schematic), 인쇄기판(PCB) 상의 그림을 모두 볼 수 있고 편집할 수 있습니다.

직관적인 인터페이스로 초보자도 쉽게 접할 수 있으며, 특히 Fritzing 은 아두이노 사용자에게 특화되어 있습니다.

저 역시 전자를 취미로 시작하려는 사람으로 이번 글은 전문적인 내용 보다는 Fritzing 소개 정도로 생각해 주세요.^^

 

홈페이지는 http://fritzing.org 입니다. 운영체제에 맞춰 다운로드 하시고 압축파일을 풀면 바로 실행이 됩니다.

프리츠 메인

프로그램을 실행하면 초기 화면은 브레드보드 뷰 입니다. 사용되는 이미지는 실제 부품에 가깝게 구현하고 있습니다.

브레드보드 초기

화면 구성은 부품을 배치하고 연결하는 브레드보드 영역과 필요한 부품을 선택하는 부분,부품 속성을 설정할 수 있는 영역까지

총 세 개의 창으로 구성되어 있습니다.

 

Fritzing의 기능을 [메뉴] > [파일] > [예제 열기] 에서 부품 배치가 완료된 회로를 통해 간단히 살펴 보겠습니다.

예제 파일의 부품 배치도를 프린트 하여 실제 부품 배치에 사용할 수 있고, 예제 파일을 PCB로 제작할 수 있어

시간을 절약할 수 있습니다.  아래 이미지는 예제 파일 중에서 [Arduino Simple LED Matrix] 구성 회로 입니다.

브레드보드 예제

브레드보드 뷰 입니다. 노트를 생성하여 메모를 작성 할 수 있습니다. 아래는 스케메틱 뷰 입니다.

스케메틱 예제

다음으로 PCB 를 직접 제작할 수 있는 PCB 뷰 입니다. 바로 프린트하여 자작 PCB를 만들 수 있겠네요.

pcb 예제

간단한 소개를 마치고 직접 회로를 구성해 보겠습니다. 초보적인 간단한 기능을 알아보도록 하겠습니다.

새로운 프로젝트를 열고 시작합니다.

led1

브레드보드를 클릭하고 오른쪽 하단에 부품 속성(사이즈)을[ half+] 로 선택하였습니다.

led2

사용할 부품을 오른쪽 부품 선택 창에서 선택한 후 드래그 하여 브레드보드 영역으로 옮겨 줍니다.

옮겨진 배터리를 클릭한 후 부품 속성을 결정해 줍니다. 공급 전원을 9V로 선정 하였습니다. 배터리 모양이 바뀌네요.^^

led3

다음으로 저항과 LED를 선택하고 옮겨 줍니다. 그리고 원하는 사양으로 부품 속성을 결정해 줍니다.

led4

부품을 원하는 위치에 옮겨 놓습니다. 연결된 부품들은 녹색점으로 확인이 가능합니다. 또한 부품의 끝점을 클릭하면

위 모습처럼 연결된 부분들이 노란점으로 변경됩니다.  이렇게 간단한 LED 연결 회로가 완성되었습니다. ^^;

전선의 색상은 자유롭게 변경이 가능합니다. 전선을 선택하고 마우스 오른쪽 버튼을 눌러서 선택하면 됩니다.

led 스케메틱

스케메틱으로 전환하여 보기 및 편집이 가능합니다. PCB 모드도 마찬가지 입니다.

led5

전선은 원하는 모양으로 조정이 가능하고, 배터리 전선 처럼 곡선 모양을 만들려면 마우스 포인터를 전선위로

이동한 후 전선이 활성화 되면 이때 [Ctrl] 키를 누르고 옮겨 주시면 됩니다.

여기까지 Fritzing 대해 간단하게 알아 봤습니다. 아두이노 관련 책을 보다가 이런 그림들은 어떻해 그리나

궁금해서 찾아보니 이런 프로그램이 있네요. 저 처럼 궁금해 하시는 인원이 계실까봐 글을 적어 봅니다.

아직 베타버전이라 지속적으로 업데이트가 이뤄지고 있는거 같은데요. 계속 지켜보면 좋을 듯 합니다.

그럼 이만 마치도록 하겠습니다. 여기까지 읽어 주셔서 감사드립니다.^^

온도측정용 써미스터 실험 리뷰!

온도 써미스터

온도측정용 써미스터 신제품 5종 입고!!

써미스터[ Thermistor ] 란?

온도 상승에 따라 전기저항이 현저하게 작아지는 반도체의 성질을 이용한 회로소자.
철, 니켈, 망간, 몰리브덴, 동 등의 산화물, 탄산염, 초산염, 염화물을 소결하여 만든다. 온도측정, 제어, 보상, 이득조정, 전력측정 등에 이용된다.

 

온도측정용 탐침형 써미스터 (온도측정용 써미스터 NTSF-4) 의 실험동영상을 한번 보실까요?

써미스터 반응속도가 정밀온도계보다는 조금 느리지만, 점점 정밀온도계와 점점 오차없이 같아지는 걸 보실 수 있으실 거에요!

정밀한 써미스터온도계 good입니다!

 

 

*써미스터 테이블표

저항값 온도 저항값 온도 저항값 온도 저항값 온도
217000 -40 25680 2 5023 44 1374 86
204600 -39 24580 3 4854 45 1336 87
193000 -38 23530 4 4691 46 1300 88
182100 -37 22540 5 4535 47 1264 89
171900 -36 21590 6 4385 48 1230 90
162400 -35 20690 7 4240 49 1197 91
153500 -34 19820 8 4101 50 1165 92
145100 -33 19010 9 3967 51 1134 93
137200 -32 18220 10 3839 52 1104 94
129800 -31 17480 11 3715 53 1075 95
122900 -30 16770 12 3596 54 1046 96
116400 -29 16090 13 3481 55 1019 97
110300 -28 15450 14 3370 56 992.3 98
104500 -27 14830 15 3264 57 966.5 99
99090 -26 14240 16 3161 58 941.4 100
93990 -25 13680 17 3062 59 917.2 101
89180 -24 13140 18 2967 60 893.6 102
84650 -23 12630 19 2875 61 870.7 103
80390 -22 12140 20 2787 62 848.6 104
76360 -21 11670 21 2701 63 827.1 105
72570 -20 11230 22 2619 64 806.2 106
68980 -19 10800 23 2539 65 785.9 107
65600 -18 10390 24 2462 66 766.2 108
62410 -17 10000 25 2388 67 747.1 109
59390 -16 9626 26 2317 68 728.5 110
56530 -15 9267 27 2248 69 710.5 111
53840 -14 8925 28 2181 70 693 112
51280 -13 8596 29 2117 71 676 113
48870 -12 8282 30 2055 72 659.5 114
46580 -11 7980 31 1995 73 643.4 115
44420 -10 7692 32 1937 74 627.8 116
42360 -9 7415 33 1881 75 612.7 117
40420 -8 7150 34 1827 76 597.9 118
38580 -7 6896 35 1774 77 583.6 119
36830 -6 6652 36 1724 78 569.7 120
35170 -5 6418 37 1675 79 556.2 121
33600 -4 6193 38 1627 80 543 122
32100 -3 5978 39 1582 81 530.2 123
30680 -2 5771 40 1537 82 517.8 124
29340 -1 5572 41 1494 83 505.7 125
28060 0 5382 42 1453 84
26840 1 5199 43 1413 85

 

 

 

*온도센서 회로도 –  클릭하기!!

온도 센서 회로도

 

 

*온도센서 프로그램소스

/*****************************************************
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega16.h>

#include <delay.h>

#include <stdio.h>

#include <math.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
// Declare your global variables here

float ntc_val;
float temperature;
float sensor_adc = 0;
signed int dis_temperature = 0;

unsigned char lcd_string[8];
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0×00;
DDRA=0×00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0×00;
DDRB=0×00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0×00;
DDRC=0×00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0×00;
DDRD=0×00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0×00;
TCNT0=0×00;
OCR0=0×00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0×00;
TCCR1B=0×00;
TCNT1H=0×00;
TCNT1L=0×00;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0×00;
TCCR2=0×00;
TCNT2=0×00;
OCR2=0×00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0×00;
MCUCSR=0×00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0×00;

// USART initialization
// USART disabled
UCSRB=0×00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;

// ADC initialization
// ADC Clock frequency: 93.750 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ACSR=0×80;
SFIOR=0×00;

ADMUX=0×40;
ADCSRA=0x8D;
// SPI initialization
// SPI disabled
SPCR=0×00;

// TWI initialization
// TWI disabled
TWCR=0×00;

// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS – PORTB Bit 0
// RD – PORTB Bit 1
// EN – PORTB Bit 2
// D4 – PORTB Bit 4
// D5 – PORTB Bit 5
// D6 – PORTB Bit 6
// D7 – PORTB Bit 7
// Characters/line: 16
lcd_init(16);

//도씨 단위 표시 위해 캐릭터 LCD RAM 0번지에 특수 문자 라이팅

delay_ms(10);
lcd_write_byte(0b01000000, 0b00000111);
delay_ms(1);
lcd_write_byte(0b01000001, 0b00000101);
delay_ms(1);
lcd_write_byte(0b01000010, 0b00000111);
delay_ms(1);
lcd_write_byte(0b01000011, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000100, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000101, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000110, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000111, 0b00000000);
delay_ms(1);

lcd_gotoxy(0,0);
lcd_puts(” DeviceMart “);
lcd_gotoxy(0,1);
lcd_puts(” Laura Moon “);

delay_ms(3000);
lcd_clear();

lcd_gotoxy(0,0);
lcd_puts(” DeviceMart “);
lcd_gotoxy(0,1);
lcd_puts(” Temp.”);
while (1)
{

//ADC 값 읽어 오기
ADMUX = 0×40;
ADCSRA |= 0×40;
while ((ADCSRA & 0×10)==0);
sensor_adc = (float)(ADCW);

// NTC_R(NTC RESISROT VALUE Ohm)
// ADC 값 읽어 다가 NTC_R 저항값 산출
// NTC_R /(NTC_R + 10000(분앖저항값 Ohm)) = ADC / 1023(10biT Resolustion)
// NTC_R 에관해 풀이 하면
// NTC_R = 10000*ADC / 1023-ADC

ntc_val = (10000 * sensor_adc) / (1023 – sensor_adc);

//NTS 시리즈 써미스터 데이터 시트에 온도에 따른 저항 테이블 값을 토대로 함수를 추출
//(706.6 * ntc_val(NTC_RESISTOR Ohm) ^ -0.1541) – 146
// ! 좀더 정밀한 온도값을 원할 경우 테이블 값을 저장해 비교 하는 방식을 사용 하세요.

temperature = (706.6 * pow(ntc_val,-0.1541)) – 146;

//온도를 소수점 한자리까지 표현 하기 위해 10을 곱한후 정수형 변환

temperature *= 10;

dis_temperature = (signed int)(temperature);

lcd_gotoxy(8,1);
if(dis_temperature < 0)
{
lcd_putchar(‘-’);
dis_temperature *= -1;
}
else (‘ ‘);
lcd_gotoxy(9,1);
lcd_putchar(dis_temperature / 1000 + ’0′);
dis_temperature %= 1000;
lcd_gotoxy(10,1);
lcd_putchar(dis_temperature / 100 + ’0′);
dis_temperature %= 100;
lcd_gotoxy(11,1);
lcd_putchar(dis_temperature / 10 + ’0′);
lcd_gotoxy(12,1);
lcd_putchar(‘.’);
lcd_gotoxy(13,1);
lcd_putchar(dis_temperature % 10 + ’0′);
lcd_gotoxy(14,1);
lcd_putchar(0×00);
lcd_gotoxy(15,1);
lcd_putchar(‘C’);

delay_ms(100);

}
}

 

 

*테이블값에 따른 함수 추출표

테이블 값으로 함수 추출

 

 

 

탐침형 외에 “판넬 부착형 써미스터” 도 아주 유용합니다!

방열판이나 엔클로저 등의 판넬에 부착하여 측정가능한 실용적인 써미스터랍니다^^

IMG_20130723_142708

 

써미스터에 대한 디바이스마트 제품 리뷰였습니다!

많은 관심 부탁드립니다! :lol:

 

디바이스마트 써미스터