반응형
안녕하세요.
오늘은 아두이노와 A4988 드라이버를 사용하여 스테퍼(스텝,스테핑)모터를 제어해보도록 하겠습니다.
[필요 부품]
- Arduino uno 1EA
- A4988 스텝모터 드라이버 1EA
- 바이폴라 스텝모터[17HD4408-12N] 1EA
- 파워서플라이 OR 12V 1A 전원
[회로 구성]
먼저 스텝 모터는 유니폴라 방식과 바이폴라 방식이 있으며
간단하게 유니폴라는 고속 회전에 적합하고 , 바이폴라는 저속 회전에 적합하게 되겠습니다.
이번에 사용하게 될 모터는 바이폴라 방식에 1 STEP당 1.8도 회전하는 모터가 되겠습니다.
일단 본격적으로 들어가기 전 A4988드라이버에 대한 설명을 드리도록 하겠습니다.
사실 드라이버 설명이 제어의 끝입니다.
위에 회로에는 빠져 있지만 MS1,MS2,MS3의 신호에 따라 정밀도가 달라지게 됩니다.
정밀도는 아래의 표를 확인하시면 됩니다.
MS1 | MS2 | MS3 | Microstep |
LOW | LOW | LOW | Full 1/1 |
HIGH | LOW | LOW | Half 1/2 |
LOW | HIGH | LOW | Quarter 1/4 |
HIGH | HIGH | LOW | Eighth 1/8 |
HIGH | HIGH | HIGH | Sixteenth 1/16 |
잘 이해가 되지 않는다면 Half의 경우는 한 회전당 1.8의 반인 0.9도씩 회전을 한다는 것입니다.
이것은 용도에 맞게 상용자가 여러 시험을 해본 후 결정하셔야 되는 문제라고 생각이 되네요^^
다음은 제어 소스입니다. 주석에 자세하게 설명을 다 적어 놓았으니 따로 설명드릴 것은 없어 보이네요.
[제어 소스]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
int PIN_dir = 9;
int PIN_step = 10;
void setup(){
pinMode(PIN_dir,OUTPUT);
pinMode(PIN_step,OUTPUT);
digitalWrite(PIN_dir,HIGH);//HIGH 시계방향,LOW 반시계방향
}
void loop(){
int i;
for(i = 0; i < 200; i++)// 1회 동작 당 값
{
digitalWrite(PIN_step,HIGH);
delayMicroseconds(1000); //회전 속도
digitalWrite(PIN_step,LOW);
delayMicroseconds(1000);
}
delay(200);
}
|
cs |
이렇게 하면 위의 회로대로 했을 때 360도 회전을 0.2초의 딜레이를 두고 수행하게 됩니다.
구동 영상을 찍어 놓긴 했는데... 날아가버렸네요...
궁금하신 점이 있으시다면 댓글 주세요^^
감사합니다.
반응형
'Programming > Arduino' 카테고리의 다른 글
Arduino + HC-06(블루투스) 통신 / AT명령어, [문자(Char),문자열(String)] (0) | 2020.01.30 |
---|---|
[Arduino] 트랜지스터(TR) 활용 12V 제어 하기(Relay,LED 등) ,2SC3198 (1) | 2020.01.21 |
Arduino ADC PIN 하나로 슬라이드 스위치(Slide Switch) 제어 하기 (LED) (0) | 2020.01.13 |
CDS (조도센서) + OLED(I2C) 조도 값(ADC) 모니터링 (0) | 2020.01.09 |
Arduino 대표 시리즈 사양(Spec) 모음-Uno,Nano,Mega,Micro (0) | 2020.01.09 |
댓글