엔코더 RPM 측정 - enkodeo RPM cheugjeong

이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.

본 발명에서는 TMS320F2833X계열의 TI사의 제공하는 DSP를 사용하여 M/T방식을 구현할 수 있는 방법을 제시하고 있다. M/T방식이 M방식과 T방식에 비해서 모터의 속도를 엔코더 신호를 통해서 계산할 때, 더 정확하고 효율적으로 계산할 수 있다.

그러나 TMS320F2833X는 래치 기능이 없기 때문에 M/T 방식을 기본적으로 제공하고 있지 않는데, TMS320F2833X가 가지고 있는 다른 기능 중에 하나인 캡쳐 (Capture) 기능을 이용하여 M/T방식을 구현할 수 있다. 이렇게 TMS320F2833X 계열의 DSP 칩을 이용하여 M/T방식을 구현하게 되면, FPGA와 같은 추가의 하드웨어를 사용하지 않기 때문에 비용을 줄일 수 있고, PCB의 면적도 줄어들게 된다. 부가의 하드웨어 없이 TMS320F2833X 계열의 칩만을 이용하여 M/T를 구현함으로써 얻게 되는 이득이 본 특허의 핵심중 하나이기는 하나, TMS320F2833X의 DSP 칩이 아닌 캡쳐 기능이 있는 DSP 칩에서도 본 발명을 구현할 수 있다.

엔코더는 회전형 모터의 축에 부착되어 모터가 회전하면 엔코더의 축도 같이 회전하게 되고, 엔코더에 전원이 제공되면 A, B상으로 불리는 신호를 내보내게 된다.

도2는 광학식 엔코더의 회전원판 및 동작 파형도이다. 도3은 엔코더의 동작을 나타내는 파형도이다. 도4는 엔코더 신호의 상태를 나타내는 파형도이다. 도5는 도4에 도시된 파형에 따라 상태의 변화와 카운터의 증감을 나타내는 도면이다. 도6은 엔코더 처리 진리표를 나타내는 도면이다.

도2에 도시된 바와 같이, 엔코더에는 회전형의 원판에 슬롯이 뚤려 있고, 원판의 뒤에는 LED 등을 통하여 빛을 투사한다. 원판이 회전하면 빛이 통과할 때와 하지 않는 상태에 따라서 QEPA와 QEPB, QEPI의 신호를 만들어 낼 수 있다. QEPA와 QEPB의 신호를 만들어 내기 위해서 2개의 원판을 이용하여 슬롯이 절반만 겹치도록 배치한다. 그러면 회전방향에 따라서 QEPA와 QEPB 신호의 순서가 바뀌게 된다. 또한 회전 속도에 따라서 QEPA, QEPB의 펄스의 주기가 변하게 된다. 이를 통해서 모터의 회전방향과 회전속도를 모두 검출할 수 있게 된다. 엔코더의 사양에 PPR(Pulse Per Revolution)이라는 것이 있다. 1회전당 몇 개의 펄스를 내보내는지를 나타내 주는 값이다. 이 값이 크면 보다 정밀한 위치 및 속도 계산이 가능하게 된다.

eQEP(enhanced Quadrature Encoder Pulse)모듈은 엔코더의 A, B상 신호의 출력을 이용하여 모터의 속도를 계산할 수 있도록 하는 하드웨어 기능을 지칭한다. 계속해서 eQEP 모둘을 통해서 펄스를 세는 원리를 설명한다. 도3에서는 엔코더 신호와 펄스 카운터 및 방향 신호가 어떻게 변하는지를 보여준다. QDIR=1인 경우에는 정방향으로 회전하고, QDIR=0인 경우에는 역방향으로 회전한다. QPOSCNT는 펄스카운터의 변화를 보여준다. +1은 펄스카운터가 1 증가하고 -1은 펄스카운터가 1 감소하였음을 보여준다.

이제 어떻게 QPOSCNT의 증가, 감소를 결정할 수 있는지를 설명한다. 도4에서는 엔코더 출력 신호 QEPA, QEPB가 0, 1의 값을 같게 될 때, 그 상태를 00, 01, 10, 11로 할당한 것을 보여준다. 파형의 상태에 따라 할당되는 것을 나타내는 것이 도4이고, 그에 따라 상태의 변화와 카운터의 증감을 나타내는 것이 도5이다. 도6에는 엔코더 처리 진리표가 도시되어 있다.

도7은 본 발명의 실시예에 따른 엔코더의 속도를 측정하기 위한 제어부의 내부 블럭도이다 특히 캡쳐 레지스터를 중심으로 도시한 것이다. 도8은 도7에 도시된 제어부의 동작을 나타내는 파형도이다.

도7과 도8을 참조하면, TMS320F2833X 계열의 DPS 칩에서 구비된 eCAP모듈은 이러한 처리를 통하여 엔코더 신호를 입력받아 QPOSCNT라는 레지스터(DSP 칩에서 데이터가 저장되는 일종의 기억장치)에 저장해주게 되고, 이 값을 읽게 되면 모터가 얼마만큼 회전했는지를 알 수 있게 된다.

이제 TMS320F2833X 계열에서 왜 쉽게 M/T를 구현할 수 없는지 설명한다. 일반적으로 M/T를 쉽게 구현하기 위해서는 캡쳐 기능이 있어야 한다. 캡쳐 기능이란 어떤 레지스터의 현재값을 특정 이벤트(어떤 조건이 만족되는 순간)가 발생시에 임시 기억 장소에 저장하는 것을 말한다.

M/T 방법에서 특정 이벤트란 펄스 카운터가 변화하는 순간이고, 임시 기억 장소에 옮겨야 할 값은 M값과 T값이다. M값은 QPOSCNT와 같이 펄스 카운터 레지스터를 사용하고, T값은 펄스가 변하는 순간의 타이머 값을 사용한다. 프리 런너 타이머(Free Running Timer)란 일정한 클럭으로 계속 증가하는 타이머를 의미한다. 타이머가 최대값에 도달하면 다시 0으로 초기화된다. 16비트 타이머인 경우에는 65535까지 증가하였다가 다시 0이 되고 증가를 시작한다.

캡쳐 레지스터가 있으면, POSCNTCAP과 TCAP값을 이용하여 이전에 캡쳐가 된 시점부터 현재 캡쳐가 된 순간까지의 평균적인 속도를 정확히 계산할 수 있다. 캡쳐 레지스터는 2개가 한 세트로 동작해야 한다. POSCNTCAP값만 읽은 상태에서 이벤트가 발생하여 TCAP이 새로운 값으로 바뀌어 버리면 안된다. 이런 오동작을 방지하기 위해서 캡쳐 인에이블 디스에이블(Enable/Disable) 기능이 필요하다. 디스에이블(Disable)되어 있는 동안에는 이벤트가 발생하여도 캡쳐 레지스터의 값은 변하지 않고 그대로 유지된다.

TMS320F2833X 계열의 DSP 칩에서는 캡쳐 이벤트가 발생하면 도8에서 볼 수 있듯이 프리 런너 타이머가 자동으로 리셋된다. 속도측정주기(속도측정인터럽트, 보통 1ms) 안에서 여러 개의 이벤트가 발생할 수 있는데, 이벤트가 발생할 때마다 프리 런너 타이머가 리셋된다고 하면, 마지막 이벤트에서 읽은 타이머 캡쳐값으로부터 시작 이벤트로부터 마지막 이벤트까지의 시간 증가를 알 수가 없게 된다. 그러므로 M/T 방법을 기존의 방식대로 구현하기 어렵다. 이러한 어려움으로 본 실시예에서는 인해서 타이머 캡쳐를 다른 방식으로 구현하기 위해서 TMS320F2833X의 eCAP기능을 사용한다.

도9는 도7에 도시된 제어부와 엔코더의 연결 및 그 동작을 나타내는 블럭도이다. 도10은 캡쳐 레지스터를 나타내는 블럭도이다. 도11은 본 발명에 의한 엔코더의 속도를 측정하는 방법을 나타내는 파형도이다. 도12는 본 발명에 의한 엔코더의 속도를 측정하는 방법을 나타내는 플로차트이다.

계속해서 도9 내지 도12를 참조하여 TMS320F2833X 계열의 eCAP 기능에 대해서 설명한다. eCAP기능은 특정 이벤트가 발생할 때, 특정 레지스터값을 캡쳐하여 또 다른 레지스터(캡쳐 레지스터라고 한다)에 보관하는 기능이다. 여기에서 이벤트는 TMS320F2833X 계열의 DSP 칩에서 핀으로 입력되는 신호의 에지(edge)가 되도록 설정할 수 있다. 이 기능을 사용하기 위해 회로를 도9와 같이 구성한다. eQEP모듈의 A, B 입력에 A상, B상 신호를 연결한다. A상과 B상 신호를 XOR 로직 게이트의 입력에 연결하고 그 출력을 eCAP모듈의 입력에 연결한다. 이렇게 함으로써 eCAP모듈의 입력에는 A펄스와 B펄스의 XOR 게이트의 신호처리 지연에 의해서 TMS320F2833X 계열의 DSP 칩에 구비된 카운터 값과 캡쳐 값이 동시에 변하지 않는 경우가 생길 수 있다. 이러한 경우에 대한 처리방법도 본 특허의 핵심 중에 하나이다. 모터 속도의 최대값에 의해서 펄스가 들어올 수 있는 최대값을 가정한다. 만약 100,000 rpm의 모터에 1024 PPR의 엔코더를 부착한 경우에, 10000/60ⅹ(1024ⅹ4) pulse/sec = 6826667 pulse/sec이고, 역수를 취하면, 0.146 us/pulse 가 된다.

위치정보를 저장하고 있는 카운터(QPOSCNT)를 읽은 후에 시간정보를 저장하고 있는 CAP레지스터를 읽는 도중에 새로운 카운터 펄스가 들어오면 CAP레지스터가 변하게 된다. 이렇게 되면 시간정보가 잘못되어 M/T 계산이 잘못된다. 이러한 현상을 없애기 위해서 카운터 펄스를 다시 한번 읽어서 이값이 이전에 읽은 값과 다르다면, CAP 레지스터가 잘못되었을 가능성이 있으므로 이값을 사용하지 않고 새로 읽은 CAP 레지스터 값을 사용한다.

전동기의 속도 측정을 M/T방식으로 하기 위해서는 TMS320F2833X 계열의 칩 구조상 eQEP 모듈과 eCAP모듈을 사용하게 된다. 그러나, TMS320F2833X 계열의 칩에 있는 eCAP은 랫치 기능이 없기 때문에 엔코더 카운트를 한번 더 읽어야 하는 경우가 발생한다. 속도 제어주기(=측정 주기)에 해당하는 인터럽트가 발생하면, 엔코더 카운트는 Position_Latch(QPOSLAT 레지스터)로 래치되어 저장 되어있다. 그러나 △T는 래치되지 않기 때문에, 인터럽트 발생 직후 바로 eCAP의 캡쳐 값을 차례로 읽어온다. 새로운 펄스가 들어오면, 캡쳐 값이 증가함으로 카운트는 Position_Latch(QPOSLAT레지스터)로 래치된 값이 아닌 Real_position(QPOSCNT레지스터)를 읽어온다.

측정 주기 인터럽트가 발생을 하면, 직후 위치_1(QPOSCNT 레지스터)값, CAP_1(CAP1~4까지 4개 레지스터)값, 위치_2 값(QPOSCNT 레지스터), CAP_2(CAP1~4까지 4개 레지스터) 값을 차례로 읽어 두 개의 위치 값이 같으면 CAP_1 값을 취하고, 위치 값이 서로 다르면 CAP_2 값을 취하였다. 이와 같이 동일한 기능의 값을 두 번 씩 취득하는 이유는 앞에서 설명하였듯이 속도 측정을 위해 레지스터를 읽는 도중 새로운 펄스가 들어오는 경우 발생하는 오차를 제거하기 위함이다.

즉, 그림 4에서와 같이 측정 주기가 되었을 경우 그림4에서의 (3)과 같이 펄스가 입력이 되면, 펄스가 한 개 증가된 것 처럼 인식하여 실제 속도 보다 높거나(펄스 개수는 증가되나 시간에 대한 정보 갱신이 되지 않는 경우), 낮게(시간 정보는 갱신 되었으나, 펄스가 갱신 되지 않는경우) 측정이 된다.

따라서, 그림 4에서의 (3)과 같은 펄스가 입력 되어도 오차가 없도록 측정하기 위해서 두 번 씩 측정을 하여, 펄스 수가 변화되었을 경우 앞에서 설명 한것과 같이 2_CAP 값을 취하여 오차를 제거한다.

이렇게 측정 된 위치 값은 기존 위치 카운터와의 차이(△M)를 구한다.

펄스 시간(△T)를 구하는 방법은 다음과 같다.

선정한 CAP값 중 CAP1~4중 가장 큰 값을 취득한다. 이렇게 구해진 CAP값은 새로운 시간이 되며, 기존 시간과의 차이로 펄스 시간을 구한다. 이렇게 구해진 △M과 △T를 이용하여 다음 수식4(RPM = 60*m / (Ppr * △T))와 같이 전동기 속도를 구할 수 있다.

본 발명을 통하여 M/T 방식의 전동기 속도 검출을 TMS320F2833X계열의 DSP기반에서도 가능하게 되었다. 그에 따라, TMS320F2833X계열의 DSP기반에서도 저속에서 고속까지 전 영역에서 전동기 속도 검출이 매우 정확하게 측정할 수 있으며, 측정 도중 새로운 펄스가 입력 되어도 그에 따른 오차가 없도록 속도 연산이 가능하다. 전동기 속도 측정 뿐 만 아니라, MPG(Manual pulse generator)와 같이 펄스를 이용하여 지령을 만들어주는 장치에서도 사용이 가능하다. 또한, 전동기 동기 운전등, 다른 장치에서 만들어진 펄스를 이용하여 제어하고자 하는 전동기의 속도 지령으로 이용 시에도 가능하다.

도12은 본 발명의 M/T 방법을 구현하는데 필요한 하드웨어 및 그 방법을 나타내기 위한 블럭도이다.

본 실시예에 따른 M/T 값을 구하기 위해서는 엔코더(60)에 제공되는 A상 신호와 B상 신호를 배타적 논리합하기 위한 로직게이트(62)와, M값 제공부(61), 계산부(64), 카운트(63)를 포함한다.

카운트는 예정된 값까지 A상 신호와 B상 신호가 출력되는 순간부터 카운팅을 한다. M값 제공부(61)는 A상 신호와 B상 신호를 입력받아 그 천이되는 횟수에 따른 M 값을 저장하고 출력한다. 로직게이트(62)는 A상 신호와 B상 신호의 기준 천이시점에 대응하여 천이되는 기준파형을 출력한다. 도12의 하단에 A상 신호와 B상 신호와 로직게이트(62)의 출력신호의 파형이 도시되어 있다.

계산부(64)는 2개의 레지스터를 구비하여, 속도를 측정할 시점(k1,k2)에 M값 제공부(61)에서 제공되는 제1 M값과, 제2 M값과, 카운트에서 제공되는 제1 카운팅값과 제2 카운팅값을 저장한다.

계산부(64)에 입력된 2개의 M값은 같은 값인지 비교하여 같은 값이면, 먼저 입력된 제1 카운팅 값과 제1 M값을 이용하여 M/T 방식의 속도를 구한다. 만약 같은 값이 아니면, 제2 카운팅 값과 제2 M 값을 이용하여 M/T 방식의 속도를 구한다.

이렇게 속도를 측정할 시점에 두번(k1, k2) 연속해서 M값과 T값을 입력받아 서로 비교하는 이유는 속도를 측정할 시점에 기준파형이 천이되면, 새로운 M값과 T값이 제공되고, 그 새롭게 제공된 값을 이용하여 M/T 방식의 속도를 구하게 함으로서 정확한 속도를 측정할 수 있게 된다.

도13은 본 발명에 의한 엔코더의 속도를 측정하는 방법을 나타내는 플로차트이다.

도13을 참조하여 본 실시예에 따른 속도 측정방법을 살펴보면, 모터의 속도를 측정하기 위해 캠코더에서 90도 위상을 가지고 제공되는 A상 신호와 B상 신호의 기준 천이시점에 대응하여 천이 타이밍을 가지는 기준파형을 생성한다.

이어서, 상기 기준파형이 천이되는 타이밍인 제1 기준천이시점에 상기 A상 신호와 B상 신호의 천이 횟수에 대응하는 제1 M 값을 저장한다(S1 참조).

이어서, 상기 기준천이시점에 상기 A상 신호와 B상 신호의 천이 횟수에 대응하여 카운팅되는 타이머에서 제공되는 제1 T 값을 제공한다(S2 참조). 여기서 카운팅 값이 T 값이 된다.

이어서, 상기 제1 기준천이 시점보다 예정된 타이밍 후인 제2 기준천이 시점에 상기 A상 신호와 B상 신호의 천이 횟수에 대응하는 제2 M 값을 저장한다(S3 참조).

이어서, 상기 제2 기준천이 시점에 상기 A상 신호와 B상 신호의 천이 횟수에 대응하여 카운팅되는 타이머에서 제공되는 제2 T 값을 제공한다(S4 참조).

이어서, 상기 제1 M값과 제2 M값을 비교하여 같으면(S5 참조), 상기 제1 M값과 상기 제1 T값을 이용하여 선택하여 상기 모터의 속도를 구한다(S6,S8,S9).

이어서, 상기 제1 M값과 제2 M값을 비교하여 같지 않으면(S5 참조), 상기 제2 M값과 상기 제2 T값을 이용하여 상기 모터의 속도를 구하게 된다(S7,S8,S9).

또한, 여기서 예정된 타이밍은 상기 기준파형의 1/2 주기보다 작은 것을 특징으로 한다.

또한, 상기 A상 신호와 B상 신호의 기준 천이시점에 대응하여 천이 타이밍을 가지는 기준파형은 상기 A상 신호와 상기 B상 신호를 배타적 논리합 로직을 수행하여 생성하는 것을 특징으로 한다.

이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.