본문 바로가기

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

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



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


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


핵심 부품

아두이노 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);
}

 

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

 

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

 

 

구현영상

 

 

이상입니다 감사합니다.