상기와 같은 목적을 달성하기 위한 본 발명의 일실시예에 따른 팬/틸트모터 제어장치는 엔코더와 같은 별도의 위치감지 장치없이 상기 모터에 내장된 홀 센서출력만을 사용하여 상기 팬/틸트모터의 위치 또는 속도를 제어하도록 하는 것을 특징으로 한다.
상기 홀센서에서 출력된 데이터로 모터의 현재 각도를 계산하는 모터 각도 계산부 및 상기 모터 각도 계산부에서 계산된 모터의 각도를 이용하여 상기 팬/틸트 모터의 현재위치를 계산하는 팬/틸트 위치좌표계산부를 더 포함하도록 구성한다.
상기 모터각도 계산부는 상기 팬/틸트모터의 회전시 각 모터 홀 센서의 3상 출력전압이 전압의 진폭과 offset을 동일하게 변조하여 출력하는 홀 증폭기(Hall AMP)의 출력 파형을 A/D 포트로 입력받아 일정시간 주기로 스캔하며 매 스캔 시마다 상기 모터의 현재각도를 구하도록 한다.
상기 팬/틸트 모터의 현재 위치는 모터의 전자적회전수 COUNTER 값에 360°를 곱하고 그 값에 상기 모터의 현재 각도를 더함으로써 계산된다.
그리고, 상기 모터의 전자적회전수 COUNTER(elec_rev)는 상기 모터의 현재각도가 이전각도보다 크면 모터의 방향을 시계방향으로 판단하고 상기 모터의 전자적회전수 COUNTER(elec_rev)를 1씩 증가시키고 상기 증가된 전자적회전수 COUNTER(elec_rev)값이 (모터극수*기어비)의 값보다 이상인 경우에만 전자적회전수 COUNTER(elec_rev)값을 "elec_rev-(모터극수*기어비)"로 대치함으로써 계산되도록 하고, 상기 모터의 현재각도가 이전각도보다 적으면 모터의 방향을 반시계방향으로 판단하고 상기 모터의 전자적회전수 COUNTER(elec_rev)를 1씩 감소시키고 상기 감소된 전자적회전수 COUNTER(elec_rev)값이 "0"보다 적은 경우에만 상기 전자적회전수 COUNTER(elec_rev)값을 "elec_rev+(모터극수*기어비)"로 대치함으로써 계산되도록 한다.
또한, 상기 팬/틸트 제어장치는 기설정된 팬/틸트의 목표위치좌표와 상기 위치좌표계산부에서 계산된 현재위치좌표의 차이를 연산하여 상기 팬/틸트의 목표위치좌표와 계산된 실제위치가 다를 경우에는 그 차이 만큼 이동하여 팬/틸트 모터가 목표위치에 도달 할 수 있도록 위치 또는 속도를 제어하는 PI위치제어부를 더 포함하여 이루어지도록 하는 것이 바람직하다.
상기와 같은 목적을 달성하기 위한 본 발명의 다른 일실시예에 따른 팬/틸트 모터 제어장치는 홀센서가 내장된 BLDC모터, 상기 홀센서 출력전압의 진폭과 오프셋(offset)을 동일하게 진폭변조하여 상기 제어부에서 계산이 가능한 값으로 변조해 주는 홀 증폭부, 상기 BLDC모터를 구동하기 위한 PWM 펄스를 출력하고 상기 홀 증폭부에서 출력되는 홀센서전압을 입력받아 상기 팬/틸트모터의 위치 또는 속도를 제어하는 제어부 및 상기 제어부에서 출력된 상기 PWM출력을 변조하여 BLDC모터에 3상 SINE WAVE 전류를 흘려주기 위한 3상 MOTOR DRIVER를 포함하여 구성하도록 하여 상기 모터에 내장된 홀 센서출력만을 사용하여 상기 팬/틸트모터의 위치 또는 속도를 제어하도록 하는 것을 특징으로 한다.
상기 제어부는 상기 홀센서에서 출력된 데이터로 모터의 현재 각도를 계산하는 모터 각도 계산부 및 상기 모터 각도 계산부에서 계산된 모터의 각도를 이용하여 상기 팬/틸트 모터의 현재위치를 계산하는 팬/틸트 위치좌표계산부를 포함하여 이루어지도록 한다.
상기 모터각도 계산부는 상기 홀 증폭기(Hall AMP)의 출력 파형을 A/D 포트로 입력받아 일정시간 주기로 스캔하며 매 스캔 시마다 상기 모터의 현재각도를 구하도록 하는 것이 바람직하다.
또한, 상기 팬/틸트 모터의 현재 위치는 모터의 전자적회전수 COUNTER 값에 360°를 곱하고 그 값에 상기 모터의 현재 각도를 더함으로써 계산되도록 한다.
상기 모터의 전자적회전수 COUNTER(elec_rev)는 상기 모터의 현재각도가 이전각도보다 크면 모터의 방향을 시계방향으로 판단하고 상기 모터의 전자적회전수 COUNTER(elec_rev)를 1씩 증가시키고 상기 증가된 전자적회전수 COUNTER(elec_rev) 값이 (모터극수*기어비)의 값보다 이상인 경우에만 전자적회전수 COUNTER(elec_rev)값을 "elec_rev-(모터극수*기어비)"로 대치함으로써 계산되도록 하고, 상기 모터의 현재각도가 이전각도보다 적으면 모터의 방향을 반시계방향으로 판단하고 상기 모터의 전자적회전수 COUNTER(elec_rev)를 1씩 감소시키고 상기 감소된 전자적회전수 COUNTER(elec_rev)값이 "0"보다 적은 경우에만 상기 전자적회전수 COUNTER(elec_rev)값을 "elec_rev+(모터극수*기어비)"로 대치함으로써 계산되도록 하는 것이 바람직하다.
상기 제어부는 기설정된 팬/틸트의 목표위치좌표와 상기 위치좌표계산부에서 계산된 현재위치좌표)의 차이를 연산하여 상기 팬/틸트의 목표위치좌표와 계산된 실제위치가 다를 경우에는 그 차이 만큼 이동하여 팬/틸트 모터가 목표위치에 도달 할 수 있도록 위치 또는 속도를 제어하는 PI위치제어부를 더 포함하여 이루어지어 지도록 하는 것이 더욱 바람직하다.
한편, 상기와 같은 목적을 달성하기 위한 본 발명의 일실시예에 따른 팬/틸트모터 제어방법은 상기 모터에 내장된 홀 센서출력을 이용하여 모터의 현재 각도를 구하는 각도계산단계, 상기 각도계산단계의 모터의 현재각도를 이용하여 상기 팬/틸트모터의 현재 위치를 계산하는 단계 및 기설정된 상기 팬/틸트의 목표위치좌표와 상기 위치계산단계에서 계산된 현재위치좌표의 차이를 연산하여 상기 팬/틸트의 목표위치좌표와 계산된 실제위치가 다를 경우에는 그 차이 만큼 이동하여 팬/틸트 모터가 목표위치에 도달 할 수 있도록 위치 또는 속도를 제어하는 제어단계를 포함하여 이루어지는 것을 특징으로 한다.
상기에서와 같이 상기 팬/틸트 모터의 현재 위치는 모터의 전자적회전수 COUNTER 값에 360°를 곱하고 그 값에 상기 모터의 현재 각도를 더함으로써 계산된다.
상기 모터의 전자적회전수 COUNTER(elec_rev)는 상기 모터의 현재각도가 이전각도보다 크면 모터의 방향을 시계방향으로 판단하고 상기 모터의 전자적회전수 COUNTER(elec_rev)를 1씩 증가시키고 상기 증가된 전자적회전수 COUNTER(elec_rev)값이 (모터극수*기어비)의 값보다 이상인 경우에만 전자적회전수 COUNTER(elec_rev)값을 "elec_rev-(모터극수*기어비)"로 대치함으로써 계산되도록 하고 상기 모터의 현재각도가 이전각도보다 적으면 모터의 방향을 반시계방향으로 판단하고 상기 모터의 전자적회전수 COUNTER(elec_rev)를 1씩 감소시키고 상기 감소된 전자적회전수 COUNTER(elec_rev)값이 "0"보다 적은 경우에만 상기 전자적회전수 COUNTER(elec_rev)값을 "elec_rev+(모터극수*기어비)"로 대치함으로써 계산되게 한다.
또한, 상기 모터의 현재 각도계산단계는 상기 모터에 내장된 홀 센서출력을 그 진폭과 오프셋(offset)을 동일하게 진폭변조하는 단계 및 상기 단계에서 진폭변조된 신호를 디지털신호로 입력받아 일정시간 주기로 스캔하며 매 스캔 시마다 상기 모터의 현재각도를 계산하는 단계를 포함하여 이루어지도록 한다.
그리고, 상기 모터의 현재각도를 계산하는 단계는 상기 진폭변조된 3상 신호를 디지털신호로 입력받아 일정시간 주기로 스캔출력되는 값의 크기 순서(a>b>c)에 따라 소정 갯수의 구간으로 분할하는 단계, 상기 각 구간에서 최대값(a)과 중간값 (b), 그리고 최소값(c)을 이용하여 X(a-b),Y(b-c), ratio(max{X,Y]/min[X,Y])를 구하는 단계, 모터의 각도가 증가하는지 감소하는지를 판단하는 단계, 상기 단계에서 각도가 감소하면 상기 구간(n)에서 각도가 감소하는 구간별로 상기 ratio 값을 구하여 각 구간별 상기 ratio값으로 제1 테이블을 작성하고 상기 단계에서 각도가 증가하면 상기 구간(n)에서 각도가 증가하는 구간별로 상기 ratio 값을 구하여 각 구간별 상기 ratio값으로 제2 테이블을 작성하는 단계, 상기 각 구간이 2,4,6인 경우인지를 판단하는 구간판단단계, 상기 구간판단단계에서 2,4,6 구간에 해당하는 경우는 상기 X값이 Y값보다 이하인지를 판단하여 상기 X값이 Y값보다 이하인 경우는 상기 제1 테이블을 참조하여 ratio값과 가장 근사치의 값을 갖는 TABLE번지 값에 각각의 오프셋(OFFSET)값을 더하여 모터의 전자적 각도를 구하는 단계를 포함하여 이루어지도록 하는 것이 바람직하다.
상기 구간판단단계에서 2,4,6 구간에 해당하는 경우에 상기 X값이 Y값보다 큰 경우는 상기 제2 테이블을 참조하여 ratio값과 가장 근사치의 값을 갖는 TABLE번지 값에 각각의 오프셋(OFFSET)값을 더하여 모터의 전자적 각도를 구하는 단계를 더 포함하여 이루어지도록 하는 것이 더욱 바람직하다.
한편, 상기 구간판단단계에서 2,4,6 구간에 해당하지 않는 경우는 상기 X값이 Y값보다 이하인지를 판단하여 상기 X값이 Y값보다 이하인 경우는 제2 테이블을 참조하여 ratio값과 가장 근사치의 값을 갖는 TABLE번지 값에 각각의 오프셋(OFFSET)값을 더하여 모터의 전자적 각도를 구하는 단계를 더 포함하여 이루어지도록 한다.
그리고, 상기 구간판단단계에서 2,4,6 구간에 해당하지 않는 경우에 상기 X값이 Y값보다 크면 상기 제1 테이블을 참조하여 ratio값과 가장 근사치의 값을 갖는 TABLE번지 값에 각각의 오프셋(OFFSET)값을 더하여 모터의 전자적 각도를 구하는 단계를 더 포함하여 이루어지도록 한다.
이하 첨부한 도면을 참고하여 본 발명의 일실시예에 대하여 상세히 설명하기로 한다.
도 3은 본 발명의 BLDC모터를 이용한 PAN/TILT 모터 제어 블럭도를 도시한 도면이다.
3개의 Hall Sensor가 내장된 BLDC모터(140,142), BLDC모터(140,142)를 구동하기 위한 6개의 PWM 펄스를 출력하고 BLDC모터(140,142)에서 나오는 Hall Sensor전압을 입력받아 위치제어 연산을 수행하기 위한 제어부(110), 제어부(110)에서 출력된 상기 6개의 PWM출력을 변조하여 BLDC모터(140,142)에 3상 SINE WAVE 전류를 흘려주기 위한 3상 MOTOR DRIVER(120,122), 3상 MOTOR DRIVER(120,122)의 상기 3상 SINE WAVE를 입력받아 3상 BLCD모터(140,142)를 온오프 구동하기 위한 스위칭 소자로 동작되는 6개 POWER MOSFET로 구성된 MOSFET(130,132), 3상 HALL SENSOR출력전압을 모두의 진폭과 offset을 동일하게 진폭변조하여 제어부(110)에서 계산이 가능한 값으로 변조해 주는 HALL AMP(150,152)로 구성된다.
상기한 구성을 이용하여 모터의 Hall Sensor출력전압을 사용한 위치제어 방법에 대하여 도 4를 참조하여 설명한다. 설명의 편의상 PAN모터에 대하여 설명한다.
MOTOR(140)의 3상-Hall Sensor출력전압을 HALL AMP(150)에서 진폭변조되어 제어부(110)로 입력되면 A/D스캔부(111)에서 입력된 아날로그 데이터를 A/D SCAN하고 모터 각도 계산부(112)는 입력된 DATA(U,V,W)로 MOTOR의 각도를 구한다.
PAN/TILT 위치좌표계산부(113)는 모터 각도 계산부(112)에서 계산된 MOTOR의 각도를 통해 PAN/TILT 카메라의 현재위치를 나타내는 위치좌표(Wactual)를 계산한다.
비교부(114)에서는 현재의 PAN/TILT위치(Wactual)와 목표 PAN/TILT위치(Wset)를 비교연산하고 PI 위치제어부(115)는 상기 현재의 PAN/TILT위치(Wactual)와 목표 PAN/TILT위치(Wset)가 다른 경우 목표위치로 움직이도록 3 상 PWM Sine Wave Commutator(116)에서 6개의 PWM신호를 드라이버(120)로 전송하여 위치를 제어하도록 하는 것이다.
이하, 도 5, 6을 참조하여 모터의 각도를 구하는 방법에 대하여 설명한다.
도 5는 모터의 각도를 구하기 위한 참조 테이블을 작성하는 과정을 설명하기 위한 흐름도이고, 도 6은 참조 테이블을 이용하여 모터의 각도를 구하는 과정을 설명하기 위한 흐름도이다.
PAN모터(140)의 회전시 각 모터 Hall Sensor의 3상 출력전압(U,V,W)은 전압의 진폭과 offset을 조정할 수 있는 Hall AMP(150)를 통과하게 된다. Hall Amplifier는 3상 전압 모두의 진폭과 offset을 동일하게 변조하여 제어부(110)로 입력할 파형이 출력되면 제어부(110)에서는 출력 파형을 A/D port로 입력받아 일정시간 주기로 scan하며 매 scan시 모터 각도 계산부(112)에서 모터의 현재각도를 구 하는 것이다. 즉, 120°의 위상차를 갖는 3상 SINE-WAVE의 크기와 비율을 통해 모터의 각도를 구하는 것이다.
상기와 같이 모터의 각도를 구하기 위하여 먼저 Hall AMP(150)에서 출력되는 파형(U,V,W)의 크기 순서에 따라 6개의 구간으로 분할한다(S210).
즉, V>U>W인 구간을 "1"로 U>V>W인 구간을 "2"로 U>W>V인 구간을 "3"으로, W>U>V인 구간을 "4"로 W>V>U인 구간을 "5"로 V>W>U인 구간을 "6"으로 구분한다. 또한 상기 U,V,W 값 중에서 최대값을 "a"로 중간값을 "b"로 최소값을 "c"로 설명한다(도 8참조).
도 8에서는 상기 각 구간들이 "1',2,2',3,3',4,4',5,5',6,6',1"로 12개의 구간으로 표기되어 있다.
상기와 같이 분할된 6개 구간 각각에서 X=(a-b), Y=(b-c)를 구하고 X,Y값중 큰값과 작은 값의 비율(ratio = max[X,Y]/min[X,Y])을 구한다(S212).
이후, 각도가 증가할 때, 상기 ratio가 증가하느냐 감소하느냐에 따라 다시 n과 n'으로 2등분한다. 즉, 각도증가에 따라 ratio가 감소하는 지를 판단하여(S214) 상기 구분된 6개의 구간을 감소하면 "n"으로(S216) 증가하면 "n'"으로 이등분한다(S220). 즉, 6개 구간내에서도 ratio가 감소하는 구간은 "1,2,3,4,5,6"으로 ratio가 증가하는 구간은 "1',2',3',4',5',6'"으로 구간을 분리하여 표기한다(도 8참조).
예를 들어 상세히 설명하면 도 8의 "m"구간에서는 ratio가 무한대가 된다. 도 8을 참조하면 a=4,b=1,c=1(y축을 1로 설정하였을 때)이 된다. 따라서 X=3이되고 Y=0이 되므로 ratio는 무한대가 된다. 동일한 방식에 의하면 "n"구간에서는 ratio=1이 되므로 구간 "m"과 "n"에서는 ratio가 감소하므로 n값인 "1"이 되는 것이다.
그리고, 상기 ratio의 감소 및 증가에 따라 각각의 RATIO 테이블(RATIO TABLE1, RATIO TABLE2)을 작성하여 참조 테이블을 완성한다(S218,S222). 즉, 각 구간(1,1',2,2',3,3',4,4',5,5',6,6')에서의 ratio값들을 계산하여 TABLE화하되 상기 구간이 n일때의 TABLE 1과 n'일때의 TABLE 2로 분리하여 2개의 table을 만드는 것이다(도 8 참조).
상세하게는 TABLE 1은 계속 감소하는 값{∞, ......, 1}이 되고 TABLE 2는 계속 증가하는 값{1, ......∞}이 된다.
또한, 상기에서는 한 구간을 30°로 분할하였으나 각도 resolution을 높이려면 상기 TABLE을 더 크게 만들면 된다.
상기에서와 같이 참조 테이블 작성이 완료되면 모터 각도 계산부(112)는 실제 모터의 각도를 아래와 같은 방법으로 계산한다.
도 6을 참조하면 도 5에서와 같은 동일한 과정을 통해 X,Y 및 ratio를 구하고(S240,S242) 구간이 2,4,6인 경우인지를 판단한다(S246). 단계 S246에서의 구간 판단의 이유는 다음과 같다. ratio table 생성시에는 구간내에서 ratio가 증가하느냐 감소하느냐 여부에따라 table을 만들지만, 참조하려 할때는 한 점에서의 u,v,w값밖에 모르므로 table에서 n을 참조해야하는지 n'를 참조해야 하는지 판단이 불가능하다. 그리고, 구간 1,3,5 와 2,4,6 구간의 그래프를 보면 1,3,5구간에서는 X≥Y 일때 n, X<Y일때 n' 가 되고 2,4,6구간에서는 X≤Y일때 n', X>Y일때 n 이 되므로 한 point의 값만 받아서 n을 참조해야하는지 n'를 참조해야하는지 판단하기 위해 1,3,5와 2,4,6의 구분이 필요한 것이다.
단계 S246에서 2,4,6 구간에 해당하는 경우는 X값이 Y값보다 이하인지를 판단한다(S248). X값이 Y값보다 이하인 경우는 RATIO TABLE 1을 참조하여 ratio값과 가장 근사치의 값을 갖는 TABLE번지(TB)를 구한다(S250). 이때 근사치는 TABLE원소와 하나하나 차례차례 비교하여 가장 가까운 값을 찾도록 하는 것이 바람직하다.
이하, 상기 TB값에 각각의 오프셋(OFFSET)값을 더하여 모터의 전자적 각도를 구하는 것이다(S256).
각각의 구간별 오프셋(OFFSET)값은 단계 S256에서와 같이 30°씩 증가하는 것으로 설정한다.
도 8의 "k"포인트를 중심으로 하여 상기 과정을 구체적으로 설명하면 "k"점에서는 U = 3.5, V = 2.5, W = 0.1 이므로 U>V>W이므로 구간은 2가 된다. 따라서 단계 S246에서는 구간이 "2"가 되고 단계 S248에서는 X<Y( X=1, Y=2.4)이므로 RATIO TABLE 1을 참조하여 근사치 값을 갖는 번지를 찾는다. 즉, ratio=2.4이므로 RATIO TABLE 1의 원소 중에서 가장 가까운 값을 찾는 것이다. 예를 들어 TABLE의 15번째에 2.4와 가장 가까운 값이 있다면 단계 S256에서는 구간 2에 해당하는 모터의 전자적 각도를 해당 각도를 구하는 식을 참조하여 구하게 된다. 구간 2에서는 모터의 각도는 "TB+(2r/12)"이므로 "15+(360°/12)"가 되어 결국 모터의 현재 각도는 "45°"가 되는 것이다.
상기에서와 같이 모터 각도 계산부(112)에서 MOTOR의 각도가 계산되면 PAN/TILT 위치좌표계산부(113)에서는 상기 모터 각도를 통하여 PAN/TILT 카메라의 현재위치를 나타내는 위치좌표(Wactual)를 계산하게 되는 것이다.
이하, 도 7을 참조하여 모터의 전자적 각도를 통해 PAN(TILT)의 현재위치 좌표를 계산하는 과정을 설명한다.
먼저 모터의 현재각도와 모터의 이전각도 차이의 절대값이 특정값(r/2)이상인지를 판단하여(S260), 특정값 이상일 경우는 전자적 1회전으로 판단하고, 현재각도와 이전각도의 크기를 비교하여(S262) PAN(TILT)의 방향을 판별한다. 단계 S262에서 현재 각도가 이전각도보다 크면 모터의 방향을 CW(Clockwise)로 판단하고 PAN/(TILT)모터의 전자적회전수 COUNTER(elec_rev)를 1씩 증가시킨다(S264).
상기 증가된 전자적회전수 COUNTER(elec_rev)값이 (모터극수*기어비)의 값보다 이상인지를 판단한다(S266).
단계 S266에서 전자적회전수 COUNTER(elec_rev)값이 (모터극수*기어비)의 값 이상이면 전자적회전수 COUNTER(elec_rev)값을 다음과 같이 계산한다(S268).
elec_rev = elec_rev-(모터극수*기어비)
또한, 단계 S262에서 현재각도가 이전각도보다 작으면 모터의 방향을 CCW(Counter Clockwise)로 판단하고 PAN/(TILT)모터의 전자적회전수 COUNTER(elec_rev)를 1씩 감소시킨다(S270).
상기 단계에서 감소된 elec_rev의 값이 "0"보다 적으면(S272) 전자적회전수 COUNTER(elec_rev)값을 다음과 같이 계산한다(S274).
elec_rev = elec_rev+(모터극수*기어비)
단계 S266에서 전자적회전수 COUNTER(elec_rev)값이 (모터극수*기어비)의 값 보다 적거나 단계 S272에서 elec_rev의 값이 "0"보다 크면 이전의 elec_rev의 값을 유지한 채 단계 S280에서 PAN(TILT)의 현재위치를 계산하게 된다(S280).
즉, PAN(TILT)의 현재위치는 다음과 같이 계산된다.
현재 위치 = ( elec_rev * r + 모터의 현재 각도)
예를 들어 elec_rev가 12이고 모터의 현재 각도가 45°라고 한다면
PAN(TILT)의 현재위치는 "12*360°+ 45°"가 되는 것이다.
따라서, PI위치제어부(115)에서는 PAN(TILT)의 목표위치좌표(Wset)와 상기 과정에서 계산된 현재위치좌표(Wactual)의 차이(ΔW)를 구해 PAN/TILT 목표위치(Wset)와 계산된 실제위치(Wactual)가 다를 경우에는 그 차이 만큼 이동하여 PAN/TILT가 목표위치에 도달 할 수 있도록 위치를 제어하는 것이다.
상기에서와 같이 본 발명에서는 ENCODER등 위치감지 장치없이 PAN/TILT 모터의 CLOSED LOOP 정밀제어가 가능하다.
이상에서 본 발명은 기재된 구체예에 대해서만 상세히 설명되었지만 본 발명의 기술사상 범위 내에서 다양한 변형 및 수정이 가능함은 당업자에게 있어서 명백한 것이며, 이러한 변형 및 수정이 첨부된 특허 청구범위에 속함은 당연한 것이다.