본문 바로가기
만들기/아두이노

아두이노를 이용한 워터펌프 (pwm 신호 제어)

by 훨훨날아 2022. 8. 27.

아두이노를 이용하여 유량을 조절할 수 있는 워터펌프를 만들어보았다. 

기본 개념

워터펌프는 일반적으로 DC모터를 이용하여 물을 순환시킨다. 그렇기 때문에 DC모터의 속도를 조절해서 유량을 조절할 수 있다. DC모터의 속도는 모터에 가해지는 전류의 세기에 따라 달라지는데 모터의 속도를 조절하기 위해 L298n DC모터 드라이브에 PWM 신호를 변화시켜 줌으로서 모터에 공급되는 전류의 세기를 조절할 수 있다.

아두이노를 이요하면 PWM신호를 사용자가 직접 제어할 수 있기 때문에 정량적인 워터펌프의 속도조절이 가능하다. (정량적 컨트롤이 아니라면 DC-DC 컨버터를 이용해서 가변저항을 조절해서 펌프의 속도를 조절할 수 있다.)

 

하드웨어 부품연결

사용한 부품
- 아두이노 메가(PWM 신호가 나오는 것이면 다 가능), L298n 모터드라이버, 스위치, 워터펌프(385HPC-9, 저소음펌프), 12V 어댑터(워터펌프 외부전원), 컴퓨터

L298n 드라이버

 

 

L298의 외부출력부분(1번)을 펌프의 모터와 연결시켜준다(+ - 상관없음). 중간에 스위치를 통과하도록 만들어 전원을 켜고끌수 있도록 만들어준다.

12V외부전원을 L298n의 2번과 연결시켜준다. 12V 에는 +를 연결하고 GND에는 GND를 연결시켜준다.

PWM 신호를 받기 위해 모터의 가장 왼쪽 혹은 오른쪽 핀을 사용할 수 있게 한뒤 (channel A enbled 에 있는 핀 사용) 아두이노의 pwm 출력핀과 연결시켜준다. 그리고 옆의 logic pin은 아두이노에서 설정한 두개의 디지털 출력핀과 연결시켜준다. (여기에서는 pwm 8번, logic 핀 2,3번)

 

소프트웨어 코딩

아두이노 코드에서는 원하는 전압값을 사용자가 입력하면(pwm 값을 설정하여 모터에 흐르는 전류설정)  모터드라이버가 모터를 제어하는 기능을 만들었다.

int Dir1Pin_A = 2; // L298N pin 1 아두이노와 모터드라이버 연결
int Dir2Pin_A = 3; // L298N pin 2
int SpeedPin_A = 8; // PWM signal
int voltage; // voltage value 

void setup(){
  pinMode(Dir1Pin_A, OUTPUT); // set digital pin as output
  pinMode(Dir2Pin_A, OUTPUT);
  pinMode(SpeedPin_A, OUTPUT);
  
  Serial.begin(9600);     // Serial communication begin
  while(!Serial);         // if serial is connected, move to next     
  Serial.println("PUMP ON"); // if serial is connected, print pump on
  
}

void loop(){
  
  if(Serial.available()){    //If serial monitor is opend, 시리얼모니터를 통해 전압값입력
    voltage = Serial.parseInt();   // set serial int value to 'voltage' variable ( set the voltage value)  

    Serial.print("Volatage : "); 
    Serial.println(voltage); // print the set voltage value

  }
  
  digitalWrite(Dir1Pin_A, HIGH); // control the motor direction 모터방향설정
  digitalWrite(Dir2Pin_A, LOW);
  analogWrite(SpeedPin_A, voltage*21.25);  
  // change the input voltage value to PWM signal(0-254) 255/12 = 21.25 곱해줌 
  // 전압입력 -> PWM 신호로 변경 -> 모터드라이버 조절 -> 펌프속도 조절
  
  delay(100);
  
}

 



결과

아두이노 시리얼 모니터에서 전압값 8V ( 모터가 작동하는 최소전압(전류)의 크기) 를 입력했을 때 물이 천천히 나오다가 12V 를 입력하면 물이 빠르게 나온다. 

 

https://youtu.be/zRC55MXKXCo

 

개선할 점

노트북을 사용하지 않기 위해 가변저항과 LCD를 이용하여 가변저항의 변화값이 PWM신호로 변환되고 LCD에 표시되어 더 간편하게 제어할 수 있도록 해야겠다.

아두이노 전원을 12V어댑터에서 가져올 수 있도록 연결

 

구매

https://link.coupang.com/a/wQUSv

 

DC12V 고온 저항 투명 수족관 미니 다이어프램 워터 펌프 진공 펌프 385HPC-9 워터 펌프 진공 펌프

COUPANG

www.coupang.com

https://link.coupang.com/a/wQU65

 

[파츠키츠] L298N모듈 모터 드라이버 듀얼 H브릿지 아두이노 스마트카

COUPANG

www.coupang.com

https://link.coupang.com/a/wQVdE

 

메카솔루션 아두이노 우노 R3 호환보드

COUPANG

www.coupang.com

 

https://link.coupang.com/a/wQVml

 

안전사 야마하 디지털피아노 AC 아답터 12V 1.5A

COUPANG

www.coupang.com

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

 

참고

https://code-for-fun.tistory.com/27

 

[모듈] L298N 모터 드라이버

자율주행 자동차를 만들기 위해서 모터 제어와 관련된 모듈인 L298N 모터 드라이버 모듈에 대해 알아봅니다. 여러 검색 결과를 확인해 봤고 그 중에서 여기(https://m.blog.naver.com/chandong83/221309861855)

code-for-fun.tistory.com

 

https://youtu.be/QJNVLkiCXwk?t=149 

 

반응형