C2000TM MCU를 이용한 레졸버 -
디지털 변환으로 시스템 비용 절감
이 기고글에서는 TI의 C2000 마이크로컨트롤러를 이용하여 이러한 정보를 효과적으로 처리하고 더 높은 비트 정확도로 속도 및 위치 피드백을 얻을 수 있다는 것에 대해서 설명한다.
글/라메시 라마무시(Ramesh Ramamoorthy),
C2000TM 마이크로컨트롤러 애플리케이션 엔지니어
텍사스 인스트루먼트
보통의 정밀 위치 서보 제어 시스템은 레졸버나 인코더를 이용한 제어 유닛으로 샤프트 위치 피드백을 제공한다. 레졸버는 인코더보다 견고해 상당한 정도의 환경 오염이나 소음을 견딜 수 있다. 인코더 출력은 펄스 트레인 형태인 반면, 레졸버 출력은 진폭 변조 사인파 신호 형태로서 위치 정보를 추출하기 위해서 추가적인 프로세싱을 필요로 한다. 이 백서에서는 TI의 C2000 마이크로 컨트롤러를 이용하여 이러한 정보를 효과적으로 처리하고 더 높은 비트 정확도로 속도 및 위치 피드백을 얻을 수 있다는 것에 대해서 설명한다.
레졸버는 로터에 1차 권선을 갖고 스테이터에 2개의 2차 권선을 갖는 회전 트랜스포머이다. 2차 권선들이 상호 90도 각도로 변위를 이루고 있다. 그러므로 이차 권선들을 연결하는 1차 권선 자속이 로터 위치의 사인 및 코사인에 비례한다. 1차 권선을 전압 ep =Emsin(ωct)로 여기하면 이차 권선들로 유도되는 전압(사인 및 코사인)은 다음과 같다:
여기서, ωc는 여기 주파수, θ는 로터 위치이며, k는 일차 대 이차의 변환 비율이다.
로터의 1차 권선을 구동하는 것이 또 다른 과제이다.
슬립 링은 유용하기는 하지만 견고성이 떨어진다. 이러한 이유에서 그림 1에서 보는 것처럼 스테이터와 로터의 한쪽 끝에 동심원적으로 보조적 트랜스포머를 이용하고 있으며 스테이터는 일차 권선을 지탱하고 외부적 소스로부터 여자를 취하고 로터는 2차 권선을 지탱하고 레졸버 트랜스포머의 일차 측으로 피드한다.
레졸버 설계시의 과제
레졸버 출력 신호는 삼각법(trigonometry)적으로 상호 연관되어 있으므로 다음과 같은 간단한 공식을 이용해서 로터 위치 정보를 추출할 수 있다:
이 수학식의 정확도는 이 공식의 오른쪽 편에 있는 파라미터들의 품질에 의해서 좌우된다. 그것은 바로 2차 권선 전압이다. 이들 전압은 전기적 위상 편이, 이차 권선들 사이의 변환 비율 불일치, 이차 권선들의 기계적 편차 등으로 인한 오차 요인들을 포함한다. 이러한 근원적 문제들에 더해서 접지 잡음, 제어 회로의 이득 불일치 및 비선형성, 캐리어 품질 문제 같은 외부적 요인들이 또 다른 정도의 오차를 주입한다. 그러므로 제어 하드웨어와 소프트웨어를 설계할 때는 유입되는 오차를 되도록 많이 제거하도록 주의를 기울여야 한다.
간단한 방법
가장 간단하고 손쉬운 방법은 위의 공식을 구현하는 것이다. 이차 신호들 값을 이들의 피크로 샘플하여 더 높은신호대 잡음비를 달성하도록 하고 이것을 위의 공식에 대입해서 그림 2에서처럼 이용하는 것도 한 방법일 수 있다.
하지만 이 방법은 간단하기는 하나 품질이 떨어진다. 시스템 잡음 때문에 각도 계산이 더 높은 지터를 포함할 것이고 그럼으로써 필터를 필요로 하게 된다. 그런데 문제는 필터는 위상 지체를 일으키고 이러한 위상 지체는 속도에 따라서 선형적으로 변화하므로 이 방법의 적합성을 떨어트리게 된다는 것이다. 그러므로 위상 지체를 일으키지 않으면서 출력 지터를 필터링할 뿐만 아니라 로터의 속도 계산을 제공하는 것에 더해서 계산의 정확도를 향상시키기 위해서 옵저버를 필요로 한다.
옵저버
옵저버는 모든 동적 조건으로 관찰하고자 하는 파라미터를 최소한의 오차로 추적하도록 설계된 것이다. 그러므로 기준 값과 계산 값을 필요로 하고 관찰된 오차에 기반해서 교정 조치를 취한다. 응답 시간을 최소화하기 위해서 부하 토크 효과를 반영할 수 있는 옵저버를 설계할 수 있으나 그러면 부하 관성도 필요로 하게 되고 부하에 종속적이게 되므로 이 글에서의 평가 작업에서는 이에 대해서는 고려하지 않았다. 이 경우에서는 옵저버는 기본적으로 그림 3에서와 같은 특정한 작업들을 수행하기 위해서 소수의 기능 블록들을 필요로 하는 PLL이 된다.
신호 청소:대역 통과 필터
옵저버가 견고하려면 옵저버가 입력으로 취하는 파라미터가 되도록 깨끗해야 한다. 레졸버로부터의 사인 및 코사인 피드백은 아날로그-디지털 컨버터(ADC)에 의해서 읽히기에 앞서서 피드백 프로세싱 하드웨어의 접지 잡음, 동적 오프셋, 이득 변동에 의해서 오염될 수 있다. 이러한 대부분은 이들 신호를 대역 통과 FIR 필터를 통해서 통과시킴으로써 보정할 수 있다. 이러한 필터의 통과대역은 캐리어 주파수 부근이고 대역 폭은 최소한 샤프트 속도의 두 배이다. 이렇게해서 FIR 출력 신호의 주파수 스펙트럼을 Fc + Fb 및 Fc - Fb로 제한함으로써 피드백 신호로부터 동적 dc 드리프트와 대부분의 백색 잡음을 효과적으로 제거할 수 있다.
이러한 프로세스는 이들 신호로 추가적인 비트의 정확도를 추가함으로써 위 공식에서 분자와 분모의 정확도를 실제적으로 향상시킨다. 샘플링 주파수가 높고 대역폭이 낮을수록 정확도가 높아진다. 하지만 현실적으로 CPU 로딩을 고려해서 샘플링 주파수의 상위 한계와 FIR필터의 차수를 결정하고 최대 로터 속도 요구에 따라서 대역폭 한계를 정할 수 있을 것이다. FIR 필터의 차수가 낮으면 통과 대역을 정밀하게 포지셔닝하기가 어려워 대역 폭이 필요보다 높아지게 된다. 이러한 모든 제약에도 불구하고 정확도를 향상시킬 수 있다. 하지만 여전히 지터가 완전히 없지는 않으므로 필터를 필요로 한다.
데시메이션(decimation)
ADC의 풀 스케일 범위를 활용하고 신호대 잡음비를 향상시키기 위해서는 FIR 출력이 사이클 피크에 근접하지 않을 때는 무시하는 방법을 쓸 수 있다. 그러면 사이클 피크를 출력하는 경우에 대해서만 FIR 연산을 수행하도록 하면 되므로 자연스럽게 피크 중의 하나만 반영할 때는 2N:1 및 피크를 모두 반영할 때는 N:1의 데시메이션이 된다. 2N:1의 데시메이션일 때는 샘플링이 캐리어 주파수에 동기적이므로 신호를 샤프트 속도에 상응하는 주파수(Fb)로 복조한다. 반면에 N:1의 데시메이션일 때는 복조된 신호가 사이클 피크에 상응하는 캐리어 주파수이면서 Fb의 엔벌로프를 유지한다. N:1일 때는 양의 캐리어 피크와 음의 캐리어 피크를 구분하기 위해서 추가적인로직을 필요로 한다. 데시메이션 비율이 절반이면 캐리어 사이클 당 두 배의 샘플 수를 제공하는데, 이를 선택하는 것은 CPU 용량과 시스템 요구에 따라 달렸다.
오차 계산
오차를 계산하기 위한 가장 간단한 방법은 피드백 신호의 각도 탄젠트를 구하고 관찰된 값과 비교하는 것이다. 또 다른 널리 이용되는 방법은 계산된 각도의 사인 및 코사인을 입력 신호의 사인 및 코사인과 교차 곱하기를하고 한 값에서 다른 값을 빼는 것이다. 이것을 식으로 표현하면 다음과 같다:
sin(θ-ф) = sinθ.cosф - cosθ.sinф
When θ∼ =ф, sin(θ-ф) ∼ = θ-ф
두 번째 방법은 기준 값과 계산 값이 차이가 클 경우다.
이러한 경우에는 첫 번째 방법과 달리 오차가 사인에 비례하고 비선형적이 된다. 오차 각도가 2사분면 또는 3사분면 이내일 때는 이 두 번째 기법은 응답 시간이 늘어날 수 있다. 정상적인 동작 상황이라면 이러한 매우 큰 오차가 발생되지 않을 것이다. 다만 이 실험에서는 선형성에 대한 신뢰도를 높이기 위해서 각도 탄젠트 기법을 이용하고 있다.
필터
신호를 대역 통과 필터를 통해서 통과시키더라도 기저대 대역의 잡음이 여전히 유입되어서 최종적 결과를 왜곡할 수 있다. 간단한 일차 필터를 이용해서 이러한 영향을 최소화할 수 있다. 소싱 신호는 오차 신호(DC)와 비교 했을 때 역동적으로 변화하므로(램프) 오차 신호를 필터링함으로써 어떠한 위상 편이나 왜곡을 삽입하지 않으면서 잡음의 영향을 낮출 수 있다.
대역 통과 지연 보정
FIR 필터의 출력은 입력 주파수에 상관 없이 탭 수에 비례하게 지연된다. N개 샘플이고 FIR 필터가 N+1 탭이라면 지연은 N.Ts/2이다. 여기서 Ts는 샘플링 시간이다.
N개 샘플이 한 캐리어 사이클에 걸쳐서 분포되므로 캐리어 사이클 절반의 지연이 발생한다. 이것을 블록 다이어그램에서 보듯이 로터의 현재 속도 계산을 기반으로 보정 할 수 있다.
루프 튜닝
이 시스템의 개방 루프 전달 함수는 다음과 같다:
그림 4는 이의 근궤적도(root locus plot)이다.
필요한 잡음 필터링 정도에 따라서 ωf를 선택할 수 있다. 루프 안정성을 위해서는 ωpi가 ωf보다 낮아야 한다. 폐쇄 루프 전달 함수는 다음과 같다:
이 옵저버의 안정 상태 오차는 로터 가속도에 비례한다. kp에 더 높은 값을 선택할수록 이 오차를 최소화할 수 있다. Kp, wz, wp1, δ, wn에 적정한 값을 선택함으로써 트랜션트 응답과 필터링을 원하는 수준으로 튜닝할 수 있다.
시험 셋업
하드웨어와 소프트웨어를 포함한 레졸버 인터페이스의 전반적인 성능을 평가하기 위해서 절대 인코더를 기준으로 이용하였다. 그러므로 이 테스트 벤치는 모터, 절대 인코더, 레졸버를 포함하였다.
하드웨어 인터페이스
그림 5는 레졸버 인터페이스의 하드웨어 회로도이다.
레졸버의 1차 권선을 10KHz로 10Vp-p의 사인 전압으로 여기한다. 이 전압은 타이머의 사인파 PWM 출력을 이용해서 발생되며 2개 스테이지로 필터링해서 고조파가 없는 가시적으로 깨끗한 사인파를 발생시킨다. PWMdither라고 표시된 신호를 GPIO를 통해서 GND로 연결한다. 레졸버로부터의 피드백을 C28x의 ADC 범위 내에 맞게 트리밍한다. 이 스테이지에서 오프셋/이득 드리프트로 인해서 오차를 주입할 수 있는데 이중의 일부는 FIR 필터를 이용해서 처리할 수 있다. 그러므로 소자 부품들을 선택할 때 적절하게 주의를 기울여야 한다.
소프트웨어 인터페이스
피드백을 160KHz로 샘플링해서(8배 오버샘플링) 캐리어 사인파당 16개 샘플을 얻는다. 초기 오프셋 보정 후에 이들 신호들을 그림 3에서 보는 제어 블록 다이어그램을 거쳐서 통과시키고 각도 계산 값을 구한다. Delfino MCU (TMS320F28335)에서는 CPU에서 부동소수점 연산을 이용해서 이를 구현하고, Piccolo 02x MCU(TMS320F28027)에서는 고정소수점 CPU를 이용해서 이를 구현한다.
Piccolo 03x MCU(TMS320F28035)는 고정소수점 CPU나 부동소수점 병렬 실시간 CLA(control law accelerator)로 프로세싱을 할 수 있다. 캐리어 파장 또한 이 레이트로업데이트하고 ADC 샘플링 인스턴스를 포지셔닝해서 피크값일 때 레졸버로부터 변조 피드백을 포착한다.
테스트 절차
?
테스트 시에는 모터를 차단하고 로터를 정지 상태로 유지한다. 레졸버와 절대 인코더로부터의 위치 계산 값을 구하고 비교한다. 특정 위치에 대해서 절대 인코더는 단일의 고유한 값을 제공하고, 레졸버는 분수적으로 변화하는 일련의 값들을 제공한다. 레졸버 출력의 평균 값을 인코더 출력과 비교해서 평균 오차를 구하고, 인코더 출력의 최악 상황 편차를 이의 평균과 비교해서 시스템 잡음 혹은 디지털화 오차를 구한다. 이 오차가 낮을수록 분해능 및 성능이 높은 것이다. 그림 6에서는 C2000 Piccolo와 Delfino MCU를 이용해서 이 테스트를 전체적인 회전 사이클에 걸쳐서 다양한 로터 위치에 대해서 반복하고 이 결과 값을 도표로 표시한 것이다.
최대 평균 오차는 약 25분각이라고 할 수 있다. 그러면 인코더 초기화 시에 발생되는 오차를 처리하기 위해서 교정을 필요로 한다. 레졸버와 인코더 사이에 기준선을 설정하기 위해서 테스트를 시작하기에 앞서서 레졸버 출력이 약 0일 때 인코더 출력이 0이 되도록 수동적으로 리셋했다. 그런데 이렇게 하니까 모든 위치일 때 오차 값이 양으로 유지되게 되었다. 만약에 기준선을 오차가 전체적인 사이클에 걸쳐서 양 및 음으로 균등하게 스윙하도록 설정했더라면 최대 오차는 약 12분각밖에 되지 않았을 것이다. 이 오차는 기계적, 전기적, 전자적, 양자화, 수치적 반올림 오차를 포함해서 레졸버 시스템의 모든 오차의 누적 총합이라는 점에 유의해야 한다. 측정된 분해능은 Delfino 디바이스를 이용했을 때 13비트 이상이다. 추가적인 비트의 데이터를 추출할 수는 있으나 이러한 데이터는 일관성이 떨어짐으로써 실제 각도를 표현하지 못할 것 이며 수 LSB의 오차를 발생시킬 것이다.
개방 루프 파라미터들의 위치에 따른 영향
개방 루프 시스템에서 조절할 수 있는 파라미터는 루프 이득(Kp), 영점(ωpi), 극점(ωf)이다. 폐쇄 루프 안정성을 위해서는 ωpi가 ωf보다 낮아야 한다. 대체적으로는 폐쇄 루프 극점이 원점에 가까울수록 시스템을 느려지게 한다.
그림 7(a)에서와 같이 ωpi가 ωf에 가까우면 원점에서의 개방 루프 극점이 다소간 왼쪽으로 이동하고 복소수 쌍으로 분할되어서 모든 Kp에 대해서 원점에 가깝게 유지된다. 한편으로 그림 7(b)에서처럼 ωpi가 0에 가까우면 모든 Kp에 대해서 원점에 가깝게 지배적인 폐쇄 루프 극점이 발생한다. 그러므로 그림 7(c)에서처럼 중간적 값을 필요로 한다. Kp를 적절히 선택함으로써 양호한 성능을 달성할수 있다.
Kp가 낮으면 폐쇄 루프 극점이 원점에 가깝고 필터링효과가 지배적이다. 이 또한 시험을 통해서 확인할 수 있다. 하지만 일부 불량한 샘플이 간간히 발생함으로써 디지털화 오차를 악화시킬 수 있다.
안전성 측면
사인 및 코사인 피드백의 건전성을 확인하는 것이 중요하다. 전체적인 시스템의 충실도가 여기에 달려 있기 때문이다. 신호 중의 하나가 훼손되거나 누락되는 일이 발생할 수 있으며 제어 시스템이 이러한 발생에 대해서 인지할 수 있어야 한다.
피드백에 대해서 간단한 삼각법(trigonometry)을실시함으로써 sin2θ′+ cos2θ′= 상수 인지를 확인할 수있다. 잡음과 오프셋을 반영하기 위해서 소량의 변화를 허용할 수 있을 것이다. 마찬가지로 루프 오차 또한 모니터링해야 한다. 정상적인 조건일 때는 이 오차가 0에 가까워야한다. 실제적인 모터 드라이브는 관성이 한정적이며 그러므로 비정상적 속도 변화가 일어날 가능성이 거의 없다. 그러므로 어떠한 높은 각도 오차는 루프 결함을 나타내는 것이므로 이를 식별할 수 있어야 한다.
요약
이 기고글에서는 C2000 Piccolo와 Delfino를 이용해서 레졸버-디지털 변환을 전체적으로 평가하였으며 측정된 정확도는 10KHz 사인파로 13bit이다. 이 기능은 낮은 가격대의 낮은 핀 수 디바이스를 이용해서 단독형 솔루션으로 구현하거나 또는 아니면 높은 핀 수 디바이스를 이용해서 대형 모터 제어 시스템의 일부분으로서 구현할 수 있다. 특정한 요구에 적합하게 샘플링 주파수와 CPU로딩을 절충할 수 있다.
C2000 MCU가 레졸버-디지털 디코딩을 처리하는 것을 평가하고자 하는 고객들을 위해서 다음과 같은 특성의 새로운 C2000 MCU 레졸버 키트를 제공하고 있다:
◎ 저가의 MCU로 고가의 레졸버-디지털 컨버터 칩셋을 대체하여 시스템을 간소화하고, 비용을 절감할 수 있다.
◎ MCU에서 레졸버-디지털 디코딩 외에도 추가적인 아날로그-디지털 컨버터(ADC) 샘플링 및 프로세싱, 인코더 및 홀 인터페이스, DSP 프론트 엔드, 스테이트 로직, 기능상의 안전 지원 작업, 전체 제어루프와 같은 기타 소프트웨어로 프로그래밍 가능한 실시간 기능을 수행하여 기능을 확장할 수 있다.
◎ 완벽한 하드웨어를 제공하고 C2000 controlCARD 호환 PCB로 구성할 수 있다. 여기에는 소프트웨어 디버그를 위한 온 보드 JTAG 에뮬레이션, 필터링 기능이 있는 레졸버 인터페이스, UART 및 SPI 인터페이스, 디버그를 위한 디지털-아날로그 컨버터(DAC) 출력 4개 및 15V 전원을 포함한다.
◎ 소프트웨어 및 하드웨어 개발 패키지를 포함한다.
- 소프트웨어: C2000 controlSUITE 및 Code Composer StudioTM 통합 개발 환경(IDE), 임베디드 소프트웨어 개발을 위한 이클립스(Eclipse)기반 IDE 무료 다운로드
- 하드웨어: 자료, BOM(build of materials),PCB 설계 파일 전체 빌드
◎ 다음의 세 가지 C2000 controlCARD(모두 개별 구매 가능)에서 실행되는 네 가지 소프트웨어 프로젝트 종류를 지원한다: TMDSCNCD28335(부동 소수점),TMDSCNCD28035(고정 소수점 또는 병렬 CLA(control law accelerator)), TMDSCNCD28027(고정 소수점)
<반도체네트워크 8월>