본문 바로가기

아두이노/IoT 아두이노 프로젝트!

[Part 1] 쉽게 화분 키우기 !!(스마트 농장)

이번에는 최근 화두가 되고 있는 식물키우기 or 농장에 대한 프로젝트를 실시하고자 한다.

필요한 센서를 이것저것 붙이다보니 점점 거대한 프로젝트가 되어가는 것 같은데.. 걱정이 앞서지만 이왕 제작하는 것 제대로 제작해보려고 한다.

Component LIST는 다음과 같다.

 Component List

 1. WizArduino

 2. PM1001, 먼지센서

 3. DHT22, 온습도 센서

 4. 레인 센서

 5. 모이스처(수분) 센서

 6. DWP-385 WATER PUMP

 7. LAMP (Light)

 8. Transistor

 9. Relay

 10. DC Motor

 11. FAN motor

 12. 12V DC power Adaptor or Power Supply


WizArduino(Cortex-M0)를 메인보드로 사용할 것이며, 각 센서들에 대해 정확하게 파해치고 구현해보는 시간을 갖을 것이다.

이번 시간에는 Water pump, TR, Relay에 관한 설명을 진행하고자 한다.

Water Pump의 설명부터 시작하겠다.


1. Water Pump 

내가 엘레파츠에서 구매한 DWP-385 Water pump이다.(12V동작, DC모터 내장)

위 펌프는 1만원이면 구매할 수 있다. 그리고 6V, 12V, 24V로 동작전압이 나누어 정해져 있으니 참고바란다.

위 모터의 사용법은 결국 DC모터를 제어하는 것과 동일하다.

DC모터는 쉽게 2가닥의 선으로 구성되어 있다. +와 -선으로, 보통 전류는 모터의 허용전압에 따라 다르다.

근데, 내가 사용한 모터의 전압은 12V, 전류는 400mA였다. (Power Supply로 측정)

이러한 DC모터를 사용하는 이유는 ! 정방향, 역방향이 가능하기 때문이다. 

DC모터 +에 12V, -에 GND를 연결하고 전원을 연결하면 정방향으로 돌아가고, +에 GND, -에 12V를 연결하면 역방향으로 돌아간다.

모터가 그렇게 강하지 않기 때문에, 따로 속도조절 드라이버(모터 드라이버)는 필요하지 않는다.

아래는 모터 사진이다. 참고바란다.

아래 URL은 DC, Servo 및 각 모터에 대한 설명을 기재해논 블로거의 글이다. 참고바란다.

http://dokkodai.tistory.com/103

(모터 사진)

(모터 내부 사진)

(모터 정보)



2. Relay

내가 사용한 Relay는 Panasonic의 ALQ105(5핀 Relay)이다. (입력전압 5V)

Relay란, 코일과 자기장을 이용하여 사용하는 전자스위치이다.(전기신호로 동작하는 스위치)
아래 그림을 살펴보면, 1,2번이 코일로 연결되어 있는 것을 확인할 수 있다. 위 코일에 전류를 가하면서 생기는 자력을 이용하여 스위치가 되는 것이다.

정확한 설명을하자면,

Relay 내부에 전류가 흐르면(1,2번에 전류를 흘려주면) Relay 내부에 구성되어 있는 코일에 전류가 흐르면서 자기장이 발생하게 된다. 이러한 자기장에 철심을 넣으면 그대로 빨려들어가게 된다. 즉, 자석과 같은 힘이 발생하게 된다.

그래서 이런 자력을 이용하여 전류가 흐르면 스위치가 움직이게 되는 것이 Relay다.

이러한 Relay의 장점은, 전기적으로 독립된 회로를 연동시켜 제어할 수 있다는 장점이 있다. 즉, 적은 전력으로 큰 전력을 제어하거나 하나의 신호로 다수의 전원을 제어하는 목적으로 사용된다. (위 설명은 아래 회로에 대한 설명을 하면 자연스럽게 이해가 간다.)

단점은 전압이 너무 높은(220V이상) 곳에 Relay를 사용하면 스파크가 튈 가능성이 있다.

Relay자체는 철심을 이용하여 붙는 형식이기 때문에 실제로 Relay동작 시 한 번에 딱! 붙지는 않는다. Relay를 동작하면 접점과 떨리면서 붙게된다. ('따다다닥' 하면서) 그렇기 때문에 이 때 너무 높은 전압을 이용하여 Relay를 제어하면, 스파크로 인해 부하에 영향이 갈 가능성이 크고 EMI적으로도 매우 안좋을 가능성이 있다.

그래서 이를 보안하기 위해 사용되는 것이 SSR이다.(무접점 릴레이)

아래 회로는 SSR이다. 포토 커플러를 사용하여 절연시키고 전기를 이용하여 ON/OFF를 할 수 있다.

AC in은 보통 220V사용한다.

SSR 회로에 대한 이미지 검색결과

그리고 여기에 Zero crossing을 추가하여 0V에 릴레이가 ON/OFF될 수 있게 구성한다. (0V를 기준으로 동작하게 구성해야 전원부가 흔들리지 않는다.)

자세한 것은 아래 블로그 참조..

http://blog.naver.com/PostView.nhn?blogId=a980827&logNo=20122509289

근데, 결론을 말하자면 SSR을 사용해도 좋고 Relay를 사용해도 좋다. 다만, Relay를 사용하려면 반드시 내압이 높은 것으로 설정해야한다.

내압만 높고 주위에 영향을 안줄 수 있는 보호회로만 구성한다면, Relay로 충분히 사용이 가능할 것이다.

얘기가 살짝 다른길로 빠지게 되었다. 다시 릴레이를 보자면, 아래 그림과 같다.

보통 3번을 C(common), 4번을 N.O(Nomal open), 5번을 N.C(Normal Close)라고 부른다.

 (보통 Relay는 위와 같이 구성되어 있다.)


 (실제 릴레이는 위 그림과 같이 생겼음)

 

위 그림은 이론적인 설명을 토대로 Relay의 동작 구성도이다.

결국 전류가 흐르지 않는다면, 스위치가 OFF가 되어있고, 전류가 흐르면 스위치가 ON쪽으로 붙게된다.
(위 Relay 사진은 코코아팹에서 출처했습니다.)

Relay 회로는 아래와 같이 구성되어야 한다. (NC=Normal Close(보통 NC처리) , NO=Normal Open(센서 전원 연결))

Common 핀(보통 릴레이 3번 핀)에 센서에 공급할 전원(보통 12V or 5V)를 연결하고, NO에 센서의 전원핀(VCC)를 연결한다.


3. Transistor

내가 사용한 트랜지스터는 2개이다. BC547, KSP2222A이다.

2개의 TR을 사용한 이유는, 특별한 것은 없다. 그저 2개 다 보유하고 있기 때문이다.

이 둘의 차이점은 BC547(Ic가 100mA), KSP2222A(IC가 600mA)로 동작한다는 점이다.

만약 Relay를 사용하여 제어한다면 BC547, KSP2222A 둘다 사용이 가능하지만, Relay를 사용하지 않는다면, KSP2222A만 사용이 가능하다.

(위 설명은 회로도를 보면서 설명해야 이해가 간다.)

TR에 대해 대략적으로 설명하자면, TR은 스위치로 사용되거나, 증폭기로 사용할 수 있다.

일반적으로 TR은 NPN형을 사용하며, 스위치로써 많은 사용을 한다. (아래 그림과 같이 NPN형을 스위치로 사용한 형태이다.)

TR은 통상 Base에 0.7V이상의 전압을 걸어주면, TR은 동작하게 된다. 그러면 Ic(Collect)의 전류가 Emitter로 흐르게 된다.

TR에는 3가지의 동작상태가 존재한다. 1. 포화, 2. 활성, 3차단 이다.

TR을 스위치로써 사용하는 것이라면, 포화와, 차단 영역만 사용하게 된다. (활성영역은 증폭영역이므로 따로 알아보기를 추천)

TR에 Base 전압이 0.7V 미만이라면, 이것은 차단 영역이다. (TR이 동작하지 않는 상태)

그리고 Base 전압이 0.7V 이상이 걸리면 TR이 ON되고 이 때 1mA이상의 전류가 Ic로 흐르게 된다면, 포화상태이다.

위 2개의 포화, 차단의 신호를 통상 Arduino에서 Digital 신호 1(5V),0(GND)으로 표현된다.


아래 URL사이트는 트랜지스터에 대한 간단한 설명이 나와있는 블로그이다. 참고바란다.

http://egloos.zum.com/slgi97/v/10831353

(위 사진은 구글링하여 검색한 사진입니다.)


*** Schematic ***
이제부터 회로에 대해 설명을 하기로 한다. 여기선 2가지 회로를 설명드릴 것이다.

1. Relay를 사용하지 않은 Motor회로.

2. Relay를 사용한 Motor회로.


1. Relay를 사용하지 않은 Motor회로

아래 회로는 KSP2222A(TR)을 사용하여 Water pump(12V)를 사용한 회로도 이다.


2. Relay를 사용한 Motor회로.

아래 회로는 BC547(TR)과 Relay를 사용하여 Water pump를 사용한 회로도이다.


2개의 회로의 동작은 동일하다.

그런데, 왜 BC547을 사용하는지, 왜 KSP2222A를 사용하는지 설명드리겠습니다.

Water pump는 동작 전압 12V, 동작 전류 400mA입니다.

그렇다면, water pump의 동작 전압과 전류를 버틸 수 있는 TR을 선정해야합니다.

그게 KSP2222A TR이구요. (원래는 더 좋은 TR이 많습니다만, 제가 보유하고 있는 건 위 2개 뿐이라서 위 2개의 설명대로 진행합니다.)

아래 Datasheet를 사진을 보시면 Ic가 600mA까지 허용이 되죠. 그리고 Vceo(collector-Emitter)전압이 40V까지 허용되기 때문에 아래와 같이 회로를 구성하면 모터를 구동하실 수 있습니다.

 (Relay를 사용하지 않은 Motor회로)

(KSP2222A의 데이터시트 부분만 캡쳐)



그리고 만약 BC547(TR)을 사용하시려면 Relay를 이용해서 구동해야합니다.
회로는 아래 그림과 같이 연결해주시면 됩니다.
다만, 명심하셔야 할 것은 Relay연결을 정확하게 해주셔야 합니다. 잘못연결하면 보드의 전류를 다 땡겨와서 보드가 타버릴 수 있습니다.
(실제, 테스트하다가 전원쪽을 반대로 연결해서 보드의 전류를 전부 땡겨오니깐 보드의 발열이 굉장히 심해졌습니다..)
아래와 같이 구성을 할 경우, 실제 TR에 가해지는 전압은 5V이고 100mA 미만일 것입니다. (따로 부하가 부착되어 있지 않으니깐 전류 소모가 심하지 않습니다.)
그래서 이 때는 BC547을 사용해도 됩니다.
밑에 BC547의 데이터시트의 부분을 캡쳐하여 첨부합니다.


(BC547은 Ic가 100mA 허용이다.)



***** 최종 동작 *****

위 이론 설명과 회로를 토대로 회로구성을 하고 테스트 정상 동작하는 것 확인했습니다 ~~~

물이 정상적으로 Water pump를 거쳐서 이동하는 것을 확인했습니다~

       


다음에는 구현되지 않은 다른 센서에 대해 공부하고 구현하여 Part 2로 넘어가겠습니다.

감사합니다.