안녕하세요.
자동으로 식물에 물을 주는 프로젝트를 진행하기 위해서 수중펌프를 구매했습니다.
그리고 나중에 무선으로 모터를 조정할 수 있게 하기 위해서 아두이노 나노 모듈에서 BT/WiFi가 장착된 Arduino Nano 33 IoT 모듈로 바꿔 테스트했습니다. 그렇다고 해서 크게 테스트 소스코드가 바뀌진 않았습니다.
1. 펌프(Pump) 란
1) 펌프 설명
펌프란 전동기나 내연기관 등의 원동기로부터 기계적 에너지를 받아서, 액체에 운동 및 압력 에너지를 주어 액체의 위치를 바꾸어 주는 기계입니다.
원심펌프는 임펠러(Impeller)를 회전시켜 액체에 회전력을 주어 발생하는 원심력을 활용한 펌프입니다. 흡입관을 통해 임펠러 중심부에 들어온 액체는 날개(Vane) 사이를 통과하면서 회전력을 받아 압력이 증가하게 됩니다. 아래의 그림은 동일한 원리의 사진은 아니고 구조를 참고할 수 있는 사진이 있어 가져와 봤습니다.
2) 제품 스펙
- 상세한 모터 스펙자료는 인터넷에 보이지 않아서 기구적인 사이즈 등만 표시해 보았습니다.
- 전압 : 2.5V ~ 6V
- 전류 : 130mA ~ 240mA
- 크기 : 43x24x33mm
2. 연결하기
- 준비물 : 아두이노 나노 IoT 33 , IRF520 MOSFET 모듈, 소형 브레드 보드, 수중펌프모터 [SZH-GNP155]
1) 기본 연결 구조
- IRF520 기준으로 배터리(모터 전원부), 아두이노 나노(별도의 USB 전원 연결을 하던지 VIN 쪽으로 배터리 전원을 넣어주어야 합니다.), 그리고 수중펌프로 연결됩니다.
2) 실제 연결
- 릴레이나 모터 제어 보드(IRF520 등) 없이 아두이노 P6(PWM)으로 제어하면 되는 것 아니냐고 하실 수도 있습니다. 가능할 수도 있지만, 현재 모터 스펙상 최대 230mA까지 사용하기 때문에 아두이노 보드에 핀이 고장 날 확률이 높기 때문에 별도의 모터 제어 보드를 두고 제어하고 있습니다.
3. 소스 확인
- 아두이노 나노라면 이전 강좌들처럼 사용하면 되지만, IoT 33 보드로 바꿔서 테스트한다면 아마 “tool -> 보드 -> 보드 매니저“ 로 이동하여 보드를 추가해 주어야 합니다.
보드 매니저 창에서 nano 33으로 검색합니다.
- Arduino SAMD Board의 최신 버전으로 설치하시고 보드를 “Arduino SAMD Board -> Arduino Nano 33 IoT” 로 선택해 주고 작업을 소스를 입력합니다.
- 소스는 간단하게 IRF520 예제에서 사용했던 소스를 조금 수정해서 사용했습니다. 5초 멈추었다가 5초 작동하는 소스 코드입니다.
- 주석 처리한 것으로 해제하고 PWM으로 작동하면 천천히 시작하면서 다시 느리게 멈추게 됩니다. 모터 작동이 되지 않는 전압으로 시작될 때 “삐~” 하는 소리가 나타납니다. 그래서 최소 전압 혹은 PWM 값을 주어 작동시켜야 한 번에 돌고 멈추는 On/Off 형대로 할 수 있습니다. 아니면 속도 조절을 해서 물량을 조절하는 형태로도 사용할 수 있습니다.
const int pwmPin = 6;
void setup(){
pinMode(pwmPin, OUTPUT);
}
void loop(){
analogWrite(pwmPin, 0);
delay(5000); //
analogWrite(pwmPin, 255);
delay(5000); //
/*
for(int i = 0; i <= 255 ; i++)
{
analogWrite(pwmPin, i);
delay(40); // 속도 천천히
}
for(int i = 255; i >= 0 ; i--)
{
analogWrite(pwmPin, i);
delay(40); // 속도 천천히
}
*/
}
4. 작동 확인
- 모터 쪽 입력 전원은 5V 출력을 해주는 레귤레이터가 장착된 보드에서 사용했습니다. 혹은 5V 아답터나 3.3V ~ 6V를 출력해 주는 배터리를 연결하시면 됩니다.
5. 사용후기
- 일반 DC 모터로 작동해서 그런지 개인적으로 소리가 조금 크게 느껴졌습니다. 집안에서 소리에 민감하시다면 BLDC 타입으로 된 소형 수중펌프를 사용하시면 됩니다.
- 펌프 힘은 5V 할 인가할 경우 물이 생각보다 빠르게 이동했습니다. 식물에 물을 줄 때 사용할 수 있을 정도가 될 것으로 생각되고 물량을 조절할 수 있도록 PWM으로 속도를 조절도 가능할 것으로 보였습니다.
- 2개 컵을 이용할 경우 재미있는 현상을 볼 수 있었습니다. 펌프 쪽 물을 이동시키면 반대쪽 수압이 높아져 이동된 물이 다시 호수를 통해 수중펌프모터 쪽으로 이동하고 결국 물 높이가 같아지는 현상을 보였습니다.
- 이 제품 같은 경우 모터에 극성을 바꿔 주어도 정상 작동을 합니다. 모터의 임펠러가 정회전을 하던지 역회전을 하던지 물을 밖으로 뿜어내도록 설계되어 그런 것은 아닌가 합니다.
감사합니다.
<참고 자료>
1. 펌프의 원리와 종류
https://www.prism21.co.kr/boardPost/105229/620
2. 원심임펠러, 오수펌프
3. 아두이노 미니 수중펌프
'Embedded > Arduino' 카테고리의 다른 글
Arduino MPU9250(MPU6050) FIFO overflow error 해결하기 (2) | 2024.03.24 |
---|---|
아두이노 나노를 이용한 GY-68(BMP180)기압/온도센서 테스트 (0) | 2024.03.21 |
Arduino Nano + OSTSen-T007(TMP007) (MEMS) thermopile sensor Test (0) | 2024.03.17 |
Arduino Nano + Crowtail-Capacitive Moisture (토양수분 센서) 테스트 (0) | 2024.03.09 |
아두이노 나노를 이용해서 DHT11 온도 습도 센서 값 받아오기 (0) | 2024.03.07 |