【 아두이노 기초 】 #25 DC 모터 제어 하기 5
지난 시간에 H브릿지 IC(L293D)를 이용하여 모터를 회전시키고 속도조절을 해보았다. 이번시간에는 동일한 구성에 푸쉬버튼 스위치 하나만 추가하여 정회전으로 돌아가고 있는 모터를 역회전을 시켜보자
※ 모터 구동을 도와 주는 H브릿지 IC(L293D)에 대한 설명은 앞의 게시글을 참조. ( # 24 DC 모터 제어하기 4 바로가기 )
▶ L293D 모터 제어 드라이버 IC 핀배열 및 구성도 :
▶ 실습 목표 :
모터가 정회전 하고 있을 때 푸쉬 버튼 스위치를 누르면 역회전 하도록 프로그래밍 하라. ( 가변저항을 통한 속도제어도 가능하도록 하라)
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 부대품 목록 : 아두이노 보드, 브레드 보드
▶ 부품 목록 : L293D IC, DC 모터, 푸쉬버튼, 저항 10KΩ~500KΩ 사이 아무거나
▶ 프로그램 (코드& 설명) :
int in1=7;
int in2=8;
int MotorA=6; // 모터 연결 핀을 정의한다.
int pwmA;
int btn=10; // 모터 방향 변경을 위한 버튼 변수 선언
void setup() {
pinMode(in1, OUTPUT); // L293D의 1번 채널의 입력 1
pinMode(in2, OUTPUT); // L293D의 1번 채널의 입력 2
pinMode(MotorA, OUTPUT);
pinMode(btn, INPUT_PULLUP); //아두이노 보드 내부 풀업저항 사용 코드
}
void loop() {
boolean btnHL = digitalRead(btn); //boolean은0(LOW),1(HIGH)논리값
pwmA = analogRead(A0)/4; //0~256 값을 넣기위해 '/4'함
MotorSet(pwmA,btnHL); // 모터의 속도와 방향을 설정하는 함수 실행
}
void MotorSet(int pwmA, boolean btnHL) //속도값과 버튼상태 값 전달
{
analogWrite(MotorA, pwmA);
// 버튼이 그라운드와 연결 되어 있어 눌러지면 Low가 입력됨
digitalWrite(in1, !btnHL); // 7번과 연결된 모터라인에 btnHL 반대값 // (!btnHL) 출력
digitalWrite(in2, btnHL); // 8번과 연결된 모터라인에 btnHL 논리 값 출력
}
▶ 실행 영상 :
▶ 아두이노 소스 코드 다운로드 :
'아두이노 > 1. 아두이노기초' 카테고리의 다른 글
【 아두이노 기초 】 #27 DC 모터 제어 하기 7 (RC카 모터구동) (0) | 2018.10.17 |
---|---|
【 아두이노 기초 】 #26 DC 모터 제어 하기 6 (2개의 DC모터) (0) | 2018.10.15 |
【 아두이노 기초 】 #24 DC 모터 제어 하기 4 (0) | 2018.10.02 |
【 아두이노 기초 】 #23 서보 모터 제어 1 (0) | 2018.09.27 |
【 아두이노 기초 】 #22 DC 모터 제어 하기 3 (0) | 2018.09.11 |