[아두이노] L9110S 모터 드라이버 모듈로 스테퍼모터 제어하기


안녕하세요 디바이스마트 대짜이찐입니다.
이번 시간에는 L9110S 모터 드라이버 모듈을 사용해서
스테퍼 모터를 제어해 보겠습니다.
(스텝모터, 스테핑모터 스테퍼모터 다 같은말입니다.)


L9110S 모터 드라이버 모듈은 2.5~12V까지 전원을 입력 받을 수 있고,
각 모터 채널 마다 800mA의 출력을 낼 수 있습니다.


아래는 L9110S 모터 드라이버 모듈의 핀맵입니다.


L9110S 모터 드라이버 모듈도 L298N 모터 드라이버 모듈 처럼
1개의 스테퍼모터를 구동하거나, 2개의 DC모터를 구동할 수 있습니다.
A-IA핀과 A-IB핀의 신호를 아날로그 출력으로 사용하여
 0~255의 범위로 PWM 제어를 할 수 있습니다.

아래는 DC모터를 구동할 때의 신호 표입니다.


제가 사용할 스텝 모터 사양입니다.




2상 바이 폴라 스테퍼 모터이기 때문에 선이 4선이고,
이 4선의 A, /A, B, /B을 아래 그림과 같이 순서대로
모터 드라이버와 연결해 줍니다.

스테퍼 모터마다 핀맵이 다르기 때문에 꼭 확인해 보셔야 합니다.




2상 여자 방식 스테퍼 모터이기 때문에 
A+B->B+/A->/A+/B->/B+A 순서로 동작합니다.




아래 예제는 스위치를 누르면 반대방향으로, 누르지 않으면 정방향으로
동작하는 스텝모터 제어 예제입니다.



준비물: 아두이노 우노, L9110S 모터 드라이버 모듈, 스위치 모듈, 스텝 모터

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
L9110S Motor Driver + Stepper Motor Test    
http://www.devicemart.co.kr/
*/

// 모터 드라이버 신호선 연결
int IN1=2; // 아두이노 D2에 A-IA연결  A
int IN2=3; // 아두이노 D3에 A-IB연결 /A
int IN3=4; // 아두이노 D4에 B-IA연결  B
int IN4=5; // 아두이노 D5에 B-IB연결 /B

int sw=7; // 스위치 아두이노 D7에 연결
int delay_time=2; // 스테퍼모터 속도 딜레이

void setup()
{
 // 신호 핀들 입출력 설정
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT);
 pinMode(IN3,OUTPUT);
 pinMode(IN4,OUTPUT);
 pinMode(sw,INPUT);
}

void loop()
{
  int sw_val=digitalRead(sw); // 스위치 On/off 신호를 읽음
  
  /* 스위치가 off이면 정방향으로 동작
     스위치가 on이면 역방향으로 동작 */
  if(sw_val==0) forward(); // forward 함수 호출
  if(sw_val==1) reverse(); // reverse 함수 호출
  
}

int forward() // 정방향 동작 함수
{
 // 스텝1
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 delay(delay_time);

 // 스텝2
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);
 delay(delay_time);

 // 스텝3
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);
 delay(delay_time);
 // 스텝4
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 delay(delay_time);
}

int reverse() // 역방향 동작 함수
{
 // 스텝1
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 delay(delay_time);

 // 스텝2
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);
 delay(delay_time);

 // 스텝3
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);
 delay(delay_time);

 // 스텝4
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 delay(delay_time);
}


 부품은 아래 링크에서 구매하실 수 있습니다.

아두이노 우노
http://www.devicemart.co.kr/goods/catalog?code=000500010002

L9110S 모터 드라이버 모듈
http://www.devicemart.co.kr/goods/view?no=1324245
http://www.devicemart.co.kr/goods/view?no=1385145

스위치 모듈
http://www.devicemart.co.kr/goods/catalog?code=000400080002

스테퍼 모터
http://www.devicemart.co.kr/goods/catalog?code=001500010004

감사합니다.

댓글 쓰기

0 댓글