프로그래밍/아두이노[Arduino]&라즈베리파이[Raspberry Pi]

[아두이노]스위치 모듈과 모터 드라이브로 미니 워터 펌프 사용하기

yohoi 2019. 4. 25. 15:58


안녕하세요 이번에는 스위치 모듈을 이용하여 모터드라이브와 미니 워터 펌프를 사용해보고자 합니다.


간단하게 설명드리자면 택트 스위치를 눌렀을때, 모터드라이브를 통해서 미니 워터 펌프가 작동 시키는 것이 주 목적 입니다.


핵심 부품

아두이노 L9110 듀얼 모터 드라이버 모듈

[L9110 Dual H-Bridge Motor Controller module]
- 아두이노회로 만으로는 DC모터에 충분한 전류의 양을 공급할 수 없고, 
전류의 제어가 어렵고 복잡합니다. 

 

- 모터 드라이버는 DC모터를 쉽게 제어 할 수 있도록 돕습니다. - 하나의 모터 드라이브는 2개의 모터를 제어할 수 있습니다. 

 

- 모터 드라이버에는 모터를 제어하기 위한 H브릿지라는 칩이 있습니다. 발열이 심하여 검은색 방열판이 달려 있습니다.

 

 

 

 

아두이노 미니 워터 펌프 [HS-WATER PUMP] 
- 빨간색이 +검은색이 -입니다.
- 밑에 부분으로 물을 빨아들이고 옆의 구멍으로 물을 배출합니다

 

 

 

 

 

 

 

아두이노 택트 스위치 모듈[HS-TACT-SWITCH_MODULE]

전원을 입력한 후 버튼을 누르면 출력핀을 통해 1 또는 0

디지털 신호가 출력되는 스위치 모듈입니다. 
스위칭을 해야하는 프로젝트에 활용할 수 있습니다.
(
VCC와 GND를 반대로 연결하면 버튼을 누를 때 출력되는 신호가 반대로 변경됩니다.)
※누를때 변경이 되는게 아니라 누르고 있는 동안에만 신호가 변경 됩니다!!



 

 

부품 목록

 

 

회로도

 

 

1. 아두이노 우노보드의 5V 와 브레드 보드의 + 에 연결 합니다.
2. 아두이노 우노보드의 GND 와 브레드 보드의 - 에 연결 합니다.
3. 스위치 모듈의
 VCCGND 를 브레드 보드의 +, -에 각각 연결합니다.
4. 스위치 모듈의
 OUT 과 아두이노 우노보드의 Digital 4번 핀에 연결합니다.
5. 모터 드라이브의 
VCCGND 를 브레드 보드의 +, -에 각각 연결합니다.
6. 모터 드라이브의 
A-1A와 Digital 11번 핀에 연결합니다.
7. 모터 드라이브의 
A-1B와 Digital 12번 핀에 연결합니다.
8. 모터 드라이브 
MOTOR A에 미니 워터  펌프를 연결합니다.
     (모터 드라이드를 사용하기 때문에 선 구분 상관없습니다.)

 

 

소스코드

int A_1A = 11; //모터드라이브 A_1A 핀 변수 선언
int A_2A = 12; //모터드라이브 A_1B 핀 변수 선언
 
void setup()
{
  pinMode(4, INPUT);      //스위치 모듈의 pinMode 선언
  pinMode(A_1A, OUTPUT);  //모터드라이브 A_1A의 pinMode 선언
  pinMode(A_2A, OUTPUT);  //모터드라이브 A_1B의 pinMode 선언
}
 
void loop(){
 
  int  button = digitalRead(4); //스위치 모듈의 값을 읽음.
  if(button == 1){              //스위치 모듈을 누르면 값이 1로 변경이됨. 
  pump(1);                      //pump 함수 호출
  } else{
     stop();                    //스위치 모듈을 누르고 있지 않은 경우 모터 멈춤
  }
  delay(1000);                  //지연 1초
}
 
 
void pump(int flag)
{
  boolean inPin1 = HIGH;
  boolean inPin2 = LOW;
 
  if(flag == 1){           
    inPin1 = HIGH;          //서로 값이 달라야 정방향, 역방향 회전
    inPin2 = LOW;           //혹시나 모터가 약하다 싶으면 역방향 회전이므로 
                            //inPin1과 inPin2의 값을 서로 바꿔준다.
  }
    digitalWrite(A_1A, inPin1);  //워터 펌프 A_1A에 write
    digitalWrite(A_2A, inPin2);  //워터 펌프 A_1B에 write
}
 
void stop(){
    digitalWrite(A_1A, LOW); //A_1A와 A_2A 둘다 LOW 면 모터가 멈춤
    digitalWrite(A_2A, LOW);
}

 

구현영상을 참고해서 돌려보시면 

 

스위치를 누르거나 가만히 있을때 시리얼 모니터에 아래와 같이 나타납니다.

 

 

구현영상

 

 

이상입니다 감사합니다.