* 모터회전속도측정 *. 엔코더모터의회전속도제어를위해서속도의측정이필요. 속도센서로는일반적으로 Incremental 엔코더를많이사용함. 전원 Motor 엔코더 신호출력 A 상 B 상 엔코더의신호출력방식 : Open Collector 와 Line Driver 방식이많이사용됨. 엔코더의회전당펄스수 (PPR): 60,500,5,600,000,04,000,048,4000,4096,8000,89 등이사용. 속도측정방법엔코더의속도측정방법에는다음과같이 가지방법이있다. ). M 방법 m ENC clock Tc M 방법은일정주기의샘플링시간 (Tc) 동안의펄스수 m을이용하여속도를측정하는방법으로저속에서는카운트되는펄스수가적으므로저속에서정밀도가떨어진다. ). T 방법 Tp ENC clock TMR clock m T 방법은엔코더펄스사이의시간 (Tp) 을측정 (m 클럭수를이용 ) 하여속도정보를얻는방법으로고속에서는 Tp시간동안 m 수가적으므로정밀도가떨어진다.
). M/T 방법 m ENC clock Tc Td δτ TMR clock m M 방법과 T 방법이절충된 M/T 방법이실제속도측정에가장많이사용된다. M/T 방법은일정주기의샘플링시간 (Tc) 이후에처음발생되는엔코더펄스와동기되어 δτ 만큼지연된시간 Td(m를이용하여계산 ) 와엔코더펄스수 (m) 를이용하여속도를측정한다. N(rpm) : 측정속도 f(hz): TMR clock frequency P(ppr): 엔코더 회전당발생클럭수 m: 엔코더펄스수 m: TMR clock 수 측정속도는다음과같이계산됨 N = 60 x f x m / (P x m) (98 IEEE,"A MicroprocessorControlled HighAccuracy WideRange Speed Regulator for Motor Drives" 논문참조 ). 회로구성 ) 4 체배회로 A 상 B 상 4X 엔코더의펄스수를카운트할때 A상또는 B상의클럭을직접이용하기보다는 A 상 B 상의상승하강에서클럭을형성하여사용하면엔코더의정밀도를 4 배더높일수있으므로일반적으로 4X 클럭을이용한다.
4X 클럭을만드는방법은일반적으로아래그림에서와같이 D f/f 과 XOR 로직을사용한다. A B D DFF D DFF Q U Q U5 A D Q A U DFF B D Q B U6 DFF U XOR U7 XOR XA XB U4 XOR 4X A A A B B B XA XB 4X D f/f 에서동기를맞춘다음 XOR 로직으로 4X 신호를생성한다. ) 방향정보생성 A 상이 B상보다위상이앞서는경우정방향, B 상이 A상보다위상이앞서는경우역방향이라할때 D f/f 을이용하면쉽게방향정보를생성할수있다. U A D Q DIR B A 상 B 상 DIR DFF
위회로는단순하여많이사용되지만방향판별이약간늦어진다. 좀더세분하여살펴보면다음과같다. 엔코더는 A,B의값의상태에따라 4가지상태로이동된다. 0 State 0 A=0,B=0 0 =FWD 0=REV State A=0,B= State A=,B=0 0 0 State A=,B= 위그림에서정방향 (FWD) 은 State0 > State > State > State > State0의순서로 4 상태를이동하는데, D f/f 회로는 State > State으로이동할때에만정방향정보가반영되고, 역방향 (REV) 정보의반영은 State0 > State로이동할때에만반영된다. SR 래치의 S와 R입력을 A상과 B상의상태에따라변화시켜방향정보를형성할수있는데, 실제실험에서엔코더의출력신호에는보통 Glitch가포함되어있고이로인해방향정보가오동작하여이회로를사용하지않았다. 속도제어를하는경우에는 D f/f 회로를사용하더라도크게문제되지않지만위치제어를하는경우에는방향정보에좀더주의를하여야한다. 왜냐하면방향정보에따라정역회전값을누적하는경우방향정보의지연으로오차가발생할수있기때문이다. ). M/T 회로구성 SYS COUNTER(6bit) COUNTER(6bit) 4X CAPTURE(6bit) CAPTURE(6bit) DATA BUS CAP 신호 M/T 회로를형성하기위해서는위그림과같이 개의 Capture가가능한 UP 또는 DOWN 카운터가필요하다. 개의카운터에서는 T값 (m) 을측정하고, 또다른카운터에서는엔코더 4X 4
클럭 M값 (m) 을측정하는데사용된다. CAP 신호는일정간격으로 개의카운터값을동시에 Capture하여 CPU에서사용가능하도록한다. m ENC clock(4x) Tc Td δτ TMR clock m (). CAP 신호의생성 CPU는일정주기 (msec ~ 0msec) 로 Tc를발생하고, 이신호를엔코더 4X 신호와동기가된 Td 시간 (m 로계산 ) 과누적된엔코더펄스수 (m) 를 Capture하기위한 CAP 신호형성방법에대해살펴보자. 방법 : CPU에서 50% Duty의펄스를출력하고이신호에 4X 신호를동기시켜 CAP 신호를형성한다. Tc 기준신호 4X 신호 CAP 신호 Td 고려사항 : 이방법은기준신호의 Low와 High 부분에서 4X 신호가 회이상발생해야 CAP 신호의 Edge가발생해야한다. 만일아래와같이기준신호 Low 부분에 4X 신호가발생되지않으면 Capture 동작이되지않는다. 기준신호 4X 신호 CAP 신호 5
방법 : 매 4X 신호의 Edge에서 Capture 동작을한다. 이때 CPU가 M 값과 T값을읽는중 Capture 동작이발생하지않도록 DIS 신호를 Low로하여 Capture 동작을막는다. 따라서 DIS 신호직전에 Capture된값들의차이로속도가계산된다. Tc 4X 신호 DIS 신호 CAP 신호 Td 고려사항 : 매 4X 신호마다 Capture 동작이이루어지므로, 고속에서빈번한 Capture 동작 ( 소비전력면에서불리 ) 이행해진다. 저속에서방법 의문제점이개선 (DIS 신호의 Low 폭을가급적좁게 ) 된다. 4. 속도처리프로그램 T 카운터는일정기울기로 UP 카운트를하고, M 카운터는 4X 클럭에따라기울기가달라진다. 아래그림은이관계를개략적으로표시한다. T 카운터 M 카운터 4X ). 정상적으로 CAP 신호가발생했을때. m_old <= m_new t_old <= t_new. DIS 신호 = Low m_new <= M 카운터 t_new <= T 카운터 DIS 신호 = High 6
. m_data = m_new m_old t_data = t_new t_old 의순서로 M,T 값을계산한다. ). CAP 신호는발생했지만, CPU 처음동작하여 m_old 와 t_old 값이없을때. first_cap <= not first. DIS 신호 = Low m_new <= M 카운터 t_new <= T 카운터 DIS 신호 = High. m_data = 0 t_data = MAX ; 0 speed 로처리한다. ). CAP 신호가발생하지않았을때 시간을연장하여 CAP 신호의발생을기다리는카운터를증가하여 일정시간 CAP 신호가발생하지않으면 0 속처리한다. 속도계산 : CPU_FREQ = 6.e6 TIMER_SCALE =. const float inv_enc_pulse[] = {./(60.* 4),./(500.* 4),./(5.* 4),./(000.* 4),./(04.* 4),./(000.* 4),./(048.* 4),./(4000.* 4),./(4096.* 4) }; RPS_SCALE = (CPU_FREQ / TIMER_SCALE) * inv_enc_pulse[enc_index] 기계적속도 [RPS] = ((float)m_data / (float)t_data * RPS_SCALE) 전기적속도 = 기계적속도 * 모터 Pole pare 계산정밀도를높이기위해 float 처리. 7
5. 제어기구성 ). PI 제어기 * err Kp Ki / s Wsl* V/F Motor PG 기준속도 * 과실제모터속도 의차이값 err를 PI 제어기에통과시켜나온값에 Slip 주파수로리미트취한값을모터속도 과더하여 V/F 를통해모터에공급된다. ). IP 제어기 * err Ki / s Kp Wsl* V/F Motor PG 기준속도 * 과실제모터속도 의차이값 err를적분기에통과시키고모터속도 를 P 제어기에통과하여나온값을빼어리미트취한다. ). PI 제어기와 IP 제어기의비교 Tl * a Kp Ki / s Wsl Ks Te / Js ( a) Kp * 기준속도 * 에대한모터속도 의전달함수는 ω ω r ( S ) r = * ( S ) ( α S ) K s K p K i JS K S sk p K sk i 부하토오크 Tl 에대한모터속도 의전달함수는 8
ω ( S ) r S T ( S ) = l Js K S sk p K sk i 와같다. a = 로하면 PI 제어기가되고, a = 0이면 IP 제어기가된다. Tl에대한 의전달함수는 PI와 IP가동일하고, * 에대한 의전달함수는 PI 제어기의경우전달함수에 ZERO가포함되고, IP의경우에는 ZERO가포함되지않는다는것을알수있다. 그런데전달함수에 ZERO가존재하면 Overshoot가발생하여출력특성이나빠지는경우가있다. a를 0 ~ 사이값을갖도록하여 PI와 IP제어기의특징을혼용하여사용하는것을생각할수도있다. 4). Slip 보상형 PI 제어기이용 기준속도 * 과실제모터속도 의차이값 err를 PI 제어기에통과시켜나온값에 Slip 주파수로리미트취한값을실제모터속도에더하지않고기준속도 * 에더하여 V/F 를통해모터에공급된다. 이는기준속도에슬립을보상하는형이된다. * err Kp Ki / s Wsl* V/F Motor PG % 기준속도에슬립을보상하는형을고려하는이유 : 전원 Motor 엔코더 신호출력 A 상 B 상 범용인버터에서보통부하변동을보상하기위해속도를 feedback 시키는데엔코더신호를 A상 개만사용하는경우가있다. 이경우엔코더신호에서방향정보를알아낼수없고 4체배 (4X) 가불가능하고 체배 (X) 까지만가능하다. 9
이경우로더등을이용하여 A상만이용하는지 A상 B상모두이용하는지를설정해주는데, A상 개만이용하는것으로설정하고 A상 B상이접속된경우 체배로계산을하는데 4체배의신호가공급되면 배의속도가계산되어제어기에공급되는경우위험이발생된다. 예를들어 0Hz로운전시키는경우실제속도는 60Hz로궤환되고이 60Hz속도에서 Slip 주파수 (ex. Hz) 만큼감소시켜 58Hz가공급되고다시 58Hz * 의속도가궤환되어결국속도가최대속도로회전하게된다. 만일실제속도를사용하지않고기준속도를이용하게되면이러한상황은발생하지않는다. 따라서범용인버터 PG Option에서는이구조를사용한다. 0