이하에서는 첨부된 도면을 참조하여 본 발명의 바람직한 일 실시예를 상세하게 설명하기로 한다.
도 2는 본 발명에 따른 직렬 인터페이스를 이용한 진동모터 구동장치의 구성 블록도이다.
도 2에 도시된 바와 같이, 본 발명에 따른 직렬 인터페이스를 이용한 진동모터 구동장치(20)는 메인 프로세서(10)와 진동모터(30) 간에 개재되어 있다.
메인 프로세서(10)는 이펙트(진동모터의 촉각리듬) 발생을 위한 이벤트 발생 시 이이펙트 커맨드(이펙트 디지털 데이터 혹은 이펙트 발생 커맨드 데이터)를 진동모터 구동장치(200)로 전송하는 것으로서, 종래와 같이 PWM 신호를 사용하지 않고 I2C 등의 직렬인터페이스부(21)를 사용함으로써 PWM 모듈이 구비되어 있지 않은 프로세서에서도 사용될 수 있음을 알 수 있다. 이펙트 커맨드가 이펙트 디지털 데이터인 경우에는 진동모터(30)의 진폭을 나타내는 실제 디지털 값이고, 이펙트 커맨드가 이펙트 발생 커맨드 데이터인 경우에는 진동모터(30)의 구동신호의 파형, 주기, 혹은 추가정보 등의 정보를 포함할 수도 있다.
전자의 경우는 도 3의 실시 예에서 후자의 경우는 도 4의 실시 예에서 상세 하게 설명될 것이다.
진동모터 구동장치(20)는 직렬인터페이스부(21)를 통해 메인 프로세서(10)로부터 이펙트 커맨드(이펙트 디지털 데이터 혹은 이펙트 발생 커맨드)를 수신하면 진동모터 구동을 위한 진동모터 구동신호를 발생시켜 진동모터(30)로 출력하는 것으로서, 직렬인터페이스부(21), 클럭 발생부(23), 진동모터 구동신호 발생부(25) 및 증폭부(27)를 포함하여 구성된다.
직렬인터페이스부(21)는 메인 프로세서(10)로부터 직렬 데이터를 수신하는 것으로서, 본 실시예에서는 I2C가 사용되었으나, 디지털 데이터를 수신할 수 있으면 어떠한 형태의 직렬 인터페이스도 가능하다.
클럭 발생부(23)는 내부동작 및 진동모터(30)의 공진주파수 발생을 위한 기준 클럭을 출력하는 것으로서, 출력 클럭의 주파수를 조절 가능하도록 함으로써 가변성을 극대화 시키는 것이 바람직하다. 클럭 발생부(23)에서 발생된 클럭을 이용한 진동모터 구동신호를 발생하는 동작에 대해서는 도 3 및 도 4에서 상세하게 설명될 것이다.
진동모터 구동신호 발생부(25)는 직렬인터페이스부(21)로부터 수신된 이펙트 커맨드(이펙트 디지털 데이터 혹은 이펙트 발생 커맨드 데이터) 및 클럭 발생부(23)로부터 수신된 클럭에 기초하여 진동모터(30)의 공진주파수를 갖는 이펙트 데이터를 출력하는 이펙트 데이터 발생부(50) 및 이펙트 데이터를 진동모터 구동신호로 변환하는 D/A 변환부(60)를 포함하며, 이펙트 데이터 발생부(50)의 세부 구성에 대해서는 도 3 및 도 4의 각 실시 예에서 상세하게 설명될 것이다.
증폭부(27)는 변환된 아날로그신호를 증폭하여 진동모터(300)에 출력하고, 진동모터(300)는 증폭부(27)의 출력을 입력받아 메인 프로세서(100)로부터의 이펙트 커맨드 및 이펙트 데이터 발생부(50) 출력의 이펙트 데이터에 상응하는 촉각리듬을 발생시킨다.
도 3은 이펙트 데이터 발생부의 일 실시예를 도시한 세부 블록도이다. 도 3의 실시예는 이펙트 데이터가 진동모터(30)의 진폭을 나타내는 실제 디지털 값인 경우로서 이펙트 데이터 발생부는 수신된 이펙트 커맨드 디지털 값을 진동모터(30)의 타입 또는 공진주파수에 맞는 파형의 디지털 값으로 출력한다.
도 3에 도시된 바와 같이, 일 실시예에 따른 이펙트 데이터 발생부(50)는 디지털 로직부(70)와 계수 및 비교부(80)를 포함하여 구성된다.
디지털 로직부(70)는 진동모터(30)의 타입정보가 저장되는 모터 타입 레지스터(73), 진동모터(30)의 공진주파수 제어를 위한 클럭 계수값 또는 공진주파수값을 저장하는 공진주파수 레지스터(75) 및 모터 타입 및 후술하는 계수 및 비교부(80)의 출력신호에 따라 이펙트 디지털 데이터 즉, 진폭값을 D/A 변환부(60)로 출력하는 동작 제어 레지스터(71)를 포함하여 구성된다.
모터 타입 레지스터(73)는 진동모터(30)의 타입정보가 저장되는 것으로서, 진동모터(30)의 타입이 AC 모터인지 DC 모터인지를 나타내는 정보가 저장된다.
공진주파수 레지스터(75)는 공진주파수 제어를 위한 클럭 계수값 또는 공진주파수값을 저장하는 것으로서, 공진주파수값은 진동모터(30)의 규격 상의 고유 공 진주파수로 설정될 수도 있고, 진동력 특성의 변화를 주기 위하여 고유 공진주파수에 +/- 의 적절한 변경을 주어 설정될 수도 있다.
동작 제어 레지스터(71)는 이펙트 커맨드가 이펙트 디지털 데이터인 경우 수신된 진폭값을 임시 저장하고, 진동모터(30)의 타입이 DC 모터인 경우 진폭값을 바로 출력하고 진동모터 타입이 AC 모터인 경우 계수 및 비교부(80)로부터의 출력신호에 기초하여 진동모터(30)의 공진주파수의 1/2 주기마다 진폭값을 High 또는 low 에 해당되는 값을 출력한다.
계수 및 비교부(80)는 공진주파수 레지스터(75)로부터 진동모터(30)의 공진주파수 정보를 독출하고 클럭 발생부(23)로부터 입력되는 클럭을 계수하여 클럭 계수값이 진동모터(30)의 공진주파수의 1/2 주기마다 HIGH 또는 low 에 해당되는 값을 교번적으로 동작 제어 레지스터(75)로 출력한다.
도 2 및 도 3을 참조하여 진동모터를 이용한 촉각리듬을 발생시키는 진동모터 구동장치의 동작을 보다 상세하게 기술하면 다음과 같다.
메인 프로세서(10)는 시스템의 전원이 ON 되면(혹은 리셋 스위치를 누른 경우 등과 같이 초기 시작 시), 진동모터 타입(ERM or LRA)과 진동모터의 공진주파수 등과 같이 필요한 설정값을 I2C와 같은 직렬인터페이스를 통해 진동모터 구동장치 내 레지스터들을 설정 한다. 이때, 공진주파수 레지스터(75)에 설정되는 값은 상술한 바와 같이, 진동모터의 규격 상의 진동모터 고유 공진주파수를 설정하거나 진동력 특성의 변화를 주기위하여 고유 공진주파수에 +/- 의 적절한 변경을 주어 설정 될 수 있다.
초기 설정을 마친 후, 시스템 동작 중에 이펙트(진동모터의 촉각리듬) 발생을 위해 특정 이벤트(버튼이 눌러진 경우, Game을 하는 경우 등)가 발생하면 메인 프로세서(10)는 이펙트 발생을 위한 진폭값을 나타내는 이펙트 커맨드의 이펙트 디지털 데이터를 I2C와 같은 직렬 인터페이스를 통해 진동모터 구동장치(20)에 전달한다.
진동모터 구동장치(20)는 내부 I2C와 같은 직렬인터페이스부(21)를 통해 이 진폭값을 수신하고 이를 진동모터 구동신호 발생부(25)로 전달한다.
디지털 로직부(70)는 시스템 초기 동작 시 진동모터가 ERM Type(DC Motor)로 설정 되어 있는 경우 수신된 진폭값을 D/A 변환부(60)로 전달하여 디지털 데이터를 아날로그 데이터로 변환하고 이를 증폭부(27)를 이용하여 진동모터를 구동하기 위한 실제 진동모터 구동신호인 DC 파형으로 변환하여 진동모터(30)에 출력하게 된다.
한편, 디지털 로직부(70)는 시스템 초기 시작 시 진동모터가 LRA Type(AC Motor)로 설정 되어 있는 경우 계수 및 비교부(80)가 클럭 발생부(23)로부터 입력되는 클럭을 계수하여 공진주파수 레지스터(75)에 저장되어 있는 클럭 계수값(또는 공진주파수값)과 비교한다. 이 때, 계수된 클럭수가 공진주파수를 위한 클럭갯수의 1/2값(신호의 (+)(-)가 바뀌는 기준시점)과 비교하여 적거나 같으면 High(Low)를 동작 제어 레지스터(71)로 출력하고 계수된 클럭갯구가 공진주파수를 위한 클럭갯수의 1/2 값 보다 크면 앞의 출력과 반대의 값인 Low(High)를 동작 제어 레지스 터(71)로 출력하여 AC Motor의 공진주파수 신호를 만들게 된다.
이때 High 혹은 Low에 따라서 메인 프로세서(10)로부터 입력받은 진폭값인 이펙트 디지털 데이터를 High 와 low 에 해당되는 값으로 D/A변환부(60)로 전달하여 디지털 데이터를 아날로그 데이터로 변환하고 이를 증폭부(27)를 이용하여 진동모터를 구동하기 위한 실제 진동모터 구동신호인 AC 파형으로 변환하여 진동모터(30)에 출력하게 된다.
이때 계수 및 비교부(80)에서 계수된 클럭값이 공진주파수의 한 주기동안의 클럭수와 같게 되면, 계수 및 비교부(80)는 0부터 다시 계수를 시작하게 되며, 이는 진동모터 구동장치의 동작이 정지될 때까지 반복하여 동작하게 된다.
진동모터(300)는 진동모터 구동장치로(200)부터 전달된 진동모터 구동신호에 따라 진동하여 메인프로세서(100)로부터 받은 이펙트 디지털 데이터에 상응하는 촉각리듬을 만들게 된다.
본 실시예에에 따르면 메인 프로세서(10)로부터 입력되는 이펙트 디지털 데이터가 진폭값을 나타내는 디지털 값이므로 데이터 크기에 따라 진폭값을 매우 정밀하게 제어하는 것이 가능하게 되는 장점이 있다.
도 4는 이펙트 데이터 발생부의 다른 일 실시예를 도시한 세부 블록도이고, 도 5는 본 실시예에서 사용되는 이펙트 발생 커맨드 데이터의 데이터 구조의 일례를 도시한 것이며, 도 6은 도 4의 실시예에 의해 생성된 파형 데이터의 일례를 도시한 것이다. 도 4의 실시예는 이펙트 발생 커맨드 데이터가 진동모터 구동신호의 파형, 주파수 혹은 추가정보등의 정보를 포함하는 경우로서 이펙트 데이터 발생부는 수신된 이펙트 발생 커맨드 데이터에 상응하는 이펙트 디지털 데이터 파형을 생성한다.
도 4에 도시된 바와 같이, 다른 실시예에 따른 이펙트 데이터 발생부(50)는 이펙트 발생 커맨드 데이터에 포함된 정보(파형, 주기 혹은 추가정보)에 상응하는 파형 데이터를 생성하는 파형 데이터 생성부(90), 진동모터(30)의 공진주파수 정보와 클럭 발생부(23)로부터 입력되는 클럭을 계수한 클럭 계수값을 비교하고, 클럭 계수값이 진동모터(30)의 공진주파수를 위한 클럭갯수의 1/2이 될 때마다 HIGH 또는 low 에 해당되는 값을 교번적으로 출력하여 진동모터(30)의 공진주파수와 동일한 주파수를 갖는 펄스파를 생성하는 계수 및 비교부(80) 및 입력단이 파형 데이터 생성부(90)와 계수 및 비교부(80)에 접속되어 파형 데이터 생성부(90)로부터 출력되는 파형 데이터를 계수 및 비교부(80)로부터 인가되는 펄스파에 실어 이펙트 디지털 데이터로 변조처리한 후 D/A 변환부(60)로 출력하는 변조부(95)를 포함하여 구성된다.
도 4에는 도시되어 있지 않으나, 파형 데이터 생성부(90)의 내부 또는 후단에는 도 3과 동일한 기능을 갖는 레지스터(71, 83, 75)들이 구비되는 것이 바람직하며, 이 경우 동작 제어 레지스터(71)는 이펙트 커맨드가 이펙트 발생 커맨드 데이터인 경우 하드웨어적으로 이미 구성되어있는 소정의 이펙트 파형의 진폭값을 임시 저장한다.
도 5는 이펙트 발생 커맨드 데이터가 8비트로 구성된 경우를 예시한 것으로서, 예를 들면 8비트 중 상위 2비트는 파형 정보, 중간의 3비트는 주기 정보, 하위 3비트는 그 외 추가정보를 나타내도록 할 수 있다. 도시되지는 않았으나, 파형 데이터 생성부(90)에는 이펙트 발생 커맨드 데이터를 각 정보 영역으로 분할되는 데이터 파싱부와 각 비트값에 따라 소정의 파형, 주기 혹은 추가기능을 갖는 파형 데이터를 생성하기 위한 하드웨어회로가 내장되어 있어야 한다.
즉, 예를 들면 상위 2비트가 00인 경우에는 정현파, 01인 경우에는 삼각파, 10인 경우에는 톱니파, 11인 경우에는 구형파를 나타내는 것으로 미리 설정하고 파형 데이터 생성부(90)는 상위 2비트의 값에 따라 하드웨어적으로 해당하는 파형을 생성하게 된다.
동일한 원리로 중간의 3비트 및 하위 3비트에 대해서도 주기 및 추가기능을 8가지 경우로 나누어 소정의 주기 및 진폭을 갖는 파형 데이터가 생성되도록 할 수 있는 것이다.
이러한 원리에 의해 도 6과 같은 형태의 파형이 얻어질 수 있다. 도 6에서 실선은 아날로그 변환된 후의 진동모터 구동신호를 표시한 것으로서 진동모터의 진동세기를 나타내며, 파형 데이터 생성부(90)의 출력신호는 이산치 형태의 파형 데이터로서, 예를 들면, 주기 T, 최대진폭 Am을 갖는 톱니파의 형태를 갖는 이산치 파형일 수 있다.
도 4 및 도 5를 참조하여 진동모터를 이용한 촉각리듬을 발생시키는 진동모 터 구동장치의 동작을 보다 상세하게 기술하면 다음과 같다.
우선, 메모리(400)에는 특정 이벤트 발생 시마다 해당하는 촉각리듬을 발생하기 위한 이펙트 커맨드(이펙트 디지털 데이터 혹은 이펙트 발생 커맨드 데이터) 값이 저장되어 있다.
시스템 동작 중에 이펙트(진동모터의 촉각리듬) 발생을 위해 특정 이벤트(버튼이 눌러진 경우, Game을 하는 경우 등)가 발생하면 메인 프로세서(10)는 해당 이벤트에 상응하는 이펙트 커맨드(이펙트 디지털 데이터 혹은 이펙트 발생 커맨드 데이터)를 메모리(40)로부터 독출하여 I2C와 같은 직렬 인터페이스를 통해 진동모터 구동장치(20)에 전달한다.
진동모터 구동장치(20)는 내부 I2C와 같은 직렬인터페이스부(21)를 통해 진폭값을 나타내는 이펙트 디지털 데이터 혹은 하드웨어적으로 이미 구성되어있는 소정의 이펙트 파형을 제어하기 위한 이펙트 커맨드 디지털 데이터를 수신하고 이를 진동모터 구동신호 발생부(25)로 전달한다.
즉, 파형 데이터 생성부(90)는 수신된 이펙트 커맨드가 이펙트 디지털 데이터인 경우에는 진폭값을 분석하고, 이펙트 커맨드가 이펙트 발생 커맨드 데이터인 경우 포함된 파형, 주기 정보 혹은 추가정보를 분석하여 그에 상응하는 파형 데이터를 생성하고, 변조부(95)는 파형 데이터 생성부(90)에서 생성된 파형 데이터를 계수 및 비교부(80)에서 발생되는 공진주파수에 실어 이펙트 데이터로 변조처리한 후 상기 D/A 변환부(60)로 출력한다.
이후의 동작은 도 3의 실시예와 동일하므로 상세한 설명은 생략한다.
본 실시예에 따르면 이벤트 발생 시에 1개의 진동모터 구동장치를 이용하여 다양한 공진주파수별 진동모터 사용, 공진주파수의 섬세한 조율을 통한 진동력 향상, 정확하고 섬세한 진동모터의 구동 및 진폭 조절을 통하여 제품의 촉각리듬 특성을 향상 효과 및 PWM 신호 출력기능을 가지고 있지 않은 메인 프로세서에서도 제한 없이 햅틱 기능이 가능한 장점이 있다.
또한, 한번의 이벤트 발생 시에 메인 프로세서는 파형, 주기 혹은 추가적인 정보 등의 데이터가 포함된 이펙트 발생 커맨드 데이터를 1회만 출력하면 진동모터 구동장치에서 하드웨어적으로 소정의 이펙트 파형을 생성하므로 메인 프로세서로부터 수신되는 제어신호의 양을 최소화하면서도 다양한 촉각리듬을 만들어내는 것이 가능하고 그에 따라 메인 프로세서의 부하를 현저하게 감소시킬 수 있는 장점이 있다.
비록 본 발명이 상기 언급된 바람직한 실시예와 관련하여 설명되어졌지만, 발명의 요지와 범위로부터 벗어남이 없이 다양한 수정이나 변형을 하는 것이 가능하다. 따라서 첨부된 특허청구의 범위는 본 발명의 요지에서 속하는 이러한 수정이나 변형을 포함할 것이다.