본문 바로가기

전자, 전기, 프로그래밍

RPM 계산 방법 M/T 방법(M/T Method)

PID 제어를 하려면 에러값(목표값-실제값)을 알아야 하고.
모터 같은 경우는 대체로 모터의 회전 속도가 될 것이다.

그럼 RPM 측정 방법에 대해서 알아보자.
우선 엔코더, 홀센서 등과 같은 모터가 회전하는 속도를 감지하는 장치가 필요하다.

엔코더는 혹시 예전 볼 마우스 뜯어본 사람은 알겠지만
얇고 길쭉한 구멍이 많이 뚫린 원형 판 같은 것으로
광센서 같은것을 이용하여 회전하는 속도를 감지한다.
엔코더의 경우 속도만 알수 있는 엔코더와 모터의 위치까지 알수 있는 엔코더 두가지가 있다.

홀센서는 자석에 반응하는 센서를 이용하는 것으로(홀 이펙트라는것이 있다고 한다.)
모터의 회전자의 자기력에 반응한다.

자세한 것은 좀더 검색해보시고..^^;;

어쨋거나 홀센서든, 엔코더든 어쨋든 MCU의 관점에서는 모터가 회전할때 펄스를 출력되는 것이다.
우리는 그럼 펄스를 세면 속도를 알수 있다.
예를 들어
모터가 한바퀴 회전할때 펄스가 100개 들어오는데 1초에 100개가 들어왔다면
1초에 한바퀴, 1분에 60바퀴를 돈 것이므로 60RPM이 된다.

이론은 단순하나 실제로는 약간 더 복잡하다.
그래서 M방법, T방법, M/T 방법이 사용된다.

1. M 방법(M method)
일정 시간마다 펄스를 세는 방법이다. 즉 내가 1초동안 펄스가 몇개 들어오나를 세고 있다가
1초마다 센 펄스의 숫자를 이용하여 회전 속도를 측정하는 방법이다.


위 그림을 보면 Tc의 시간동안 들어온 펄스의 개수(m1)을 이용하여 속도를 구한다.
이 경우 회전 속도는 
                60 * m1 
      N =    -------                 (N : 회전속도(RPM), PPR : Pulse per revolution)
               Tc * PPR

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

이 방법의 문제점은 회전 속도가 매우 느려질때 발생한다.
내가 1초마다 펄스의 개수를 세는데 펄스는 3초에 한번씩 들어온다면 제대로 측정이 될수가 없을것이다.
그래서 M 방법은 고속 운전일때 유리하다.(일정시간동안 많은 펄스가 들어오므로)


2. T 방법(T method)
이 방법은 모터에서 들어오는 펄스 사이의 간격을 측정하는 것이다.


즉 펄스가 들어오는 간격 Tp 시간을 m2(마이컴의 카운터라고 생각하자)펄스의 개수로 측정하는 것이다.
MCU에서 보면 하나의 펄스가 들어올때 카운터를 증가시키기 시작해서 다음 펄스가 들어올때 그 카운터 값을 읽어주면 될것이다.
             60
N =  ---------------
        PPR * m2 * Tclock    (Tclock = m2 펄스하나의 시간)    

이방법은 M방법과는 반대로 고속 운전일때 문제가 있다.
고속운전일때는 펄스가 무척 빠르게 들어오게 되므로 카운터가 하나 증가하는 동안 수십개의 모터 펄스가 들어온다면 속도를 정확히 알수가 없다.
그렇다고 무작정 카운터를 빠르게 증가하게 만들경우, 느린 속도에서는 펄스간격이 길어지므로 타이머 오버플로우가 발생하게 될것이다.

3. M/T 방법(M/T method)
그래서 나온 것이 M/T방법이다.
이 방법은 M 방법에 기반을 두고 T방법을 추가한 것과 비슷한 방법인데
카운터를 2개를 사용한다
일단 주파수가 낮은 카운터로 M방법으로 펄스의 개수를 샌다.  -> Tc
그 다음 주파수가 높은 카운터로 펄스의 개수를 샌 순간부터 다음 모터의 펄스가 들어오는 시간을 측정한다. ->δT

Tc+δT -> Td
Td와 각 카운터의 주파수를 이용하면 정확한 속도를 측정할수 있다.


       60 * f * m1
N = ---------------------
       PPR * m2                     (f : 타이머의 주파수, m2 : 타이머의 클럭수, m1 모터의 클럭수)

※ 위 그림과 식은 m1개의 모터 펄스가 들어오는 시간을 m2 타이머로 측정하는 것으로 묘사되어 있다.
   원래는 Tc시간을 측정하는 저속의 타이머, δT를 측정하는 고속의 타이머가 필요하다.


다른 실용적인 방법으로는 펄스의 시간 간격을 측정하는데 고속 타이머 하나와 저속 타이머 하나를 동시에 동작시켜
시간 간격이 짧은 경우 고속 타이머로 측정한 시간을, 긴 경우 저속 타이머로 측정한 시간을 이용하여 계산하면
고속과 저속에서 오차가 적으면서도 간단하게 속도를 측정할 수 있다.


'전자, 전기, 프로그래밍' 카테고리의 다른 글

소스인사이트에서 정규식 사용하기.  (0) 2009.05.12
전기각, 기계각  (2) 2008.12.06
P, PI, PD, PID 제어.  (25) 2008.11.16
주파수 - 전압 변환 F/V, V/F  (0) 2008.10.23
콜백 함수(CallBack Function)  (0) 2007.10.24