모터 정역 제어

- 정역 제어 = 정방향(CW clock wise) + 역방향 제어(CCW counter CW)

- 전원 방향에 따라 정방향 역방향으로 회전한다 

  but) MCU IO 포트는 출력 전류가 약해 전류를 충분히 공급하지 못한다.

 => 전류 증폭이 필요. 트랜지스터?

 

DC 모터 구동

- TR 구동 : 이미터 부하, 컬랙터 부하 -> 컬랙터 부하를 주로 사용

 

간단한 모터 제어 회로

- NPN TR과 이미터 방향에 모터보호저항 단다.(과전류 보호)

갑자기 끄면 큰 역기전력이 발생-> TR 파괴

 

 

 

역기전력으로부터 모터 보호

- 환류 다이오드 사용

- 역기전력이 생겼을때 빼주기 : 저항이 작아진 소자 반대방향

환류 다이오드(free wheeling diode) 필요

but 여전히 한쪽방향만 돈다

 

 

 

모터 양방향 제어를 위한 H 브리지 제어 회로

- TR 하나로는 전류가 부족하다

-> TR을 4개 해서 전류도 증폭하고 양방향 제어가능한 회로

 

 

트랜지스터를 이용한 AND 게이트

 

 

 

L298

DUAL FULL-BRIDGE DRIVER : L298 하나로 모터 2개 제어가능

 

 

 

 

enable 핀을 통해 출력

-> enable off 시 마찰력에 의해 천천히 모터 멈춤

급정거 원할시 H 브리지에 1 1 인가

 

L298N 듀얼 풀 브리지 드라이버 모듈

 

 

 

L297N를 이용한 양방향 DC 모터 제어

 

 

L298N 드라이버 블록 다이어그램 이해하기

1. 방향 제어

 

2. Enable 신호 H일때 동작, L 되면 모터는 관성으로 정지

 

3. 속도 제어

 

 

시뮬레이션 예제

/*
	project1 : 가변 저항을 이용한 DC 모터 속도 제어
	가변저항 - A0
	L298 IN1 - ard 8
	L298 IN2 - ard 7
	L298 ENA - ard 6 980hz
*/


const uint8_t PIN_IN1 = 8;
const uint8_t PIN_IN2 = 7;
const uint8_t PIN_ENA = 6;
const uint8_t analog_pin = A0;


int analog_value;
int pwm_value;

void setup () {
	Serial.begin(9600);
	pinMode(PIN_IN1, OUTPUT);
	pinMode(PIN_IN2, OUTPUT);
	pinMode(PIN_ENA, OUTPUT);

}

void loop() {
	analog_value = analogRead(analog_pin);
	pwm_value = map(analog_value, 0, 1024, 0, 255);

	digitalWrite(PIN_IN1, HIGH);
	digitalWrite(PIN_IN2, LOW);
	analogWrite(PIN_ENA, pwm_value);
	Serial.print("pwm value : ");
	Serial.println(pwm_value);
}

 

 

 

 

 

 

 

 

 

+ Recent posts