아두이노로 DC 모터 회로 연결 및 모터 제어하기
1. 아두이노 우노 키트 정보
https://eduino.kr/product/detail.html?product_no=46&cate_no=180&display_group=1
2. 모터드라이버 정보
https://eduino.kr/product/detail.html?product_no=194&cate_no=55&display_group=1
핀 배치도
비슷한 정보들은 위 에듀이노 사이트에 나와있다. (참고)
DC 모터를 제어하기 좋은 L298N 드라이버를 사용했다.
모터의 종류에 따라 9V 전지가 필요할 수도 있지만,
없어도 되는 모터도 있다.
내가 사용하는 모터는 외부 전력이 필요하여 9V 전지를 사용하였다.
연결 회로도
에듀이노에 나와있는 회로도를 바탕으로 결선하였다.
내가 제어할 모터는 컨베이어 벨트에 부착되어있는 모터이다.
반복적인 테스트 도구를 개발하기 위해 컨베이어 벨트를 구매 후
해당 모터에 선을 잘라서 +, -를 확인하고 결선해주었다.
결선 후 사진
결선이 완료된다면 아두이노 우노 보드와 모터 드라이버에
빨간 불이 들어오게 된다.
이제 코드를 작성해보자.
모터 제어 코드
int Dir1Pin_A = 2; // 제어신호 1핀
int Dir2Pin_A = 3; // 제어신호 2핀
int SpeedPin_A = 10; // PWM제어를 위한 핀
void setup() {
pinMode(Dir1Pin_A, OUTPUT); // 제어 1번핀 출력모드 설정
pinMode(Dir2Pin_A, OUTPUT); // 제어 2번핀 출력모드 설정
pinMode(SpeedPin_A, OUTPUT); // PWM제어핀 출력모드 설정
}
void loop() {
digitalWrite(Dir1Pin_A, HIGH); //모터가 시계 방향으로 회전
digitalWrite(Dir2Pin_A, LOW);
analogWrite(SpeedPin_A, 255); //모터 속도를 최대로 설정
delay(1000);
digitalWrite(Dir1Pin_A, HIGH); //모터가 시계 방향으로 회전
digitalWrite(Dir2Pin_A, LOW);
analogWrite(SpeedPin_A, 51); //모터 속도를 1/5로 설정
delay(3000);
digitalWrite(Dir1Pin_A, LOW); //모터가 반시계 방향으로 회전
digitalWrite(Dir2Pin_A, HIGH);
analogWrite(SpeedPin_A, 255); //모터 속도를 최대로 설정
delay(1000);
digitalWrite(Dir1Pin_A, LOW); //모터가 반시계 방향으로 회전
digitalWrite(Dir2Pin_A, HIGH);
analogWrite(SpeedPin_A, 51); //모터 속도를 1/5로 설정
delay(3000);
}
에듀이노에서 제공되는 기본 코드이다.
주석에 작동에 대한 설명이 적혀있다.
여기서 중요한 부분은 제어 핀을 맞게 설정해줘야한다.
PWM은 속도를 더 구체적으로 제어하기 위한 것이다.
Line 15 > analogWrite(SpeedPin_A, 255); //모터 속도를 최대로 설정
이 부분을 보면 255가 최대 속도이며, 숫자(인자)값에 따라 속도가 제어된다.
연결이 잘 되었다면, 작동이 된다.
하지만 응용을 해야하기 때문에 다음 글에서는 더 완성된 코드를 올려야겠다.
'사물인터넷 (IoT) > Arduino' 카테고리의 다른 글
아두이노 DC 모터 사용자에게 입력 받아 제어하기 | 민민의 하드디스크 - 티스토리 (0) | 2023.04.17 |
---|