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 모터의 제어’