[아두이노 강좌] 아두이노 모터 드라이버 쉴드 L293D를 이용한 모터 제어하기(DC모터/ 서보모터)
안녕하세요 에듀이노 입니다.
오늘은 모터 드라이버 쉴드를 이용해서 모터를 제어해보겠습니다.
< 모터 드라이버 L293D 쉴드 핀 구성 >
▶ 모터 드라이버 L293D 쉴드는 아두이노 우노, 메가, 레오나르도, 듀에 등에 적층하여 사용하는
확장형 쉴드로써 DC모터 또는 서보모터
제어용으로 사용됩니다.
아두이노의 USB포트의 전원 입력만으로는 모터를 구동시키기엔 전압이 부족할 수 있기에,
별도의 전원을 공급해줍니다.
▶ DC모터 4개 또는 서보모터 2개 또는 스텝모터 2개를 동작시킬 수 있습니다.
3. 모터
드라이버 L293D 쉴드를 이용하여 서보모터
제어하기 – 예제1
▶ 모터
드라이버 L293D 쉴드를 이용하여 서보모터를 제어해보겠습니다.
3.1 준비물
▶ 실습에 앞서 준비물이 필요합니다.
(링크를 클릭하면 해당 제품 페이지로 이동합니다.)
아두이노 우노 보드(SMD) : 링크
모터 드라이버 L293D 쉴드 : 링크
SG
- 90 서보모터 : 링크
1.5V AA 배터리 4칸 홀더 : 링크
배터리(1.5V AA) : 링크
3.2 라이브러리 설치하기
▶ 아두이노에서 모터 드라이버 L293D 쉴드를 사용하기 위해선 라이브러리를 등록해야 합니다.
라이브러리 등록 방법은 간단하므로 아래 방법 대로 따라 해주시면 쉽게 할 수 있습니다.
먼저 아래 라이브러리를 다운받고 압축을
풀어줍니다.
※ 주의사항
▶라이브러리
추가시경로설정을정확하게해야합니다.
위그림과같이 'C:\Program Files (x86)\Arduino\libraries\Adafruit-Motor-Shield
-library-master'
경로안에 example 폴더와헤더파일을포함한파일들이들어있어야합니다.
(경로설정을잘못하면아두이노 IDE에서컴파일오류가발생할수
있습니다.)
3.3 아두이노와 연결하기
▶ 아래 결선표와 결선도, 실제연결사진을 참고하여 연결합니다.
▶위 표를 참고하여 서보모터와 모터 드라이버 L293D 쉴드를 연결해주세요.
3.4 코딩예제
▶ 센서와의 연결을 마친 후 아두이노와 PC를 연결하여 아래 코드를 아두이노 스케치에
입력 후 업로드 해줍니다.
#include <AFMotor.h> // L293D 모터 드라이브 라이브러리 #include <Servo.h> // 서보모터 라이브러리 Servo servo1; // 서보모터 1 Servo servo2; // 서보모터 2 void setup() { Serial.begin(9600); // 시리얼 모니터 시작. 속도는 9600 servo1.attach(9); // 서보모터 1 on servo2.attach(10); // 서보모터 2 on } void loop() { servo1.write(0); // 서보모터 1의 각도를 0으로 delay(1000); // 딜레이 1000ms servo1.write(180); // 서보모터 2의 각도를 180으로 delay(1000); // 딜레이 1000ms servo2.write(0); // 서보모터 2의 각도를 0으로 delay(1000); // 딜레이 1000ms servo2.write(180); // 서보모터 2의 각도를 180으로 delay(1000); // 딜레이 1000ms }
▶ 쉴드와 우노보드에 전원이 연결되었다면 0번핀에 연결 된 서보모터가 0~180˚사이를
반복적으로 움직이는 걸 확인할 수 있습니다.
3.6 동영상
▶아래 영상으로 실험 결과를 확인합니다.
4. 모터 드라이버 L293D 쉴드를 이용하여 DC 모터
제어하기 – 예제2
▶ 모터 드라이버 L293D 쉴드를 이용하여 DC 모터를 제어해보겠습니다.
4.1 준비물
▶실습에 앞서 준비물이 필요합니다.
(링크를클릭하면해당제품
페이지로이동합니다.)
아두이노 우노 보드(SMD) :
링크
모터 드라이버 L293D 쉴드 :
링크
DC 모터 바퀴 세트 :
링크
1.5V AA 배터리 4칸 홀더 :
링크
배터리(1.5V AA) :
링크
4.2 라이브러리
설치하기
▶ 아두이노에서 모터 드라이버 L293D 쉴드를 사용하기 위해선 라이브러리를 등록해야 합니다.
라이브러리 등록 방법은 간단하므로 아래 방법 대로 따라 해주시면 쉽게 할 수 있습니다.
먼저 아래
라이브러리를 다운받고 압축을 풀어줍니다.
※ 주의사항
▶라이브러리추가시
경로설정을정확하게해야합니다.
위그림과같이 'C:\Program Files (x86)\Arduino\libraries\Adafruit-Motor-Shield
-library-master'
경로안에 example 폴더와헤더파일을포함한파일들이들어있어야합니다.
(경로설정을잘못하면
아두이노 IDE에서컴파일오류가발생할수있습니다.)
4.3 아두이노와
연결하기
▶ 아래 결선표와 결선도, 실제연결사진을 참고하여 연결합니다.
▶위 표를 참고하여 서보모터와 모터 드라이버 L293D 쉴드를 연결해주세요.
4.4 코딩예제
▶ 센서와의 연결을 마친 후 아두이노와 PC를 연결하여 아래 코드를 아두이노 스케치에
입력 후 업로드 해줍니다.
#include <SoftwareSerial.h> // L293D 모터 드라이브 라이브러리 #include <AFMotor.h> // 서보모터 라이브러리 AF_DCMotor motor_1(1); // 모터 1 객체 AF_DCMotor motor_2(2); // 모터 2 객체 AF_DCMotor motor_3(3); // 모터 3 객체 AF_DCMotor motor_4(4); // 모터 4 객체 void setup() { motor_1.setSpeed(300); // 모터 1 속도 설정 motor_1.run(RELEASE); // 모터 1 돌리지 않는 상태 motor_2.setSpeed(300); // 모터 2 속도 설정 motor_2.run(RELEASE); // 모터 2 돌리지 않는 상태 motor_3.setSpeed(300); // 모터 3 속도 설정 motor_3.run(RELEASE); // 모터 3 돌리지 않는 상태 motor_4.setSpeed(300); // 모터 4 속도 설정 motor_4.run(RELEASE); // 모터 4 돌리지 않는 상태 } void loop() { // 모터 1 motor_1.run(FORWARD); // 정방향으로 회전 delay(1000); motor_1.run(RELEASE); // 쉬기 delay(1000); motor_1.run(BACKWARD); // 역방향 회전 delay(1000); // 모터 2 motor_2.run(FORWARD); // 정방향으로 회전 delay(1000); motor_2.run(RELEASE); // 쉬기 delay(1000); motor_2.run(BACKWARD); // 역방향 회전 delay(1000); // 모터 3 motor_3.run(FORWARD); // 정방향으로 회전 delay(1000); motor_3.run(RELEASE); // 쉬기 delay(1000); motor_3.run(BACKWARD); // 역방향 회전 delay(1000); // 모터 4 motor_4.run(FORWARD); // 정방향으로 회전 delay(1000); motor_4.run(RELEASE); // 쉬기 delay(1000); motor_4.run(BACKWARD); //역방향 회전 delay(1000); // 전체 모터 정방향 회전 motor_1.run(FORWARD); motor_2.run(FORWARD); motor_3.run(FORWARD); motor_4.run(FORWARD); delay(1000); // 전체 모터 쉬기 motor_1.run(RELEASE); motor_2.run(RELEASE); motor_3.run(RELEASE); motor_4.run(RELEASE); delay(1000); // 전체 모터 역방향 회전 motor_1.run(BACKWARD); motor_2.run(BACKWARD); motor_3.run(BACKWARD); motor_4.run(BACKWARD); delay(1000); }
▶ 쉴드와 우노보드에 전원이 연결되었다면 0번핀에 연결된 DC모터가 0~180˚사이를
반복적으로 움직이는 걸 확인할 수 있습니다.
4.6 동영상
▶ 아래 영상으로 실험 결과를 확인합니다.
여기까지
'아두이노 모터 드라이버 쉴드 L293D를 이용한 모터 제어하기 (DC모터/ 서보모터)'
였습니다.
긴글 읽어주셔서 감사합니다.