2010년 11월 20일 토요일

서보모터의 전력제어

http://blog.naver.com/hjo0075?Redirect=Log&logNo=140006277546



서보 모터의 전력제어
1. 서 론
모터는 제어하는 형태에 따라 크게 Open-Loop Control과 Close-Loop Control이 있고 모터를 제어하는 방법에 따라 토크 제어(전류 제어), 속도 제어 및 위치 제어로 분류되어진다.
모터의 제어는 토크의 제어, 즉 모터에 유입되는 전류를 제어함으로 이루어지며 서보 모터의 속도 제어 및 위치 제어도 최종적으로 모터에 유입되는 전력, 즉 전류를 제어하여 이루어 진다. 이렇게 모터의 제어는 전류 제어를 기본으로 하고 있으며, 따라서 모터의 전류를 제어하는 방법을 알면 그 기본을 아는 것이 된다.
본 기술문서에서는 모터의 전류를 제어하는 방법에 대하여 기술하고 전류 제어에 기본이 되는 전력 변환기의 기본 원리에 대하여 설명하도록 하겠다.
2. 모터에 공급되는 전류의 제어
우선 DC 서보 모터의 내부회로를 간단하게 등가회로로서 나타내어 보면 <그림 1>과 같다.
         
            
<그림 1>에서와 같이 모터의 회로적인 기본 구조를 나타낼 수 있다. 이때 모터에 인가되는 전압을 VT라고 하면, 이때 위의 등가회로는 다음의 식으로 표현되어진다.
  


VT : 단자 전압
Ia : 모터 권선에 흐르는 전류
Ra : 모터의 전기자 권선 저항
La : 모터의 전기자 인덕턴스
E(ωt) : 모터의 역기전력
위의 식에서 모터의 역기전력 E(ωt)는 모터의 회전수에 의하여 결정되는 항으로 모터가 회전을 하게 되면 그 자체가 유도 기전력에 의하여 발전기의 역할과 같이 나타나므로 인가 전압 VT에서 손실분을 빼고 나면 그때 인가 전압과 역기전력의 차이에 따른 전류가 흐르게 된다. 역으로 모터의 회전수가 올라가게 되면 역기전력이 커지게 되어 인가 전압에서 손실분을 뺀 값과 일치하게 되면 모터에 흐르는 전류는 영(0)이 되게 되어 이때 모터의 발생 토크는 영(0)이 되게 된다.
그러므로 단자 전압이 높더라도 전류를 제한하면 모터의 발생 토크를 제한할 수 있게 되며 반대로 모터에 인가되는 전압을 제어하면 모터에 흐르는 전류를 제어할 수 있게 된다.
참고로 모터의 회전수가 높은 경우 모터의  발생 토크가 작아지는 것은 역기전력이 상승하기 때문이며 반대로 모터는 역기전력이 있으므로 전류 제한이 된다.
만일 인가 전압이 크고 모터의 회전을 정지시키면 역기전력 항은 영(0)이 되고 이때 권선 저항 Ra가 아주 작은 값이기 때문에 대전류가 흐르게 되어 모터는 파손된다.
모터에 공급되는 전류의 제어는 모터의 단자에 인가되는 인가 전압 VT을 제어하면 되는데 이때 전압을 제어하기 위하여 펄스폭 변조(PWM:Pulse Width Modulation)라는 방법을 이용하여 제어한다.
이것은 전력소자의 스트레스를 최소화하고 효율적으로 전력을 제어하기 위한 방법으로 사용되는데 최근까지 삼각파 비교방식의 펄스폭 변조방법을 가장 많이 사용하고 있다.




이때 펄스폭 변조 파형의 주파수는 삼각파의 주파수와 동일하게 되고, 그 크기는 입력 단자 전압과 같게 된다. 즉 기준값 아날로그 파형을 일정한 주파수의 펄스열로서 바꾼 것이다. 따라서 모터에 인가되는 단자 전압의 파형을 펄스폭 변조하여 인가하게 되면 모터에 인가되는 평균 전압을 제어하게 되며, 이는 다시 모터에 흐르는 전류를 제어하게 되어 결국 모터의 전력을 제어하고 발생 토크를 제어하게 된다.
이와 같은 방법은 전력소자의 구동방법에서 나오게 된 것인데, 전력용 소자를 <그림 2>에서 기준값과 같이 아날로그 파형으로 제어를 하게 되면 전력소자의 능동영역에서 동작하게 되어 손실이 많이 발생하고 발열이 심하게 된다. 따라서 전력소자의 포화영역과 OFF영역에서 사용을 하여 손실과 발열을 최소화하도록 제어하기 위하여 위와 같이 펄스폭 변조방법을 사용하게 된다.
또한 대전력을 제어해야 할 경우, 즉 대용량의 모터를 제어하여야 할 경우 흐르는 전류가 크게 되어 이때 전력소자의 능동영역에서 사용하게 되면 전력소자 내부 저항이 수십 옴(Ω)의 저항값으로 손실이 크고 결국 전력소자가 파손된다. 따라서 효율적인 전력 제어방법으로 PWM(Pulse Width Modulation)기법을 사용하여 제어하게 된다.
이러한 펄스 파형으로 모터의 전류가 어떻게 제어되는지 <그림 3>에 나타내었다.


이렇게 모터의 전류 파형은 전력소자 Q1이 도통하고 있는 동안 증가하고 Q2가 도통하고 있는 동안 감소하게 되는데, 이때의 증가감소의 평균 전류가 모터의 구동 전류가 된다. 이렇게 모터에 흐르는 전류가 톱니파 모양으로 나타나는 것은 모터 내부에 있는 인덕턴스 때문이다. 그리고 상대적으로 PWM 파형의 주파수가 높고 모터 내부의 인덕턴스가 크고 모터의 회전 관성 때문에 전류 파형의 증감은 모터 회전력의 진동에 잘 나타나지 않는다.



이렇게 전류의 제어가 이루어지게 되는데 이때 Tp와 Tn의 시간폭에 따라서 모터는 정회전 혹은 역회전을 하게 된다.
모터 회전력의 방향은 <그림 2>에서 기준값의 크기가 정신호 혹은 부신호로 나타나는가에 따라 방향이 결정되고 이때 제어되는 전류는 기준값의 크기에 따라 다르게 된다. 그러나 <그림 3>에서도 나타난 것과 같이 모터에 인가되는 전압은 일정하게 되고 이때 인가 전압의 폭만이 변하고 있음을 알 수 있다.
이렇게 모터에 공급되는 전력은 인가 전압의 펄스폭 변조로 제어할 수 있게 되며 발생 토크는 모터의 전류에 인하여 제어된다. 따라서 모터의 발생 토크를 제어하기 위한 일반적인 제어방법은 위에서 설명한 것과 같이 PWM기법을 이용하여 제어하고 있으며 인가 전압의 펄스폭으로 제어하는 방식을 전압원 인버터라고 부른다.
3. 서보 모터의 토크 제어
앞에서도 언급한 바와 같이 서보 모터의 토크를 제어하기 위하여 모터에 흐르는 전류를 제어함으로 가능하게 된다. 목표값에 대한 전류를 정확히 제어하기 위하여 서보 모터에 공급되는 전류를 피드백하여 제어하게 되는데 이를 간단하게 나타내어 보면 <그림 4>와 같다.

          <그림 4> 서보 모터의 전류 제어






이것은 전류 제어기의 PID 제어 이득값에 따라 전류 제어기 출력은 아주 큰 값이 설정될 수 있는데, 이때 모터에 공급되는 전류는 모터상 권선이 파손되지 않는 범위내에서만 구동하여야 하기 때문에 모터의 정격 토크이내에서 동작할 수 있도록 설정하고 있다.
실제 상용으로 판매되고 있는 서보 드라이버의 경우 최대 토크 설정값을 파라미터에서 설정할 수 있도록 하고 있는데, 보통 정격 토크의 2~3배로 설정하고 있으며 이것은 모터에 유입되는 전류의 값을 제한하기 위하여 전류 제어기에 설정되는 최대 전류값을 설정하기 위한 것이라고 할 수 있다. 또한 전류 제어기의 이득인 PID 제어기는 실제 판매되고 있는 서보 드라이버에서는 사
용자들이 그 파라미터를 변경할 수 없게 되어 있다.
삼각파 발진기는 <그림 2>와 같이 일정한 주파수를 갖는 삼각파 혹은 톱니파를 만들어내는 부분으로 보통 아날로그 파형 발생기를 이용하거나 혹은 OP-AMPM를 이용하여 파형 발생기를 구성하도록 한다.
전류 검출기는 모터에 유입되는 전류의 값을  측정하는 부품으로 전류의 크기를 전압으로 바꾸어 검출하게 되는데 소용량 모터의 경우 모터상 권선에 직접 저항을 연결하여 측정을 하게 되는데 이것은 저항 양단의 전압차이를 검출하는 방식으로 수Ω 이하의 낮은 저항값의 저항을 이용하게 되고 이 저항에서 전력 손실이 발생하게 됨으로 상용의 서보 드라이버에서는 잘 사용하지 않고 있으며 판매되고 있는 일반적인 서보 드라이버에서는 홀센서를 이용하여 검출한다.
이렇게 검출된 전류의 값은 아날로그 연산에서는 그대로 사용이 가능하지만 디지털신호로 사용하기 위하여 A/D(Analog to Digital) 변환기를 연결하여야 한다.
최근에는 서보 드라이버 내부의 구성이 모두 디지털화되어가기 때문에 전류 제어기의 연산 또한 디지털신호로 마이크로 프로세서 내부 연산에 의하여 계산되어진다. 따라서 전류의 검출 데이터는 아날로그신호이므로 반드시 디지털신호로 변환하는 과정이 필요하게 되며 삼각파 발생회로 역시 마이크로 프로세서의 내부 연산에 의하여 실시된다. PWM신호의 발생도 연산에 의하여 처리되는데, 최근에는 이러한 전류 제어기가 하나의 LSI(집적회로)에 ASIC(주문자방식 집적회로)으로 구성되기도 한다.
일반적으로 아날로그 연산의 경우에는 삼각파의 기준 주파수에 따라 PWM 주파수가 설정되며 일반적으로 10KHz~40KHz의 주파수를 사용하고 있다. 디지털 연산의 경우 마이크로 프로세서에서 1회 연산하는 시간이 PWM  주파수가 되는데, 이를 전류 제어기 샘플링타임 (Current Control Sampling Time)이라고 하며 보통 수백 μsec 혹은 수십 μsec이 적용된다.
디지털 연산에서 샘플링타임은 매우 중요한 의미를 가지며 샘플링타임이 너무 길어지면 모터 제어에 있어서 상당히 불안한 요소를 야기시킬 수 있다.

4. AC 서보 모터의 전류 제어
AC 서보 모터의 전류 제어방법은 DC 서보 모터의 경우보다 훨씬 더 복잡한 제어구조를 갖는다. AC 서보 모터에 있어서는 3상 전류를 제어하여야 하기 때문에 3상 변환기가 있어야 하고 모터 회전자의 위치와 공급 전압의 위상이 일치되어야 하기 때문에 모터 회전자의 위치를 검출할 수 있는 센서가 필요하다. 이러한 AC 서보 모터의 전류 제어 루프를 포함한 속도 제어 PWM방식의 서보시스템은 <그림 5>와 같다.
AC 서보 제어시스템과 DC 서보 제어시스템의 가장 큰 차이는 DC 서보 모터에서 브러시가 하는 일을 AC 서보시스템에서는 정기적으로 수행하여 주어야 하기 때문에 상변환기와 회전자 위치 검출이 필요한 것이다. 그러므로 회전자 위치 검출에 의한 상변환기의 상위부분에 대하여는 AC 서보시스템이나 DC 서보시스템의 차이가 없다. 즉 속도 제어 루프 및 위치 제어 루프의 형태는 같다는 결론이 된다.


최근 일반 산업용에는 레졸버를 사용하지 않고 있으며 엔코더방식이 주류를 이룬다. 엔코더에 대해서는 뒤에서 좀더 자세하게 알아보기로 하고 엔코더의 출력은 펄스열로써 출력이 되어짐으로 회전자의 위치를 검출하기 위하여 엔코더의 펄스열을 계수하면 회전자의 현재 위치를 알 수 있다. 이렇게 회전자의 현재 위치정보와 속도 제어기로부터 받은 전류(토크)명령을 3상 상변환기에 주어지면 상변환기는 3상 교류 전류명령으로 전환하게 된다.
상변환기는 단상 입력에 대하여 120˚위상차이를 갖는 3상 출력을 발생하게 되며 이때 각 상의 현재 위상은 회전자의 위치를 참조하여  발생하게 된다. 이것을 쉽게 풀어보면 다음과 같은 수식으로 표현할 수 있다.
Cu=Cc×sin(ωt)
Cv=Cc×sin(ωt+2/3π)
Cω=Cc×sin(ωt-2/3π)
Cc : 전류 지령
Cu, Cv, Cω : 각 상의 전류 지령
ωt : 회전자의 현재 위치
위와 같이 U, V, W 각 상 120˚씩 위상차이를 갖는 것은 서보 모터 내부에서 회전자계를 형성하기 위한 것이다. 실제 모터의 내부에는 N과 S 두개의 자극으로 구성되어 있지 않고 여러 개의 극으로 형성되어 있어서 모터 1회전당 정기적으로는 여러 주기가 반복된다.
이렇게 생성되어진 각 상별 전류명령값은 전류 검출기로부터 되먹임되는 실제 전류값과 비교하여 각 상별 전류 제어기로 주어지고 다시 PWM 발생기를 통하여 전력 변환기로 입력되게 된다.
그러므로 전류 제어기를 비교하여 보면 DC 서보 드라이버보다 AC 서보 드라이버가 3배 더 복잡하여진다. 그러나 최근에는 서보 드라이버의 디지털화가 진행되어짐에 따라 이러한 연산들이 모두 서보 드라이버 내부에 들어있는 마이크로 프로세서에 의하여 연산되어진다.
따라서 보다 고속의 연산을 수행하는 마이크로 프로세서가 필요하게 되고 이렇게 고속의 연산을 하게 됨에 따라 복잡하고 정교한 제어 알고리즘을 수행할 수 있게 되었다.
최근에는 모터 제어 전용의 고속 마이크로 프로세서 혹은 디지털 시그널 프로세서(DSP, Digital Signal Processor)가 채용되고 있고 이렇게 디지털화되어감에 따라 서보 드라이버의 크기도 상당히 줄어들고 있다. <그림 5>에서 속도 검출회로는 펄스열의 입력을 받아 그 주파수에 따라 그 크기가 변하는 아날로그신호로 변경을 하거나 혹은 디지털계수에 의하여 펄스열의 주파수를 측정하여 속도를 검출하는 장치이다.
아날로그 변환은 여러 반도체 제조사에서 판매를 하고 있는 F/V 변환기(Frequency to Voltage Converter)를 이용하고 있는데, 이는 저속의 영역에서 펄스열의 주파수가 낮고 폭의 변화가 크게 나타나므로 잘 적용하지 않고 있다.
디지털 변환은 단위시간당 입력되는 펄스를 계수하여 계산하는 방법과 엔코더 펄스와 펄스 사이에 일정한 주파수의 클럭을 계수하는 방법을 사용하고 있다. 이렇게 엔코더로부터 회전자의 속도를 구하는 방법은 고속과 저속의 영역으로 나누어 상호보완적으로 두개의 방법을 같이 사용한다.

5. 회전 속도와 회전자 위치의 검출방법
5.1 회전자의 속도 검출방법
지난호에서 엔코더에 대하여 잠시 설명하였듯이 절대위치 엔코더의 경우는 제조사별로 그 특징이 다르기 때문에 제조사의 상세 자료가 있어야 하고 상대위치 엔코더는 3가지 신호를 출력한다. 기준 펄스열이 A상과 이보다 90˚위상이 늦은 B상이 1회전당 엔코더의 정밀도만큼 펄스를 출력하고 1회전당 특정한 위치에서 1개의 펄스를 출력하는 Z상을 가지고 있다.
회전자의 속도를 검출하기 위하여 Tacho-Generator 혹은 Encoder를 이용하는 방법이 있는데, 여기에서는 엔코더를 이용하여 디지털 연산에 적용하기 쉬운 계수방법에 대하여 좀더 자세히 알아보면 다음과 같다.
먼저 엔코더 펄스열을 계수하여 회전속도를 알아내는 방법에서 회전속도와 엔코더의 펄스수는 다음과 같은 수식으로 나타내어진다.
회전속도=(카운트 펄스수/단위시간) / 1회전당 엔코더 펄스수
그리고 엔코더의 펄스폭을 검지하는 방법은 다음과 같이 표현되어진다.
회전속도=(1/엔코더 펄스주기(폭)) × 단위시간/1회전당 엔코더 펄스수
위의 식에서 엔코더 펄스의 주기는 엔코더 펄스 하나의 시작에서 다음 시작때까지 고속의 펄스열을 계수하여 그 시간을 계산하고 이를 이용하여 다시 회전속도를 계산하게 된다.
위의 식에서 보는 바와 같이 펄스계수방식은 저속의 경우 단위시간에 입력되는 펄스의 수가 작아 저속으로 되면 그 분해능이 나쁘게 되고 펄스폭을 측정하는 방법은 고속으로 될 경우 펄스폭이 짧아져서 펄스폭을 계산하는 정밀도가 낮아져 서로간의 문제점을 안고 있다.
그래서 일반적으로 100rpm~200rpm 미만의 경우에는 펄스폭을 검출하여 속도를 계수하는 방법을 사용하고 그 이상이 되면 펄스수를 계수하여 회전속도를 구하는 방법을 사용한다. 여기서 펄스수를 계수하여 회전속도를 검지하는 방법을 예제로 다루어 보면 다음과 같다.
1회전에 1000개의 펄스를 발생하는 엔코더가 있고 1초 간격으로 펄스수를 계수하였을 때 24000개의 펄스가 계수되었다고 하면 다음과 같이 계산되어진다.
회전속도(rps)=24000/1/1000=24
회전속도(rpm)=24×60=1440rpm
과 같이 계산되어진다.
위와 같은 방법으로 계수하는 것을 디지털 회로로 구성하면 다음과 같다.




일정 시간의 주기를 발생시키는 74191은 Loadable 2진 Counter로서 발진기에서 들어오는 펄스를 Down Count하여 영(0)이 되는  순간 펄스를 발생시키고 다시 특정한 값을 Load하여 Down Count하게 됨으로 계속해서 일정한 주기마다 이벤트(Event)를 발생시킨다. 그러므로 이벤트 발생시 loading되는 값을 바꾸게 되면 Event시간의 주기를 바꿀 수 있게 된다.
74390은 BCD Counter로 엔코더에서 들어오는 펄스열을 카운트하게 되는데 Event 발생시마다 클리어됨으로 만일 엔코더의 펄스 주파수가 일정하다면 같은 수의 카운트가 이루어 지게 된다. Event에 따른 Clear시간은 매우 중요하게 되며, 만일 Event시간이 정확하지 않는다면 정확한 속도의 검출도 할 수가 없다.
74573은 8-BIT Latch회로로서 Event시간에 카운트된 값을 Latch하여 표시부로 데이터값을 전달하여 주는 동작을 한다. 이때 Latch로서 데이터값을 다음 카운트 Event시간까지 지속시켜야 현재의 값을 알 수 있다.
만일 그렇지 않으면 계속하여 변하는 카운트값을 가지기 때문에 판독할 수가 없다.
5.2 회전자의 위치 검출방법
회전자의 현재 위치를 검증하는 방법은 일반적으로 엔코더의 Z상을 기준으로 하여 현재 위치를 카운트하게 된다. 따라서 엔코더에서 Z상의 출력이 나타나는 시점을 회전자의 위치 초기점이라고 하고 여기에서부터 회전자의 360˚ 위치를 엔코더 A상과 B상의 분해능(1회전당 펄스수)과 관계하여 계산하게 된다. 그러므로  엔코더의 분해능이 높으면 회전자의 위치를 검출하는데 있어서 더욱 정밀한 데이터를 구할 수 있다.
AC 서보 모터의 경우에는 회전자의 초기 위치가 중요한 데이터가 되는데 AC 서보 모터의 경우에서 회전자의 위치에 따른 위상과 같은 전압을 모터 3상 단자에 인가해 주어야 하기 때문이다.
그러므로 모터에 전원을 투입하여 기종하고자 할 경우에 반드시 회전자의 위치를 알고 있어야 하는데, 이러한 이유로 AC 서보 모터에는 A, B, Z상 이외에 U, V, W상을 가지고 있다. 최근에는 모터의 엔코더에서 U, V, W상을 출력하기 때문에 모터와 드라이버간의 연결선이 많아지고 복잡하여지는 관계로 A, B, Z상과 U, V, W상을 같이 출력시키는 방법도 나오고 있으며 그밖의 여러 가지 방법들이 연구되고 있으며 상용화되었다.
전원 투입시 회전자의 초기 위치는 엔코더의 U, V, W상의 데이터를 가지고 지정하게 되며 일반적으로 정상 운전시에는 엔코더의 펄스수를 카운트하고 계산하여 설정하도록 하고 있다. 회전자의 위치는 위에서 설명한 바와 같이 엔코더 Z상을 기준으로 카운트하기 때문에 엔코더의 Z상 출력시 엔코더의 펄스를 초기화하고 재 카운트하는 방법을 이용하여 계산하고 있다.
회전자 위치를 검출하기 위하여 <그림 6>과 같이 회로를 구성하면 엔코더의 펄스로부터 회전자의 위치정보를 읽어낼 수가 있다. <그림 6>에서 엔코더의 입력 펄스 A, B상으로 정회전과 역회전을 판별하여 정회전을 할 때는 UP 카운트를 하고 역회전을 할 때는 DOWN 카운트를 하도록 하고 있다.
이렇게 정역을 판별할 수 있는 것은 엔코더의 A상과 B상은 상호 90˚의 위상차이를 가지고 있으며 정회전시 엔코더 A상이 90˚위상 앞서게 되고 역회전시에는 B상이 90˚위상 앞서게 되는데, 이때 B상의 펄스가 Low에서 High으로 변하는 순간 A상의 상태를 읽으면 그때의 값으로 정역을 알 수 있다. 이렇게 엔코더 펄스출력 A상과 B상으로 정역을 판별하여 증가 펄스와 감소 펄스를 만들어 74192로 Up/Down 카운트를 하게 되면 된다.
이때 엔코더의 Z상 펄스로 하여금 Z상 펄스가 발생할 때마다 74192 카운트를 Clear하거나 Load하여 주면 회전자가 1회전할 때마다 항상 일정한 위치에서 위치 카운터가 Clear되고 Load되게 된다. 그러므로 엔코더의 위치로 회전자의 위치를 판별할 때 누적오차가 발생하지 않고 엔코더 정밀도내의 카운트가 발생하게 된다. 회전자가 정회전을 할 때 엔코더의 Z상이 발생되면 74192 카운터를 클리어하여 영(0)으로 만들고 역회전을 할 때 Z상이 발생되면 74192 카운터에 엔코더 정밀도와 같은 숫자를 로드하여 주면 된다.


카운터 IC 74192에서 가지고 있는 값을 7-SEG LED로 표시하면 엔코더의 정보를 읽어낼 수가 있는데 여기에서는 전원 투입시 회전자의 위치정보를 U, V, W상으로부터 받고 있지 않기 때문에 최소한 회전자가 회전하여 Z상이 한번 출력되어 카운터를 초기화해 주어야 비로소 엔코더의 펄스값과 회전자의 위치값이 일치하게 된다. 그러므로 전원 투입시 회전자의 위치를 정확히 알 수 있도록 하려면 엔코더의  U, V, W상의 데이터를 가지고 카운터 74192에 초기 데이터를 loading하여 놓을 수 있는 회로를 추가로 설치하여야 한다.


지금까지 서보 드라이버에서 모터를 구동하기 위한 전력 제어방법과 이에 따른 몇가지 중요 기술에 대하여 설명하였다. 서보 드라이버는  쉽게 사용자의 명령에 의하여 모터를 마음대로 제어할 수 있도록 하는 구동장치이며 쉽게는 전력 변환장치라고 생각하면 된다.
이렇게 서보 드라이버를 통하여 서보 모터를 구동할 때 AC 서보 모터 혹은 DC 서보 모터에 따라서 각각 제어용 전력 변환기에 차이가 있고 AC 서보 모터는 회전자의 위치와 공급 전력의 위상을 맞추어야 하기 때문에 회전자의 위치 검출과 이에 따른 방법을 검토해 보았다.
[출처] 서보 모터의 전력 제어 |작성자 북청물짱

댓글 없음:

댓글 쓰기