아두이노 dc모터 양방향제어 질문
페이지 정보
작성자 master 작성일18-12-07 00:38 조회3,605회 댓글0건본문
지금 아두이노로 dc모터 양방향 제어를 하려는데 IC를 이용해서 양방향 제어를 하려고 합니다.
int IN1Pin = 3;
int IN2Pin = 4;
int ENPin = 5;
int IN2Pin = 4;
int ENPin = 5;
void setup() {
pinMode(IN1Pin, OUTPUT);
pinMode(IN2Pin, OUTPUT);
analogWrite(ENPin, 255); //Max Speed
}
pinMode(IN1Pin, OUTPUT);
pinMode(IN2Pin, OUTPUT);
analogWrite(ENPin, 255); //Max Speed
}
void loop() {
//Go
digitalWrite(IN1Pin, HIGH);
digitalWrite(IN2Pin, LOW);
delay(2000);//2sec
//Go
digitalWrite(IN1Pin, HIGH);
digitalWrite(IN2Pin, LOW);
delay(2000);//2sec
//Back
digitalWrite(IN1Pin, LOW);
digitalWrite(IN2Pin, HIGH);
delay(2000);//2sec
}
digitalWrite(IN1Pin, LOW);
digitalWrite(IN2Pin, HIGH);
delay(2000);//2sec
}
코드는 이런식으로 시리얼통신을 사용하지 않고 업로드 되면 바로 2초 정방향 회전 2초 역방향회전 이런식으로 하려고 하는데 회로를 잘못연결해서인지 코드를 잘못짯는지.. 구동은 안되고 IC에서 발열만 납니다. 코드와 회로를좀 알려주시면 감사하겠습니다/
//
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-10-30 오전 9:02:15
// by Ok-Hyun Park
//
int IN1Pin=3,IN2Pin=4,ENPin=5;
//
void setup(){
pinMode(IN1Pin,OUTPUT); pinMode(IN2Pin,OUTPUT); analogWrite(ENPin,255); //Max Speed
}
//
void loop(){
//Go
digitalWrite(IN1Pin,HIGH); digitalWrite(IN2Pin,LOW); delay(2000); //2sec
//Stop
digitalWrite(IN1Pin,LOW); digitalWrite(IN2Pin,LOW); delay(2000); //2sec
//Back
digitalWrite(IN1Pin,LOW); digitalWrite(IN2Pin,HIGH); delay(2000); //2sec
//Stop
digitalWrite(IN1Pin,LOW); digitalWrite(IN2Pin,LOW); delay(2000); //2sec
}
정지 과정이 없이 회전방향을 바꾸면 전류가 두배 흐릅니다.
드라이버 모듈에서 발열이 있다면 드라이버 전류용량이 부족합니다.
1. 모터정격전류 < 드라이버모듈 전류 구동 능력
2. 모터정격전류 < 전원회로 전류 공급 능력
1번이 부족한 것이죠
체크하려면
모터스펙/ 드라이버모듈 스펙/ 전원회로 스펙/ 을 알아야합니다.
댓글 : 0
조회수 : 3,605
등록된 댓글이 없습니다.