Study/Motor Control

Encoder(엔코더)

얼죽아여뜨샤 2022. 8. 7. 20:47

세상에는 여러 종류의 모터가 있습니다. 종류는 크게 서보모터, DC모터, BLDC, AC모터 그리고 이번에 다뤄 엔코더 모터가 있습니다. 엔코더 모터는 DC모터에 엔코더가 부착되어 있는 모터로 속도 제어, 위치 제어에 용이하다.

 

1-1.엔코더 모터(Encoder motor)

엔코더 모터는 위치제어와 속도제어가 요구되는 곳에 사용된다. 

엔코더에서 나오는 펄스의 개수로 위치제어를 할 수 있으며, 펄스 사이의 시간 간격을 이용하여 속도제어를 할 수 있다.

 

1-2.로터리 엔코더

로터리 엔코더는 회전하는 물체의 회전속도(각속도 등)을 측정하기 위해 사용되는 기기로서 엔코더의 회전축에 측정하고자 하는 회전체의 축을 서로 연결하여 돌아가는 방향과 횟수를 정밀하게 측정하는 것을 목표로 사용된다.

 

2.엔코더의 종류

회전축이 돌아가는 정도를 측정하는 방식으로는 인크리멘탈(Incremental, 증분)방식과 앱솔루트(Absolute, 절대)방식이 존재한다.

 

  • 인크리멘탈

점진적으로 증가하는 형식을 쓰는 것으로 엔코더가 돌아갈 때 발생되는 파형의 횟수를 통해 회전축의 회전 속도를 측정한다. 

이는 일정한 방향으로 회전하는 기기에 사용하기 적합한 방식으로 DC모터와 같이 돌아가는 기기의 속도를 정밀하게 측정하기에 적합한 방식이다.

위 그림은 인크리멘탈 방식의 원리를 간단한 그림으로 나타낸 것. 

각 발광소자를 통해 나오는 빛이 A상, B상, Z상을 주기로 비추게 되는데 엔코더가 회전을 하게 되었을때 회전 슬릿으로 나오는 빛이 각 상에 비추었다가 가려지는 식으로 회전축이 돌아가는 속도를 측정하는 방식이다.

 

  • 앱솔루트

지점의 절대값을 설정해 엔코더가 축을 중심으로 돌던 도중 측정되는 해당 위치에서의 값을 전달하는 방식이다. 방식은 인크리멘탈 방식과는 달리 1바퀴 이상 돌아가지 않는 기기, 특정 각도로 미세하게 움직여야 하는 기기에 사용하기 적합한 방식이라 있다.

회전축이 움직이던 도중 특정 위치에서 이동한 만큼의 위치값이 전달되는데 해당 각도에 대한 값이 회전 슬릿의 구멍을 통해 나타내었으며 해당 슬릿을 통과한 빛의 위치 가중치를 고려하여 해당 엔코더가 회전한 위치값을 전달하게 된다.

 

3-1.PPR(Pulse Per Revolution)

PPR이라는 것은 엔코더를 한 바퀴 회전시켰을 때 한 채널에서 발생되는 펄스의 개수이다.

 PPR이 11이면 한 바퀴당 11개의 펄스가 나온다는 뜻이고, 400이면 400개의 펄스가 나온다는 의미이다.

엔코더 모터는 이 PPR을 기준으로 몇 바퀴 돌았는지, 회전속도는 어느 정도인지 등을 알려주는 모터이다.

 

3-2.분해능(PPR과 같은 의미??)

분해능은 엔코더의 성능 중 가장 중요한 요소로서 사용되는 기기의 특성 및 사양에 따라 달리 사용될 수 있다.

분해능이 높을수록 축의 회전 속도 및 위치를 미세하게 측정할 수 있는데 엔코더가 1회 회전하였을 때 발생하는 신호는 분해능의 갯수만큼 출력된다.

 

  • 예를 들어 인크리멘탈형 엔코더의 경우 분해능이 360인 엔코더에 연결된 기기가 1바퀴를 정확히 돌았을 때 총 360개의 펄스가 발생한다.
    즉, 한 바퀴를 정확히 회전하였을 때 360° 이므로 360/360 = 1° 이동할 때마다 1개의 펄스가 발생되는 것이다. MCU에 연결된 기기에 타이머를 설정해 특정 시간동안 MCU에 입력된 횟수를 토대로 엔코더의 회전 각속도를 측정해낼 수 있다.

 

  • 반면 앱솔루트형 엔코더의 경우 회전체가 회전한 위치를 알아내는 것이 목표로서 만약 분해능이 360일 경우 현재 회전체가 회전한 정도를 실제 도수 단위인 1° 단위로 위치를 측정합니다. 만약 90° 정도에 위치했던 회전체가 시계 방향으로 30° 이동하게 되면 엔코더의 출력값이 90°에서 120°로 출력되는 방식이다. 

 

4.출력 방식

인크리멘탈형 엔코더 경우 증분 방식으로 회전수를 측정하는 것이 목표이므로 MCU측에서는 Rising-Edge입력 인더럽트를 통해 회전율을 측정하게 된다.

 

  • 인크리멘탈형 엔코더의 출력 방식(시계방향 회전시)
    : A
    상과 B상의 주기는 같으나 회전 방향에 따라 위상차가 생겨 이를 사용하여 엔코더의 회전 방향을 예측할 있다.
    반면 Z상의 경우 B상보다 주기가 2배이며 회전 방향을 식별하지 않아도 되는 경우
    , 엔코더가 한쪽 방향으로만 돌기 때문에 이를 굳이 구분할 필요가 없을 경우 Z상만 사용해도 하다.

위 그림은 A상과 B상의 위상을 통해 엔코더의 회전 방향을 분석하는 방법이다.

엔코더의 축이 시계방향(CW)으로 돌 경우 A상이 B상보다 90° 앞서고 있으며 반시계방향(CCW)으로 돌 경우 반대로 B상이 A상보다 90°도 앞서게 되는 것을 볼 수 있다. 

이러한 A상과 B상의 위상차를 사용해 엔코더의 축이 돌아가는 방향을 알아내는 방법은 다음과 같다.

 

  1. 소프트웨어 방식

A상을 GPIO input 모드로 연결하고 B상을 Rising Edge 방식의 Interrup로 설정한다.
B상에 의해 Interrupt 발생시 A상의 입력값이 1일 경우 시계방향(CW)으로, 0일 경우 반시계방향(CCW)으로 회전함을 확인 할 수 있다.

 

2. 하드웨어 방식
간단한 D플립플롭을 사용해 회전 방향을 있는 회로를 보도록 하면

위 그림은 A상을 입력 D에, B상을 클록에 연결해 출력 Q값을 통해 방향을 확인 할 수 있다. 

D플립플롭의 특성상 클록이 rising edge 입력될 까지 출력값 Q 고정되었다가 rising edge 입력된 순간 A상의 위치를 출력하게 된다. 축의 회전방향에 따라 A상과 B상의 위상이 바뀌는 특성을 이용해 위에서 보는 것과 같이 회전방향을 출력해 내는 것을 확인할 있다.

 

  • 앱솔루트 방식의 엔코더
    엔코더의 위치값이 그대로 출력되므로 MCU GPIO input모드로 값을 받아들여 값을 처리하면 된다.

그림은 앱솔루트형 엔코더의 파형을 나타낸 것입니다. 엔코더의 분해능은 6으로 빨간색으로 표시한 부분을 통해 엔코더가 회전한 위치를 있다. 분해능이 6 앱솔루트형 엔코더를 통해 기기의 회전체가 60°, 120°, 180°, 240°, 300°, 360° 위치로 움직였음을 있다.

 

4.회로 설계방법

엔코더의 물리적 사용법에 따라 인크리멘탈형과 앱솔루트형을 선택한후 다음으로 엔코더를 설치할 회로의 특성에 따라 토템폴 방식, NPN오픈콜렉터 방식, PNP오픈콜렉터 방식 라인드라이버 방식이 있다. 

 

각 방식의 장점으로는

 

  • 토템폴(Totem Pole) 방식      
     파형의 왜곡 및 노이즈의 영향을 적게 받고 엔코더와 회로의 거리가 멀 때 사용하기 좋다.
  • NPN(PNP)오픈콜렉터 방식     
    엔코더의 전원전압과 회로의 전원전압이 다를 경우 사용하기 좋다.
  • 라인드라이버(Line Driver)방식
     엔코더로부터 회로의 위치가 멀리 떨어져있을 경우 빠른 응답속도로 동작할수 있다.

 

엔코더를 사용하고자 하는 목적에 따라 회전횟수를 측정하여야 하는 경우 인크리멘탈형으로, 회전체의 미세한 이동각도를 측정하고자 하는 경우 앱솔루트형 엔코더를 사용한다.

 

5.속도 계산

모터가 한바퀴 회전할 때 펄스가 100개 들어오는데 1초에 100개가 들어왔다면 1초에 한바퀴, 1분에 60바퀴를 돈 것이므로 60RPM이된다.

 

  1. M method

M방식은 쉽게 말하면 1초 동안 몇 바퀴를 회전했는가로 RPM을 계산하는 방식이다. 

일반적으로 일정 시간(t)동안 얼만큼의 신호가 들어왔는가이다.

 

M방식은 고속에서 유리하지만 저속에서는 불리하다.  

If 속도가 너무 느려서 2초마다 신호가 하나씩 들어온다고 가정하면 stm32에게 2초는 너무 느려서 1초마다씩만 속도 계산을 할 수 있다고 한다면, 처음 1초에는 신호가 들어와서 RPM을 계산할 수 있지만, 두 번째 1초에는 신호가 들어오지 않아 RPM이 0으로 나올 것이다.

실제로는 2초마다 하나씩 들어와서 RPM 0 아니다.

PPR 모터가 한바퀴 입력되는 펄스의 개수를 의미하므로 RPM 분당 회전 속도이므로 중간에 60 들어가있다.

 

2. T method

T 방식은 M 방식과는 다르게 신호가 들어온 시간 간격을 기준으로 RPM을 계산한다.

쉽게 말하자면 첫 번째 신호가 들어 오고, 다음 신호가 몇 초 뒤에 들어 오는가를 기준으로 계산하는 것이다.

, 펄스가 들어오는 간격 Tp시간을 m2(마이컴의 카운터라고 생각하자)펄스의 개수로 측정하는 것이다.

T 방식은 고속에서 문제가 있고 저속에서 유리하다.

(마이컴의 카운터라고 생각하자)펄스의 개수로 측정하는 것이다.

MCU에서 보면 하나의 펄스가 들어올 카운터를 증가시키기 시작해서 다음 펄스가 들어올 카운터 값을 읽어주면 것이다.

 

3. M/T method

이 방법은 M 방법에 기반을 두고 T방법을 추가한 것과 비슷한 방법이다.

타이머 카운터를 2개를 사용한다.

일단 주파수가 낮은 카운터로 M방법으로 펄스의 개수를 샌다.  -> Tc

그 다음 주파수가 높은 카운터로 펄스의 개수를 샌 순간부터 다음 모터의 펄스가 들어오는 시간을 측정한다. -> δT

 

Tc+δT = Td

※ 위 그림과 식은 m1개의 모터 펄스가 들어오는 시간을 m2 타이머로 측정하는 것으로 묘사되어 있다.

원래는 Tc시간을 측정하는 저속의 타이머, δT를 측정하는 고속의 타이머가 필요하다.

 

+PID 속도 제어

엔코더 모터는 위치 제어뿐만 아니라 속도제어도 가능하다. M 또는 T 방식으로 현재 RPM을 측정하고, 이를 기반으로 현재 속도를 수정하고, 목표치에 맞춰질 수 있도록 제어량을 조절하는 것이다.

즉, 다음과 같은 피드백 방식으로 속도를 제어한다.

PWM신호와 피드백 제어를 통해 얻은 값을 더해 모터를 동작시킨다. 모터가 동작되면 모터의 속도를 측정하고 피드백에서 오차를 계산해 PWM 값과 다시 결합하여 제어량을 결정한다.

'Study > Motor Control' 카테고리의 다른 글

[code analysis] 3상 인버터 보드 M1_inverter.c  (0) 2023.02.13
Motor generator set(M-G set)  (0) 2023.02.13
BLDC 모터와 PMSM 모터의 차이  (0) 2023.02.13
DC/BLDC/AC/PMSM motor  (0) 2023.02.12
DC모터와 AC모터의 구동 차이  (0) 2023.02.12