[오늘의 타겟] DC 모터 / 모터 드라이버
- DC 모터
- 2개에 선에 전압을 입력하면 모터가 돌아간다.
- 전압의 방향을 반대로 입력하면 모터도 반대로 돌아간다.
- 참고자료
//m.blog.naver.com/kids_power/221572444008
[아두이노/DC모터] DC 모터와 모터 드라이버 사용법
안녕하세요! 휴몬랩 입니다. 오늘은 DC 모터와 모터 드라이버 사용법에 대해 알아볼까 합니다. 준비물 아...
blog.naver.com
- 모터 드라이브 : L298N
->모터 가동에 필요한 충분한 전류, 전압을 제공.
참고자료. 모터드라이브를 사용하는 이유.
//blog.naver.com/PostView.nhn?blogId=ycpiglet&logNo=222050336319&categoryNo=29&parentCategoryNo=0
모터 드라이버의 사용 이유 (DC모터, 아두이노)
DC 모터 모터란 전기 에너지를 기계 에너지로 변환해주는 장치이다. 굉장히 많은 영역에서 모터를 사용하...
blog.naver.com
*** 오늘 실습 재료
DC 모터 2개
바퀴 2개
모터드라이버(빨간색)
아두이노
아두이노 선
아두이노 케이블
[실습 1] 모터 1개 전진-후진 기본코드
- 사전작업 : 5v 인에이블 점퍼제거
- 모터드라이브 기본 회로 구성
- 바퀴 결합
- 아두이노 모터 드라이버 구동회로
// 3번과 4번 핀은 모터 제어에 관한 핀 int IN1Pin = 3; int IN2Pin = 4; // 5번핀은 모터의 힘을 설정해주는 핀 int ENPin = 5; void setup() { pinMode(IN1Pin, OUTPUT); pinMode(IN2Pin, OUTPUT); // 3, 4번 제어핀들은 핀모드를 출력은로 설정 analogWrite(ENPin, 255); //5번 핀에 255의 최대 힘을 설정한다. } void loop() { //Go : 핀 3, 핀 4 에 신호를 다르게 하면 전진 digitalWrite(IN1Pin, HIGH); digitalWrite(IN2Pin, LOW); delay(5000);//5sec //Back : 핀 3, 핀 4 에 신호를 다르게 하면 후진 digitalWrite(IN1Pin, LOW); digitalWrite(IN2Pin, HIGH); delay(5000);//5sec //Brake (Stop) 핀 3, 4에 똑같이 High를 주거나 Low을 주면 은 멈춘다. digitalWrite(IN1Pin, HIGH); digitalWrite(IN2Pin, HIGH); delay(5000);//1sec }[실습 2] 모터 1개 전진-후진울 시리얼모니터로 제어
- 실습1 회로를 그대로 씁니다.
- 시리얼 모니터란?
-> 컴퓨터로 아두이노를 제어하기 위한 통신 포트
- 시리얼 통신으로 모터 제어 코드
int IN1Pin = 3; int IN2Pin = 4; int ENPin = 5; void setup() { pinMode(IN1Pin, OUTPUT); pinMode(IN2Pin, OUTPUT); analogWrite(ENPin, 255); //Max Speed Serial.begin(9600); Serial.println("start !! "); } void loop() { if(Serial.available()) //시리얼모니터에서 데이터가 들어오면 { char in_data; // 입력된 데이터 저장을 위한 변수 in_data = Serial.read(); //입력된 데이터 in_data에 저장 Serial.print("data : "); Serial.println(in_data); if(in_data == '1') //입력된 데이터가 '1'이라면 { digitalWrite(IN1Pin, HIGH); digitalWrite(IN2Pin, LOW); } else if(in_data == '2') //입력된 데이터가 '2'이라면 { //뒤로 회전 (어떤 방향으로 꽂았느냐에 따라서 방향 반대) digitalWrite(IN1Pin, LOW); digitalWrite(IN2Pin, HIGH); } else if(in_data == '3') //입력된 데이터가 '3'이라면 { //회전 정지 digitalWrite(IN1Pin, HIGH); digitalWrite(IN2Pin, HIGH); } } }자료 출처 : //codingrun.com/111
아래 사진과 같이 잘 작동 하나요?
[실습 3] 모터 2개를 제어 해 보자.
모터 2개 제어 회로 주요 이슈
- 모터가 2개부터는 외부 전원에서 전원을 모터드라이브에 추가로 공급해 주어야 한다.
- 이때 포인트는 외부 전압원 GND 와 아두이노 GND를 연결하여 전기적으로 평형을 맞추어야 한다.
- 위 회로에서는 아두이노 V_in 에 외부 전원 VCC 를 공급해 줌으로 아두이노에게도 전원을 공급한다.
실습 회로와 프로그래밍 코드는 아래 url을 타고 들어가서 진행하세요~!
//steemit.com/arduino/@jhis21c/dc-dc
DC 모터 드라이버를 이용해서 DC모터 제어하기 — Steemit
이번 튜토리얼 에서는 DC 모터 드라이버를 이용해서 2개의 DC모터를 제어 하는 방법을 배워 보도록 하겠습니다. DC 모터는 DC(직류)전원으로 작동하는 모터를 말하며 모형 자동차, 무선조정용 장난
steemit.com
[도전 과제]
모터 2개 회로를 시리얼 모니터로 제어 해보세요.
W 누르면 바퀴 전진
S 누르면 바퀴 후진
A 누르면 좌회전
D 누르면 우회전
X 누르면 버튼은 바퀴 모두 정지
- 회로는 [실습 3] 회로 그대로 쓰시면 됩니다.
- 프로그래밍 코드는 [실습 2] 회로를 수정해서 쓰면 됩니다.
int IN1Pin = 8; int IN2Pin = 7; int IN3Pin = 2; int IN4Pin = 4; int ENAPin = 6; int ENBPin = 3; void setup() { Serial.begin(9600); pinMode(IN1Pin, OUTPUT); pinMode(IN2Pin, OUTPUT); pinMode(IN3Pin, OUTPUT); pinMode(IN4Pin, OUTPUT); analogWrite(ENAPin, 255); analogWrite(ENBPin, 255); } void loop() { if(Serial.available()) //시리얼모니터에서 데이터가 들어오면 { char in_data; // 입력된 데이터 저장을 위한 변수 in_data = Serial.read(); //입력된 데이터 in_data에 저장 Serial.print("data : "); Serial.println(in_data); if(in_data == 's') { digitalWrite(IN1Pin, HIGH); digitalWrite(IN2Pin, LOW); digitalWrite(IN3Pin, HIGH); digitalWrite(IN4Pin, LOW); delay(1000); } else if(in_data == 'w') { digitalWrite(IN1Pin, LOW); digitalWrite(IN2Pin, HIGH); digitalWrite(IN3Pin, LOW); digitalWrite(IN4Pin, HIGH); delay(1000); } else if(in_data == 'd') { digitalWrite(IN1Pin, HIGH); digitalWrite(IN2Pin, LOW); digitalWrite(IN3Pin, LOW); digitalWrite(IN4Pin, HIGH); } else if(in_data == 'a') { digitalWrite(IN1Pin, LOW); digitalWrite(IN2Pin, HIGH); digitalWrite(IN3Pin, HIGH); digitalWrite(IN4Pin, LOW); } else if(in_data == 'x') { digitalWrite(IN1Pin, HIGH); digitalWrite(IN2Pin, HIGH); digitalWrite(IN3Pin, HIGH); digitalWrite(IN4Pin, HIGH); } } }- 도전과제 완료 후 원킹쌤에게 검사 받고 보고서 작성하면 됩니다.
끝.