|
안녕하세요 이번에는 아두이노 모터 컨트롤 쉴드를 사용하는 방법에 대해 알아보도록 하겠습니다. 아두이노 모터 쉴드 아두이노 모터 쉴드란? 아두이노로 다수의 모터를 제어 할 수 있도록 해주는 쉴드입니다. 서보모터 : 최대 2개 dc모터: 최대 4개 스탭모터: 최대 2개 dc모터와 스탭모터는 서로 공유되어서 사용할 수 있습니다. 즉, dc모터가 연결될 자리 2개를 스탭 모터가 차지하여서 사용하게 됩니다. [모터들 연결하기]
dc 모터
스텝모터
서보모터 [소스코드 살펴보기] 라이브러리는 이곳에서 받으시면 됩니다! https://github.com/adafruit/Adafruit-Motor-Shield-library ![]() 아래의 소스코드는 위 라이브러리의 예제중 motor party입니다.
이번에는 위의 소스를 분석하는 것보다 모터를 사용하기위해 어떠한 함수를 사용하는지 파악하는 것이 중요 할듯합니다. 모터 제어하기 AF_DCMotor motor(2); motor이라는 객체(구조체) 를 선언합니다. (객체는 원하는 이름으로 선언이 가능합니다. 다수의 모터를 제어할때는 이름을 구분하여서 사용하는것이 좋겠지요?) 붉은 색으로 표시된 부분은 제어할 모터가 연결 되어있는 위치 즉, 2번재 위치에 dc모터가 연결 됬습니다. motor.setSpeed(200); 모터의 속도를 제어합니다. motor.run(RELEASE); 모터의 동작을 제어합니다. FORWARD,BACKWARD,BRAKE,RELEASE 이렇게 4가지 옵션이 있습니다. FORWARD:전진 BACKWARD:후진 BRAKE:급정지 RELEASE:휴식(급정지와는 다르게 부드럽게 멈춥니다.) 스텝모터 제어하기 AF_Stepper stepper(48, 2); 스탭모터 객체를 선언합니다. 하늘색은 스텝모터의 각수(42각 56각 등이 있습니다.) 붉은색은 스탭모터가 위치하고 있는 자리를 지정합니다. stepper.step(1, BACKWARD, INTERLEAVE); 스텝모터를 제어하는 함수입니다. 붉은색은 몇각씩 움직일지 초록색은 방향 하늘색은 제어 스타일입니다. [동작영상] 카페회원들의 안전을 위해 iframe 태그를 제한 하였습니다. 관련공지보기▶ 특히, L293D를 이용하면서 가장 많이 실수하기 쉬운 부분이 외부전원을 이용할 때 모터 쉴드 그대로 이용한다는 점입니다. 그대로 사용하게 되면, 아두이노 보드와 모터 드라이버 쉴드가 뜨거워 집니다! 반드시 외부전원을 이용할 때는 점퍼캡을 빼 주시길 바랍니다. 메카솔루션 읽어주셔서 감사합니다! [출처] [아두이노 강좌] 아두이노 모터 쉴드 L293D 사용하기|작성자 오픈랩 |
2016. 12. 12. 15:12
http://blog.naver.com/eduino/220884056251
안녕하세요 에듀이노입니다. 오늘은 모터 제어를 위해 필요한 아두이노 보드에 적층하여 사용하는 모터 드라이버 L293D 쉴드에 대해서 알아보겠습니다.
그림1. 아두이노 모터 드라이버 L293D 쉴드
모터 드라이버 L293D 쉴드
모터 드라이버 L293D 쉴드는 아두이노 우노, 메가, 레오나르도, 듀에 등에 적층하여 사용하는 확장형 쉴드로써 DC모터 또는 서보모터 제어용으로 사용됩니다. 모터 드라이버 L293D 쉴드는 4개의 DC모터 또는 2개의 서보모터를 동시에 제어 가능합니다. 또는 2개의 DC모터 또는 1개의 서보모터 동시 제어가 가능합니다. 아두이노의 USB포트의 전원 입력은 전류량이 약하므로 모터를 제대로 구동시키려면 별도의 전워을 통해 전류를 공급해줘야 합니다.
그림2. 모터드라이버 L293D 쉴드의 기능 및 핀 설명들
제품 특성
■ 우노, 메가, 듀에, 레오나르도 보드 등에 적층하여 사용합니다.
■ DC모터 4개 또는 서보모터 2개 또는 스텝모터 2개를 동작시킬 수 있습니다. 다만 동시에는 불가합니다. 즉, DC모터 4개 or 서보모터 2개 선택해서 사용합니다. 또는 DC모터 2개 + 서보모터 1개의 조합도 가능합니다.
■ 브리지당 0.6A (1.2A 피크)를 제공하며 4.5 ~ 36VDC 까지 호환됩니다.
■ 아두이노 우노 정품 및 호환보드와 100% 동작되는 모터 드라이버 쉴드입니다.
따라하기
L293D 모터드라이버 쉴드를 이용해서는 DC모터, 스텝모터 또는 서보모터를 제어할 수 있습니다. 여기서는 기본과정으로 DC모터 1개를 제어하는 과정을 따라해보겠습니다.
1. 라이브러리 다운로드 및 설치하기
L293D 모터드라이버 쉴드를 사용하기 위해서는 라이브러리를 다운받아야 합니다. 다운 경로는 아래와 같습니다.
모터 드라이버 L293D 쉴드 라이브러리 다운받으러 가기(클릭)
다운로드 받은 ZIP파일의 압축을 풀고 라이브러리 폴더를 복사하여 아래 경로와 같이 내 컴퓨터의 아두이노 설치폴더 밑에 Library 폴더 아래에 복사해 붙여넣어줍니다.
2. 회로 연결 모습
L293D 모터드라이버 쉴드는 총 4개의 DC모터를 연결할 수 있습니다. 여기서는 M2 채널에 DC모터 1개를 연결해보겠습니다. 실제 모습은 아래와 같습니다. M2채널은 DC모터의 A신호, B신호선 2개를 연결하시면 됩니다. 또한 DC모터에 따라 동작전압이 다 다르게 됩니다. 예를 들어 5V동작 DC모터부터 12V동작 DC모터까지 매우 다양하게 있습니다. 사용하시는 DC모터의 스펙을 확인하시고 사용하시면 되겠습니다. 또란 L293D 모터드라이버의 허용전류량인 1.2A까지 외부전원(배터리)를 연결하시면 됩니다.
3. 소스 코드
L293D 모터드라이버 쉴드를 이용해 모터 1개를 제어하는 소스코드입니다.
#include <AFMotor.h>AF_DCMotor motor(2); // 1: M1에 연결, 2: M2에 연결int i;void setup() {Serial.begin(9600); // set up Serial library at 9600 bpsSerial.println("Motor test!");// turn on motormotor.setSpeed(200); // 모터의 속도motor.run(RELEASE);}void loop() {motor.run(FORWARD); // 모터 정방향for (i=0; i<255; i++) {motor.setSpeed(i);delay(20);}for (i=255; i!=0; i--) {motor.setSpeed(i);delay(20);}delay(1000); // 1초 대기motor.run(BACKWARD); // 모터 역방향for (i=0; i<255; i++) {motor.setSpeed(i);delay(20);}for (i=255; i!=0; i--) {motor.setSpeed(i);delay(20);}}
4. 동작 동영상
아두이노의 시작은 에듀이노(Eduino) 입니다.
뭔가 하나 만들어 볼까해서 L293D 모터 쉴드를 구매했습니다.
NMEA17 스테핑 모터의 경우는 12V의 DRV8825 드라이버를 사용하면 간단합니다.
하지만 5V의 스테핑 모터를 제어 할때는 DRV8825로는 8.2~45V 까지 사용하므로 쓸수가 없어요
그래서 L293D를 구매했어요. 저는 소형 스테핑 모터를 사용할꺼거든요.
자세한 스팩은 아래 데이터 쉬트 참조하세요.~ 참 모터 드라이버를 사용하는 이유는
모터핀에 아두이노핀을 직접연결하면 동작은 하더라도 모터가 꺼질때 역기전력이 생겨서
아두이노 핀이 망가지기 때문에 코일 종류의 부품을 사용할때는 드라이버를 사용해야 합니다.
http://www.ti.com/lit/ds/symlink/l293.pdf
L239D 모터 쉴드로는 DC모터 4개 나 스테핑 모터 2개 그리고 servo 모터 2개를 제어 할수 있어요.
딱 미니 Plotter를 만들기에 안성 맞춤입니다. ^^
아래는 우노와 모터 쉴드를 같이 찍어 봤어요.
아래 처럼 겹쳐서 사용합니다. 모터쉴드가 사용하지 않는 GPIO를 사용하려면 납땜해서 사용해야 합니다.
아래는 회로도입니다. 아두이노의 어떤 핀들을 사용하는지 알수 있어요.
M1, M2, M3, M4에 DC 모터나 스테핑 모터를 사용할 수 있어요.
이제 사용하려면 위의 핀을 이용해서 프로그래밍하면 됩니다.
하지만 좀 더 쉽게 사용하기 위해서 라이브러리를 사용해 보도록 하겠습니다.
라이브러리는 아래 사이트에서 다운 받으시면 됩니다.
안에는 라이브러리가 2종류가 있는데, 제가 가지고 있는것은 Adafruit Motor Shield v2 가 아닙니다.
#include <AFMotor.h>
// Connect a stepper motor with 20 steps per revolution (18 degree)
// to motor port #1 (M1 and M2) #2 (M3,M4)
AF_Stepper motor(20, 1);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Stepper test!");
motor.setSpeed(100);
}
void loop() {
Serial.println("Single coil steps");
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
Serial.println("Double coil steps");
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
Serial.println("Interleave coil steps");
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
Serial.println("Micrsostep steps");
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
}
동작시켰을때 포트1 (M1,M2)쪽의 스테핑 모터가 제대로 동작을 안했습니다.
그래서 찾아 봤더니 첫번째 핀이 아래쪽으 USB 컨넥터의 금속 부분과 쑈트가 되어서 그랬더군요.
그래서 동영상에서와 같이 절연 테잎으로 막았떠니 정상 동작하였습니다.
오늘은 여기까지.~~ ^^
내일은 서보 모터를 연결해서 한번 구동 시켜 보겠습니다.
첫댓글 http://ideamate.co.kr/220924463208 블루투스 연결하기
서보1.. 9번핀, 서보2.. 10번핀
33