모터 정역 제어
- 정역 제어 = 정방향(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);
}
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
아두이노회로만들기 - 6. 통신과 적외선 센서, 라인트레이서 만들기 (0) | 2022.09.08 |
---|---|
조금씩 임베디드 - 11. 임베디드 정리자료 (0) | 2022.08.31 |
아두이노회로만들기 - 4. 태양광 충전, 블링크 회로 (0) | 2022.08.24 |
조금씩 임베디드 - 10. 어셈블리어 (0) | 2022.08.17 |
조금씩 임베디드 - 9. 링커 스크립트 (0) | 2022.08.17 |