【 아두이노 Proj#2】 라인트레이서 자동차 만들기 ( L298N모듈)
적외선 센서를 이용하여 바닥에 그려진 라인을 따라 이동하는 RC카를 만들어 보자.
▶ 선수 학습 :
1. (기초) #24 DC 모터 제어 하기 4 (L293 & H브릿지 참고) ☜ 강좌 클릭
2. (센서) #2 적외선(근접)센서 TCRT5000(TCRT5000 참고) ☜ 강좌 클릭
3. (센서) #24 L298N 모터 모듈활용한... (L298N 모듈 참고) ☜ 강좌 클릭
4. (응용) #1 초음파센서로 자동차 만들기 (자동차 구동이해) ☜ 강좌 클릭
▶ 라인트레이서 완성 모습
▶ 라인트레이서 동작 원리
이와 같은 센싱 역할을 하는 센서가 바로 아래 소개 되는 TCRT5000센서이며 이를 사용하기 편하게 모듈화 한 것이다.
▶ 실습에 사용되는 부품 스팩 ( TCRT5000)
TCRT 5000은 적외선 방식이어서 적외선 센서로 불리지만, 가깝고 짧은 거리에 사용되기 때문에 근접센서로도 불린다.
※ TCRT 5000 모듈의 상세한 사용 설명은 선수학습 '2.번'을 참고
▶ 실습에 사용되는 부품 스팩 ( L298N )
▶ 실습 목표 :
1. L298N 모듈에 대해 이해하고 모터를 연결하여 사용하는 방법에 대해 익힌다.
2. 적외선 센서(TCRT5000)의 작동방식과 활용하는 법을 익힐 수 있다.
4. 검은색 라인위를 따라 이동하는 라인트레이서 로봇을 구현할 수 있다.
※ 전원 공급은 건전지를 사용할 수도 있지만 , 요즘 많이 보유하고 있는 휴대폰보조베터리를 사용해도 된다. 소형 보조 베터리 사용시 장점은, 건전지보다 장시간 플레이가 가능하며, 언제든 손쉽게 재충전이 가능하여 건전지 교체비용을 줄일 수 있다.
▶ 실습 회로도면 1 (기본회로):
(이미지 클릭하면 확대 가능)
※ 실습회로 도면 1에 보면, 9V 건전지는 아두이노쪽에 전원공급용으로 쓰였구요. L298N모듈에 보면, +5V~(모터, 별도전원) 이라고 되어 있는 부분에는 5V이상 되는 전원을 따로 넣어(연결) 주라는 의미에요.
그래서, 건전지를 두 개(가지) 사용해야 모터가 잘 돌아갑니다.
▶ 실습 회로도면 2 (확장회로):
(이미지 클릭하면 확대 가능)
※ 기본 회로로 동작이 확인 되면 위 그림 처럼 마치 자동차의 헤드램프 처럼 라이트가 들어오도록 LED와 저항을 추가 할 수 있으며, RC카의 전원을 켜고 끄기 쉽도록 슬라이드 스위치를 달아 놓았다. (토글 스위치를 사용하여도 무방)
▶ 회로 연결 쉽게 따라하기 (영상) :
(영상을 확대해서 플레이해서 보세요)
▶ 실습 절차 :
▶ 프로그램 코드 및 설명 :
/* 라인트레이서(Line Tracer) 프로그램 */
/* by RASIno , http://rasino.tistory.com */
#define IN1 8#define IN2 9#define IN3 10#define IN4 11int leftLineSensor = 12; // 라인트레이서 왼쪽 센서
int rightLineSensor = 13; // 라인트레이서 오른쪽 센서
void forward() { //
전진 : 모터 두 개를 모두 정회전 시킴
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW); }
void back() { //
후진 : 모터 두 개를 모두 역회전 시킴
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH); }
void left() { //
좌회전 : 오른쪽 모터만 정회전 시킴
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW); }
void right() { //
우회전 : 왼쪽 모터만 정회전 시킴
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW); }
void stop() { //
정지 : 2개의 모터 모두 회전 멈춤
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW); }
void setup( ) {
pinMode(IN1, OUTPUT); // A 모터 1
pinMode(IN2, OUTPUT); // A 모터 2
pinMode(IN3, OUTPUT); // B 모터 1
pinMode(IN4, OUTPUT); // B 모터 2
pinMode(leftLineSensor, INPUT);
pinMode(rightLineSensor, INPUT);
}
void loop( ) {
// 만약 양쪽 센서가 모두 선 ‘미감지’(반사신호’OK’) 경우 : 전진
if (!digitalRead(leftLineSensor) && !digitalRead(rightLineSensor)) {
forward();
}
// 만약 왼쪽 센서만 ‘선감지(반사신호X)’ 경우 : 좌회전
else if (!digitalRead(leftLineSensor) && digitalRead(rightLineSensor)) {
left();
}
// 만약 오른쪽 센서만 ‘선감지(반사신호X)’ 경우 : 우회전
else if (digitalRead(leftLineSensor) && !digitalRead(rightLineSensor)) {
right();
}
// 만약 양쪽 센서 모두 ‘선감지(반사신호X)’ 경우 : 정지
else if (digitalRead(leftLineSensor) && digitalRead(rightLineSensor)) {
stop();
}
}
◈ 모터 A, B가 동시에 시계방향으로 돌면 전진, 반시계 방향이면 후진이고,
한 쪽바퀴만 돌리거나 두 개의 바퀴를 서로 반대로 돌리면 좌회전 혹은 우회전이 된다.
이를 함수 형태로 만들고 메인 루프에서 적절히 함수들을 호출해서 사용하도록 하였다. 라인트레이서의 동작을 좀더 다양하게 꾸밀 수 있는데, 바닥의 라인에 따라 되돌아 나오기 등등 여러 형태로 프로그래밍 해 볼 수 있다.
▶ 실행영상 :
(전체화면 보기로 보세요)
▶ 아두이노 파일(다운) :
▶ 동작이 안 될 때 :
아래 사항을 하나씩 살펴보세요. (위 글 내용에도 강조했지만 다시 정리해드리면)
1. 회로 연결을 꼼꼼하게 한번더 살펴 보세요. 분명 회로도 보고 하셔도 어디 한 두 군데 잘못연결되면 동작되지 않습니다.
2. 모터가 들어가는 회로에서 모터 동작이 이상하거나 잘 안되는 원인의 대부분은 전력부족이에요. 전력 중에서도 전류가 충분하게 공급되어야 하죠. (전압보다 전류가 더 중요해요)
실습회로 도면 1에 보면, 9V 건전지는 아두이노쪽에 전원공급용으로 쓰였구요.
L298N모듈에 보면, +5V~(모터, 별도전원) 이라고 되어 있는 부분에는 5V이상 되는 전원을 따로 넣어(연결) 주라는 의미에요. 그래서, 건전지를 두 개(가지) 사용해야 아마 제대로 돌아갈 거예요.
건전지 하나로는 보통 겨우 겨우 돌아가거나 제대로 안 돌아 갈 수 있어요.
그리고, 9V 건전지는 전압은 높아보이지만 전류가 약한 타입이라서 아두이노 본체 전원으로는 좋은데, 모터쪽 전원으로는 부적합해요. 그래서 모터쪽 전원으로는 AA(1.5V)건전지 4개를 직렬연결해서 6V정도로 만들어 공급해주면 좋구요, 아니면, 18650(3.7V) 두 개를 직렬(7.4V) 연결한 걸 공급해주면 됩니다. 얘네들은 전류가 쎈 건전지라서 모터가 잘 돌아가요.
그리고, 스위치를 추가한 회로 도면 2번(확장회로)에도 1번과 같이 모터쪽 전원과 따로 분리해서 전원을 이중으로 넣어주면 됩니다.
'아두이노 > 4. 프로젝트 LAB' 카테고리의 다른 글
【 아두이노Proj#6】 조이스틱 미니카 만들기~! (0) | 2019.05.09 |
---|---|
【 아두이노Proj#5】 아두이노 스마트 화분 만들기 Ver 3 with LCD (85) | 2019.04.05 |
【 아두이노Proj#4】 아두이노 스마트 화분 만들기 Ver2 with FND (7) | 2019.04.03 |
【 아두이노Proj#3】 아두이노 스마트 화분 만들기 Ver 1 (10) | 2019.03.29 |
【 아두이노 Proj#1】 초음파센서로 자동차 만들기( L298N모듈) (2) | 2019.01.23 |