MicroMouse DC모터 제어

Download Report

Transcript MicroMouse DC모터 제어

단국대학교 MAZE 9기 박선응
MICROMOUSE
DC모터 제어
2008/4/25
차례
1. DC 모터 제어 원리
- DC 모터 구동 원리
- PWM을 통한 DC 모터 구동
- 모터의 회전 수 측정
- PID 제어
2. DC 모터 제어 구현(TMS320F2808)
- Flowchart
- 초기화
- 모터 제어 구현
DC 모터 제어 원리
DC 모터 구동 원리
 자기장 속에 있는 도선에 전류가 흐를 때 전류가 받는 힘
의 방향으로 모터가 회전한다.
플래밍의 왼손법칙
DC 모터 특성
 T-I 특성(토크 대 전류)
 전류에 대해 선형적인 직
선으로 토크가 비례
 T-N 특성(토크 대 회전수)
 토크에 대하여 회전수는
선형적인 직선으로 반비례
H-Bridge 회로
 단일 전원으로 모터에 가하는 전압의 방향
을 바꿀 수 있는 회로
ON : Q1, Q4
OFF : Q2, Q3
-> 정회전
ON : Q2, Q3
OFF : Q1, Q4
-> 역회전
PWM을 통한 DC 모터 구동
 구동 전압을 일정 주기로 On/Off 하여 구동
전압을 바꾸는 듯한 효과를 냄
-> Pulse Width Modulation
모터 회전 수 측정
 Encoder 종류
opto-electronic encoder
Magnetic Encoder
모터 회전 수 측정
 Encoder Output Pulse
개루프 제어와 폐루프 제어
 개루프 제어(open-loop control)
 구조가 단순하고 경제적이다
 일반적으로 양호한 신뢰도
 제어 정도가 다소 떨어짐(오차 보정 없음)
개루프 제어와 폐루프 제어
 폐루프 제어(close-loop control)
 제어 정도가 우수
 고신뢰도
 시스템의 안정성, 주파수 응답 특성, 민감도 등의
제어 향상이 가능
PID 제어기 구조
 Proportional(비례), Integral(적분), Differential(미분)을
통한 제어
PID 제어기 특징
 구조적 간단하다
 제어이득 조정이 쉽다
제어 조작량의 변화가 커서
목표치에서 진동을 함
비례(P) 제어기
 가장 기초적인 비례 제어기
 목표값에 접근 할 수록 미세하게 제어 함
 목표값에 정확히 도달할 수 없음
비례-적분(PI) 제어기
 누적 오차를 보상하는 제어기
 목표값에 도달이 가능
 시스템 응답이 느려 질 수 있음
비례-미분(PD) 제어기
 미분 제어와 PID 제어
 미분 제어로 응답 속도를 향상
 잘못 설정할 경우 외란이나 노이즈에 크게 영향을 받음
각 이득의 일반적인 영향
Effects of increasing parameters
Parameter
Rise Time
Overshoot
Settling Time
S.S. Error
Kp
Decrease
Increase
Small Change
Decrease
Ki
Decrease
Increase
Increase
Eliminate
Kd
Small
Decrease
Decrease
Decrease
None
개인(Gain) 값 튜닝 순서
P제어를 통
해 상승시간
향상
D제어를
첨가하여
Overshoot
향상
I제어를
첨가하여
정상상태
오차를 없앰
만족할 때
까지 각 이득
값 조정
DC 모터 제어 구현
Flowchart
초기화
모터 제어에 필요한 PWM,
QEP를 초기화
일정 시간마다 모터 제어를
하기 위한 타이머 설정
PWM(Pulse Width Modulation) 초기화
 Counter Clock 설정(->SYSCLOCKOUT)
 PWM Period(->25us = 40KHz)
 ZRO(Zero), CAU(Compare A Up), CBU(Compare B Up)
CAD(Compare A Down), CBD(Compare B Down)
 PWM Output Control(CMPA, CMPB)
QEP(Quadrature Encoder Pulse)
초기화
 모터 엔코더 카운터 값을 받기 위함
Encoder Output Signal
Quadrature Decoder
Forward/Reverse Movement
512 Resolution Encoder
-> 2048 Resolution
QEP(Quadrature Encoder Pulse) 초기화
 QEP Register Setting
 Position Counter Reset on the Maximum Position
 Position Maximum is ‘~0’(2047)
타이머 초기화
 일정 주기마다 속도, 거리 등 각 종 정보를
갱신하고, 목표 속도로 제어하기 위해 타이
머를 구동
-> 현재 500us를 주기로 설정
모터 제어 Timer
 일정 주기 마다 모터의 회
전 정보를 얻어 속도, 거리
를 계산
 목표 속도를 맞추기 위해
PID 제어값을 계산하여
PWM 카운터 값 적용
엔코더 펄스 구하기
 엔코더 카운터를 통해 얻음
QEP.QPOSCNT를 읽음
Software Init Position
Counter
(QEP.QEPCTL의 SWI를 ‘1’로 설정)
모터의 움직임 기본 데이터 구하기
거리계산
속력 계산
다음 목표
속력 설정
 거리 계산


단위 거리 = 엔코더 카운터값 x 엔코더 펄스당 거리
엔코더 펄스당 거리 = 바퀴 지름 / (바퀴 한바퀴의 엔코더 펄스 x 기어 비율)
 속력 계산
 속력 = 거리 / 타이머 주기
-> 타이머의 역수를 곱셈으로 계산(속도 향상)
 다음 목표 속력 설정

가속(최종 목표 속력 > 현재 목표 속력)

감속(최종 목표 속력 < 현재 목표 속력)
 다음 목표 속력 = 현재 속력 + (가속력*타이머시간)
 다음 목표 속력 = 현재 속력 - (가속력*타이머시간)
PID 제어값 구하기
평균 속력 계산
(4개의 Que 형태)
 PID 제어기 계산

비례(P) 제어기
P = KP(비례상수) x 속력 오차

적분(I) 제어기
I = KI(적분상수) x 속력 오차 누적 값)

미분(D) 제어기
D = KD(미분상수)
x (속력 오차 - 전전전 속력 오차))

최종 PID 값
속력 오차와
오차 누적 값 계산
PID 제어기 계산
• 비례(P) 제어기
• 적분(I) 제어기
• 미분(D) 제어기
• 최종 PID 값
PID 값 = P + I + D
속력 오차 = 목표 속력 – 평균 속력
모터 구동 방향과 PWM 카운터 값 구하기
 모터 제어 방향 얻기
 PID 값을 PWM 값으로 변환
 PWM Value = PID Value x Ratio
모터 구동 방향 설정
 PWM 출력 포트 설정
 Forward(전방향)
 AQCTRLA.bit.ZRO = AQ_SET
 AQCTRLB.bit.ZRO = AQ_CLEAR
 Backward(역방향)
 AQCTRLA.bit.ZRO = AQ_CLEAR
 AQCTRLB.bit.ZRO = AQ_SET
PWM 카운터 값 적용
 PWM 설정
 CMPB Register 설정
Reference
 http://www.ktechno.co.kr
 http://www.daehwagm.co.kr
 단국대학교 MAZE 슝슝 ‘DC 모터의 제어’