410 likes | 1.13k Vues
단국대학교 MAZE 9 기 박선응. MicroMouse DC 모터 제어. 2008/4/25. 차례. 1. DC 모터 제어 원리 DC 모터 구동 원리 PWM 을 통한 DC 모터 구동 모터의 회전 수 측정 PID 제어 2. DC 모터 제어 구현 (TMS320F2808) Flowchart 초기화 모터 제어 구현. DC 모터 제어 원리. DC 모터 구동 원리. 자기장 속에 있는 도선에 전류가 흐를 때 전류가 받는 힘의 방향으로 모터가 회전한다. 플래밍의 왼손법칙. DC 모터 특성.
E N D
단국대학교 MAZE 9기 박선응 MicroMouseDC모터 제어 2008/4/25
차례 1. DC 모터 제어 원리 • DC 모터 구동 원리 • PWM을 통한 DC 모터 구동 • 모터의 회전 수 측정 • PID 제어 2. DC 모터 제어 구현(TMS320F2808) • Flowchart • 초기화 • 모터 제어 구현
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 제어 • 미분 제어로 응답 속도를 향상 • 잘못 설정할 경우 외란이나 노이즈에 크게 영향을 받음
개인(Gain) 값 튜닝 순서 P제어를 통해 상승시간 향상 D제어를 첨가하여 Overshoot 향상 I제어를 첨가하여 정상상태 오차를 없앰 만족할 때 까지 각 이득 값 조정
초기화 • 모터제어에 필요한 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 512 Resolution Encoder -> 2048 Resolution Forward/Reverse Movement
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 제어값 구하기 • PID 제어기 계산 • 비례(P) 제어기 • P = KP(비례상수) x 속력 오차 • 적분(I) 제어기 • I = KI(적분상수) x 속력 오차 누적 값) • 미분(D) 제어기 • D = KD(미분상수) • x (속력 오차 - 전전전 속력 오차)) • 최종 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 모터의 제어’