반응형

【 아두이노모듈#15 L9110S #1(모터 드라이버) 모듈 사용하기

 

 아두이노로 스텝모터나 DC 모터를 제어하기 위해서는 TR이나 IC를 사용하여, H-bridge (h-브릿지) 회로를 구성하여 정역(정회전, 역회전) 제어를 하게 된다. 직접 TR이나 IC를 이용해서 따로 구성할 수 있지만 다소 번거롭다. 이를 해결해 줄 수 있는 모터 구동 모듈이 있어서 사용법을 간단히 소개하려 한다.  바로 L9110S 모듈이며, DC모터는 2개를 , 스텝모터는 1개(4선 2상)를 각각 제어 할 수 있다. 

L298 드라이버 모듈에 대해서도 포스팅 하였지만, 이 모듈보다 가격이 저렴(700원대)하고, 크기와 부피가 작아서 작은 크기의 작품을 만들려고 할 때 적합하다고 할 수 있겠다.

 

 

▶ 선수 학습 :

      1. [아두이노 기초#24] DC모터 제어하기 4 (H-bridge 참조)  ☜ (클릭)

 

 L9110S 모듈 세부 스팩

 

▶ 실습 목표 :  

 1. [ L9110S 모터 모듀을 이용하여 2개의 DC모터 방향을 제어 할 수 있다

 2. [ 아두이노의 아날로그 출력 함수를 이용하여 속도를 조절 해 볼 수 있다.]

 

▶ 실습 회로도면 :  L9110S 모터드라이버 모듈 연결도
  (이미지 클릭하면 확대 가능)

L9110S 모터드라이버 모듈 연결도

 

▶ 실습 절차  : 

 

1.   부품을 준비하여 위와 같은 회로를 구성한다. 

2.   아래 코드를 작성하고 프로그램을 로딩 후 실행시킨다.(혹은 첨부파일 다운)

3.  먼저 디지털 포트를 사용하여 방향제어를 해본다. (코딩1)

4.  코딩2를 참고하여 속도제어 실습도 해본다. (코딩2)

 

▶ 프로그램 코드 및 설명 1 : 

/* L9110S 모듈 제어 해보기  (방향제어 : 코딩1) */

int motorA1 =  5; 
int motorA2  = 6; 
int motorB1 =  9; 
int motorB2 =  10; 

 

void setup ( ) {  

  pinMode( motorA1 , OUTPUT);
  pinMode( motorA2 , OUTPUT);
  pinMode( motorB1 , OUTPUT);
  pinMode( motorB2 , OUTPUT);

}

void loop ( )  {

  // 필요한경우 아래 코드에 따라 모터의 연결을 조정해야한다. 

  // <전진>

  digitalWrite( motorA1 , HIGH);
  digitalWrite( motorA2 , LOW);
  digitalWrite( motorB1 , HIGH);
  digitalWrite( motorB2 , LOW);

  delay(2000);

// 후진
  digitalWrite( motorA1 , LOW);
  digitalWrite( motorA2 , HIGH);
  digitalWrite( motorB1 , LOW);
  digitalWrite( motorB2 , HIGH);

  delay(2000);

 

 // 좌회전
  digitalWrite( motorA1 , HIGH);
  digitalWrite( motorA2 , LOW);
  digitalWrite( motorB1 , LOW);
  digitalWrite( motorB2 , HIGH);
  delay(2000);

 

 // 우회전
  digitalWrite( motorA1 , LOW);
  digitalWrite( motorA2 , HIGH);
  digitalWrite( motorB1 , HIGH);
  digitalWrite( motorB2 , LOW);
  delay(2000);

 

 // 정지

  digitalWrite( motorA1 , LOW);
  digitalWrite( motorA2 , LOW);
  digitalWrite( motorB1 , LOW);
  digitalWrite( motorB2 , LOW);
  delay(2000);

}

 

 

▶ 프로그램 코드 및 설명 2: 

/* L9110S 모듈 제어 해보기   (방향과 속도 제어 : 코딩2) */

int motorA1 =  5; 
int motorA2  = 6; 
int motorB1 =  9; 
int motorB2 =  10; 

int  speed = 255 ;   // speed :  0 ~ 255

 

void setup ( ) {  

  pinMode( motorA1 , OUTPUT); 
  pinMode( motorA2 , OUTPUT); 
  pinMode( motorB1 , OUTPUT); 
  pinMode( motorB2 , OUTPUT);

}

void loop ( )  {

  // 필요한경우 아래 코드에 따라 모터의 연결을 조정해야한다. 

  // <전진>

  analogWrite( motorA1 , 150);  // 숫자 값으로 속도 조절
 
analogWrite( motorA2 , 0);
 
analogWrite( motorB1 , 150);
 
analogWrite( motorB2 , 0);

  delay(2000);

// <후진>
  analogWrite( motorA1 , 0);
 
analogWrite( motorA2 , speed);
 
analogWrite( motorB1 ,  0);
 
analogWrite( motorB2 , speed);

  delay(2000);

 // <좌회전>
 
 analogWrite( motorA1 ,  speed);
 
analogWrite( motorA2 , 0);
 
analogWrite( motorB1 ,  0);
 
analogWrite( motorB2 , speed);

  delay(2000);

 // <우회전> 
 
 analogWrite( motorA1 ,  0);
 
analogWrite( motorA2 , speed);
 
analogWrite( motorB1 ,  speed);
 
analogWrite( motorB2 , 0);

  delay(2000);

 // <정지>

  digitalWrite( motorA1 , 0);
 
digitalWrite( motorA2 , 0);
 
digitalWrite( motorB1 , 0);
 
digitalWrite( motorB2 , 0);
  delay(2000);

}

 

▶ 아두이노 파일다운 :

(다운받아서 압축을 풀어 사용하세요)

# 1.  <코딩 1>

L9110S_Basic_OK.zip
0.00MB

 

# 2.  <코딩 2>

L9110S_Speed_OK.zip
0.00MB

반응형