Temperature estimation system, control system, program, and method
The system estimates voice coil motor temperature by generating low-frequency measurement waves, filtering noise, and calculating resistance to accurately monitor and control motor temperature, addressing unintended vibrations and noise interference.
Patent Information
- Application Number
- JP2025079224
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-05-12
- Publication Date
- 2026-01-30
AI Technical Summary
Existing systems face challenges in accurately estimating the temperature of voice coil motors used in devices like game controllers, particularly when low-frequency noise occurs due to back electromotive force, which can cause unintended vibrations and affect temperature estimation accuracy.
A system is developed to estimate the temperature of voice coil motors by generating measurement waves at frequencies below the audible range, superimposing them on control data, and using low-pass and high-pass filters to extract current and voltage values, calculating resistance, and estimating temperature based on these values.
This approach prevents sound generation from the voice coil motor, reduces unintended vibrations, and allows for accurate temperature estimation even in the presence of low-frequency noise, ensuring precise temperature monitoring and control.
Smart Images

Figure 2026015709000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to a temperature estimation system, a control system, a program, and a method. [Background technology]
[0002] An information processing system that applies vibration to a user is known. For example, Japanese Patent Application Laid-Open No. 2016-202486 (Patent Document 1) discloses a vibration signal generation program that can change vibration parameters. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2016-202486 Summary of the Invention [Problem to be solved by the invention]
[0004] There is room for improvement in estimating the temperature of the vibration motor. [Means for solving the problem]
[0005] (Configuration 1) A system for estimating the temperature inside a voice coil motor according to one embodiment includes a measurement wave generating means for generating a measurement wave for estimating temperature, the measurement wave having a frequency lower than the audible range; a superimposed control data generating means for generating superimposed control data by superimposing the measurement wave on control data for the vibration of the voice coil motor; a control data input means for inputting the superimposed control data to the voice coil motor; a filter means for extracting, using low-pass filter processing and high-pass filter processing, components of the measurement wave frequency from the current values and voltage values inside the voice coil motor to which the superimposed control data has been input; a resistance value calculating means for calculating the resistance value inside the voice coil motor based on the extracted current values and voltage values; and a temperature estimating means for estimating the temperature inside the voice coil motor based on the calculated resistance value.
[0006] According to configuration 1, sound due to measurement waves is prevented from being generated from the voice coil motor, and the temperature can be appropriately estimated even when low-frequency noise occurs in the current and voltage values inside the voice coil motor due to back electromotive force caused by the voice coil motor moving in space.
[0007] (Configuration 2) In configuration 1, the measurement wave generating means may set the frequency of the measurement wave to 20 Hz or less. According to configuration 2, by adopting a frequency of 20 Hz or less as a frequency lower than the audible range, it is possible to reduce the possibility of the user experiencing an unintended vibration sensation due to the measurement wave.
[0008] (Configuration 3) In configuration 1 or 2, the measurement wave generating means may set the frequency of the measurement wave to a frequency of 10 Hz to 20 Hz. According to configuration 3, the measurement wave has a frequency lower than the audible range, and the influence of low-frequency noise can be avoided.
[0009] (Configuration 4) In any of configurations 1 to 3, the measurement wave generating means may generate a measurement wave lower than the lower limit frequency of the control data for vibration of the voice coil motor. According to configuration 4, by adopting a measurement wave lower than the lower limit frequency of the control data for vibration of the voice coil motor as a frequency lower than the audible range, it is possible to reduce the possibility of the user feeling an unintended vibration due to the measurement wave.
[0010] (Configuration 5) In any of configurations 1 to 4, the voice coil motor may be provided in a game controller. According to configuration 5, low-frequency noise generated in the voice coil motor due to movement of the game controller during game play can be removed by high-pass filtering, allowing accurate temperature estimation.
[0011] (Configuration 6) In any of configurations 1 to 5, the game controller may include a motion sensor. The measurement wave generating means may set the frequency of the measurement wave to a frequency higher than the frequency of low-frequency noise caused by back electromotive force generated in the voice coil motor when a motion is input to the game controller. According to configuration 6, the low-frequency noise generated in the voice coil motor by the motion input can be removed by high-pass filtering, allowing accurate temperature estimation.
[0012] (Configuration 7) Any of configurations 1 to 6 may include a first change means for changing the order of the filter in the low-pass filter processing and / or the high-pass filter processing according to the temperature estimated by the temperature estimation means. According to configuration 7, the accuracy of the temperature estimation can be ensured while reducing the processing load by lowering the accuracy of the temperature estimation according to the situation.
[0013] (Configuration 8) In any of configurations 1 to 7, the order of the filter in the low-pass filtering process and / or the high-pass filtering process may be changed depending on the load on the processor that executes the low-pass filtering process and / or the high-pass filtering process. According to configuration 8, changing the order of the filter can reduce the load on the processor that also executes other processes.
[0014] (Configuration 9) A voice coil motor control system according to another embodiment includes the temperature estimation system described above and a control means for stopping or limiting the driving of the voice coil motor when the temperature estimated by the temperature estimation means becomes equal to or exceeds a predetermined value.
[0015] (Configuration 10) A program according to another embodiment causes one or more computers to execute the following steps: generating a measurement wave for estimating temperature, the measurement wave having a frequency lower than the audible range; generating superimposed control data by superimposing the measurement wave on control data for vibration of the voice coil motor; inputting the superimposed control data to the voice coil motor; using low-pass filter processing and high-pass filter processing to extract the frequency components of the measurement wave from the current and voltage values inside the voice coil motor to which the superimposed control data has been input; calculating the internal resistance value of the voice coil motor based on the extracted current and voltage values; and estimating the internal temperature of the voice coil motor based on the calculated resistance value.
[0016] (Configuration 11) In configuration 10, the step of generating the measurement wave may include a step of setting the frequency of the measurement wave to 20 Hz or less.
[0017] (Configuration 12) In configuration 10 or 11, the step of generating a measurement wave may set the frequency of the measurement wave to be 10 Hz to 20 Hz.
[0018] (Configuration 13) In any one of configurations 10 to 12, the step of generating a measurement wave may include the step of generating a measurement wave lower than the lower limit frequency of the control data for vibration of the voice coil motor.
[0019] (Configuration 14) In any of configurations 10 to 13, the voice coil motor may be provided in a game controller.
[0020] (Configuration 15) In any one of Configurations 10 to 14, the game controller may include a motion sensor. In the step of generating the measurement wave, the frequency of the measurement wave may be higher than the frequency of low-frequency noise caused by back electromotive force generated in the voice coil motor when a motion is input to the game controller.
[0021] (Configuration 16) In any of configurations 10 to 15, the order of the filter in the low-pass filtering process and / or the high-pass filtering process may be changed according to the estimated temperature.
[0022] (Configuration 17) In any of configurations 10 to 16, the order of the filter in the low-pass filtering process and / or the high-pass filtering process may be changed according to the load on the processor that executes the low-pass filtering process and / or the high-pass filtering process.
[0023] (Configuration 18) In any of configurations 10 to 17, the program may further cause the one or more computers to execute a step of stopping or limiting the driving of the voice coil motor when the estimated temperature becomes equal to or higher than a predetermined value.
[0024] (Configuration 19) According to yet another embodiment, there is provided a method executed by one or more computers. The method includes the steps of generating a measurement wave for estimating temperature, the measurement wave having a frequency lower than the audible range, generating superimposed control data by superimposing the measurement wave on control data for vibration of the voice coil motor, inputting the superimposed control data to the voice coil motor, using low-pass filtering and high-pass filtering to extract components of the frequency of the measurement wave from current and voltage values inside the voice coil motor to which the superimposed control data has been input, calculating a resistance value inside the voice coil motor based on the extracted current and voltage values, and estimating the temperature inside the voice coil motor based on the calculated resistance value.
[0025] (Configuration 20) In configuration 19, the step of generating the measurement wave may include a step of setting the frequency of the measurement wave to 20 Hz or less.
[0026] (Configuration 21) In configuration 20 or 21, the step of generating a measurement wave may set the frequency of the measurement wave to be 10 Hz to 20 Hz.
[0027] (Configuration 22) In configuration 19 or 21, the step of generating a measurement wave may include the step of generating a measurement wave lower than a lower limit frequency of the control data for vibration of the voice coil motor.
[0028] (Configuration 23) In any of configurations 19 to 21, the voice coil motor may be provided in a game controller.
[0029] (Configuration 24) In any of Configurations 19 to 21, the game controller may include a motion sensor. The step of generating the measurement wave may set the frequency of the measurement wave to be higher than the frequency of low-frequency noise caused by back electromotive force generated in the voice coil motor when a motion is input to the game controller.
[0030] (Configuration 24) A system for estimating the temperature inside a vibration motor according to yet another embodiment includes a measurement wave generating means for generating a measurement wave for estimating the temperature, the measurement wave having a frequency lower than the lower limit frequency allowed for control data for driving the vibration motor, a superimposed control data generating means for generating superimposed control data by superimposing the measurement wave on the control data, a control data input means for inputting the superimposed control data to the vibration motor, a filter means for extracting the frequency component of the measurement wave from the current values and voltage values inside the vibration motor to which the superimposed control data has been input using low-pass filter processing and high-pass filter processing, a resistance value calculating means for calculating the resistance value inside the vibration motor based on the extracted current values and voltage values, and a temperature estimating means for estimating the temperature inside the vibration motor based on the calculated resistance value.
[0031] In any of the above configurations, it is not necessary for a single processor to perform all of the processing, and multiple processors may share the processing. Furthermore, if multiple processors are used, the processors may exist within the same device or in different devices.
[0032] In either of the above configurations, the required processing may be realized by executing a single program, or the required processing may be realized by having multiple processors each execute a different program. [Brief explanation of the drawings]
[0033] [Figure 1] 1 is a schematic diagram showing an example of the configuration of a game system according to the present embodiment. [Figure 2] 10A to 10C are diagrams illustrating a process for generating vibration instruction data in the game device according to the present embodiment. [Figure 3] FIG. 10 is a diagram showing an example of frequency characteristics of maximum allowable voltage in the game system according to the present embodiment. [Figure 4] 10 is a flowchart showing an example of processing of a game program in the game device according to the present embodiment. [Figure 5] 10 is a flowchart showing an example of processing by a system program in the game device according to the present embodiment. [Figure 6] 10 is a flowchart showing an example of a process for generating control data in the game controller according to the present embodiment. [Figure 7] 10 is a flowchart showing a modified example of the process of generating control data in the game controller according to the present embodiment. [Figure 8] 10 is a flowchart showing a first temperature estimation process in the game controller according to the present embodiment. [Figure 9] 10 is a flowchart showing a second part of the temperature estimation process in the game controller according to the present embodiment. [Figure 10] 9 is a flowchart showing a more detailed example of the low-pass filter order determination process (step S221) shown in FIG. 8. [Figure 11] 10 is a flowchart showing a process of stopping the vibration motor based on a measured temperature in the game controller according to the present embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0034] The present embodiment will be described in detail with reference to the drawings, in which the same or corresponding parts are designated by the same reference numerals and description thereof will not be repeated.
[0035] [A. System configuration example] First, a configuration example of game system 10 according to the present embodiment will be described.
[0036] 1 is a schematic diagram showing an example configuration of a game system 10 according to the present embodiment. Game system 10 includes a game device 100 and a game controller 200. Game device 100 executes an application program such as a game program. Game device 100 outputs video or images generated by the execution of the application program to a display device (not shown).
[0037] The game controller 200 receives an operation from the user and transmits operation data indicating the received operation content to the game device 100. The game controller 200 has a vibration motor 206, and drives the vibration motor 206 in accordance with an instruction from the game device 100.
[0038] Although FIG. 1 shows an example of a configuration in which the game system 10 includes one game controller 200, the game system 10 may include multiple game controllers 200.
[0039] The game device 100 includes a processor 101, a non-volatile memory 102, a volatile memory 103, and a communication interface (I / F) 104.
[0040] The processor 101 is a processing entity (processing means) for executing processes in the game device 100. The processor 101 is a processing circuit, such as a CPU (Central Processing Unit) and a GPU (Graphics Processing Unit). The processor 101 loads a program stored in the non-volatile memory 102 into the volatile memory 103 and executes the program. The processor 101 may be an SoC (System on Chip) that integrates the functions of the CPU and the GPU.
[0041] In this specification, the term "processor" includes at least processing circuits that perform processing according to computer-readable instructions, such as CPUs and GPUs, SoCs that integrate multiple functions, and hardwired circuits, such as ASICs (Application Specific Integrated Circuits) and FPGAs (Field Programmable Gate Arrays).
[0042] The non-volatile memory 102 is a storage medium accessible by the processor 101, such as a flash memory, a ROM (Read Only Memory), or an SSD (Solid State Drive). The non-volatile memory 102 may also be a storage medium that is detachable from the game device 100, such as an optical disc or a cartridge.
[0043] The non-volatile memory 102 stores a system program 102P1 and a game program 102P2.
[0044] The system program 102P1 includes computer-readable instructions for executing basic processes such as communication between the game device 100 and the game controller 200. The game program 102P2 includes a vibration file 105. The system program 102P1 may include libraries necessary for executing the game program 102P2.
[0045] The game program 102P2 includes computer-readable instructions for executing game processing. The game program 102P2 includes a vibration file 105. The game program 102P2 may include instructions for executing game processing by motion input (such as swing input) based on output values from an acceleration sensor 208 and a gyro sensor 209, which will be described later.
[0046] The processing in the game device 100, which will be described later, is realized by the processor 101 executing at least one of the system program 102P1 and the game program 102P2.
[0047] Volatile memory 103 is a storage medium, such as a dynamic random access memory (DRAM), that can be accessed by processor 101. During execution of game processing, volatile memory 103 includes a data area 103B1 for game progress, an operation data area 103B2, and a vibration instruction data area 103B3.
[0048] Data area 103B1 is an area for temporarily storing data necessary for the progress of the game. Processor 101 refers to data area 103B1 and updates the data in data area 103B1 while executing game program 102P2.
[0049] The operation data area 103B2 is an area (buffer) for temporarily storing operation data transmitted from the game controller 200. The processor 101 refers to the operation data area 103B2 while executing the game program 102P2.
[0050] Vibration instruction data area 103B3 is an area for temporarily storing vibration instruction data for vibrating vibration motor 206. Processor 101 writes vibration instruction data into vibration instruction data area 103B3 at a predetermined cycle (for example, 60 fps (frames per second); approximately 16 msec cycle) in accordance with the execution of game program 102P2. Details of the vibration instruction data will be described later.
[0051] In this specification, the term “memory” encompasses at least non-volatile memory 102 and volatile memory 103 .
[0052] The communication interface 104 performs data communication with the game controller 200 using at least one of wireless communication and wired communication. When wireless communication is used, the communication interface 104 includes, for example, a wireless chip that complies with the Bluetooth (registered trademark) standard. When wired communication is used, the communication interface 104 includes, for example, a wired communication controller that complies with the USB (Universal Serial Bus) communication standard.
[0053] The game controller 200 includes an MCU (Micro Controller Unit) 201 as an example of a processor, an amplifier 205, a vibration motor 206, a communication interface (I / F) 207, an acceleration sensor 208, a gyro sensor 209, an operation switch 210, and a temperature sensor 211.
[0054] Game controller 200 is typically held by the user in one or both hands, and accepts operations from the user by operating operation switch 210 with the user's fingers. Game controller 200 may also accept motion input from the user. Note that game controller 200 is not limited to a type of game controller that is held by the user, and may be, for example, a general-purpose keyboard and / or mouse that includes vibration motor 206, or a type of game controller that is placed on the floor and accepts input when the soles of the user's feet come into contact with it.
[0055] The MCU 201 includes a processor 202 , a non-volatile memory 203 , and a volatile memory 204 .
[0056] Processor 202 is a processing entity (processing means) for executing processes in game controller 200. Processor 202 loads a program stored in non-volatile memory 203 into volatile memory 204 and executes it. The hardware configuration of processor 202 is similar to that of processor 101 described above, and therefore detailed description thereof will not be repeated.
[0057] The nonvolatile memory 203 stores a system program 203P. The hardware configuration of the nonvolatile memory 203 is similar to that of the nonvolatile memory 102 described above, and therefore detailed description thereof will not be repeated.
[0058] The volatile memory 204 includes a vibration instruction data area 204B1, a control data area 204B2, a resistance value area 204B3, and an operation data area 204B4 during execution of processing by the game controller 200. The hardware configuration of the volatile memory 204 is similar to that of the above-mentioned volatile memory 103, and therefore detailed description thereof will not be repeated.
[0059] The vibration instruction data area 204B1 is an area for temporarily storing vibration instruction data transmitted from the game device 100 (FIFO (First-In First-Out) buffer).
[0060] The control data area 204B2 is an area (FIFO buffer) for temporarily storing control data generated by the processor 202 for vibrating the vibration motor 206. As will be described later, in this embodiment, the control data is generated based on vibration instruction data.
[0061] The operation data area 204B4 is an area (buffer) for temporarily storing detected values of the acceleration sensor 208, the gyro sensor 209, the operation switch 210, etc. Operation data is generated based on the data stored in the operation data area 204B4.
[0062] The resistance value area 204B3 is an area for temporarily storing a resistance value calculated from the current value and voltage value that the amplifier 205 supplies to the vibration motor 206.
[0063] FIG. 1 shows an example of a configuration using an MCU 201 including a processor 202, a non-volatile memory 203, and a volatile memory 204, but each element may be configured independently.
[0064] The amplifier 205 supplies power to the vibration motor 206 in accordance with the control data 220. The amplifier 205 may supply a PWM (Pulse Width Modulation) signal of a predetermined carrier frequency (e.g., 8 kHz) to the vibration motor 206. The amplifier 205 determines a duty ratio based on the control data 220 for each operation period (1 / 8 kHz=0.125 ms) corresponding to one carrier, and generates a PWM signal. The control data 220 stored in the control data area 204B2 of the volatile memory 204 is written to the amplifier 205 at predetermined intervals, for example, by DMA (Direct Memory Access).
[0065] In this embodiment, vibration motor 206 is a voice coil motor capable of outputting audible sound. Vibration motor 206 may be an eccentric motor in which a weight with a biased shape is attached to a rotation shaft, a linear motor, a coin-shaped motor, or the like. This allows vibration motor 206 to apply vibration to a user holding game controller 200 in which vibration motor 206 is stored.
[0066] Communication interface 207 performs data communication with game device 100 using at least one of wireless communication and wired communication. The hardware configuration of communication interface 207 is similar to that of communication interface 104 described above, and therefore detailed description will not be repeated. The communication cycle between communication interface 104 and communication interface 207 may be variable based on commands from processor 101 and / or processor 202, etc.
[0067] The acceleration sensor 208 detects the magnitude of linear acceleration along predetermined three axial directions. The acceleration sensor 208 may also detect acceleration along one or two axial directions.
[0068] The gyro sensor 209 detects the tilt, angular velocity, angular acceleration, and the like of the game controller 200 .
[0069] The operation switch 210 is at least one button, key, or stick provided on the surface of the game controller 200. Typically, the operation switch 210 may be a button associated with a letter such as an A button or a B button, a cross key for inputting up, down, left, and right directions, or a 3D stick for inputting a tilt direction and tilt amount.
[0070] The temperature sensor 211 is a sensor for measuring the internal temperature of the game controller 200. The temperature sensor 211 is, for example, a thermistor. The temperature sensor 211 may be disposed near the vibration motor 206. Furthermore, if the temperature sensor 211 is disposed in a location that is also near the MCU, it is possible to detect temperature increases of both the vibration motor 206 and the MCU 201.
[0071] One or more peripheral devices (not shown) may be connectable to the game controller 200. In this case, the game controller 200 may have an interface for connecting to the peripheral devices.
[0072] The system program 203P includes computer-readable instructions for executing necessary processes in the game controller 200. The system program 203P includes computer-readable instructions for executing multiple processes in parallel, such as (1) a process for generating control data 220 to be provided to the amplifier 205 based on vibration instruction data received from the game device 100, (2) a process for estimating the temperature of the vibration motor 206 and stopping or limiting the vibration motor 206 based on the estimated temperature, (3) a process for stopping the vibration motor 206 based on the temperature measured by the temperature sensor 211, (4) a process for filtering the detection values of the acceleration sensor 208 and the gyro sensor 209, (5) a process for calculating the attitude based on the detection values of the acceleration sensor 208 and the gyro sensor 209, and (6) a process for communicating between the game controller 200 and the game device 100. Note that some or all of the processes (1) to (6) may be computer-readable instructions independent of each other. In other words, the system program 203P may be a collection of software prepared for each process.
[0073] The communication process between the game device 100 and the game controller 200 includes a process of transmitting operation data including detection values of the acceleration sensor 208, the gyro sensor 209, and the operation switch 210 to the game device 100, and a process of receiving vibration instruction data from the game device 100.
[0074] [B. Vibration Indication Data] Next, the vibration instruction data transmitted from the game device 100 to the game controller 200 will be described.
[0075] The vibration instruction data is data that instructs a vibration effect. For example, the vibration instruction data is data that specifies the waveform of control data that controls vibration at a certain timing. The vibration instruction data 116 includes one or more vibration parameters that instruct the waveform of the control data. As an example of the vibration parameters, the vibration instruction data 116 may include a set of an amplitude parameter and a frequency parameter.
[0076] In this embodiment, one or more (N) pieces of vibration instruction data 116 are specified in chronological order for each vibration instruction period T (msec), thereby specifying a vibration effect for a period of T×N (msec). Hereinafter, the N pieces of vibration instruction data 116 specified in chronological order are also referred to as a "time-series vibration instruction data group." For example, the vibration instruction period T may be set to 5 msec.
[0077] By adopting such a data format, it is possible to easily specify a vibration effect in which the amplitude and frequency change.
[0078] 2 is a diagram illustrating a process of generating time-series vibration instruction data group 110 in game device 100 according to the present embodiment. Referring to Fig. 2, vibration file 105 includes information for instructing a vibration effect for each vibration event.
[0079] More specifically, in addition to vibration parameters (amplitude parameters and frequency parameters), a wavelength number parameter is set for each vibration event in the vibration file 105. The wavelength number parameter is used to determine the number of vibration parameters that make up the time-series vibration parameter group.
[0080] For example, in vibration event 1, the frequency is set to "100 Hz" and the wavelength number parameter is set to "1." Therefore, the vibration effect corresponding to vibration event 1 continues for a period of 10 msec, which is one wavelength of 100 Hz. As a result, the time-series vibration instruction data group instructing the vibration effect corresponding to vibration event 1 includes two vibration instruction data. In other words, the time-series vibration instruction data group includes vibration instruction data for two vibration instruction cycles.
[0081] In the vibration file 105 shown in FIG. 2, the amplitude parameter of the amplitude instruction data is normalized to 0 to 1. By executing the game program 102P2, vibration instruction data 116 (time-series vibration instruction data group 114) including the normalized amplitude parameter is generated. By executing the system program 102P1, the amplitude parameter of the vibration instruction data 116 is multiplied by the maximum allowable voltage according to the frequency, thereby generating vibration instruction data 112. The amplitude parameter of the vibration instruction data 112 indicates a voltage amplitude value. The generated vibration instruction data 112 (time-series vibration instruction data group 110) is written to the vibration instruction data area 103B3 (see FIG. 1).
[0082] 3 is a diagram showing an example of the frequency characteristics of the maximum allowable voltage in game system 10 according to the present embodiment. Referring to FIG. 3, the maximum voltage (maximum allowable voltage) that can be applied to vibration motor 206 varies depending on the frequency. System program 102P1 is able to refer to the frequency characteristics of the maximum allowable voltage as shown in FIG. 3.
[0083] This configuration also makes it possible to increase the vibration output by effectively utilizing the maximum allowable voltage for each frequency. Also, since the time-series vibration instruction data set 110 can be generated without considering the specifications of the vibration motor 206, the implementation of the game program 102P2 can be simplified.
[0084] In the above description, an example of processing is shown in which the time-series vibration instruction data group 110 (one or more vibration instruction data 112) is generated each time based on the vibration file 105. However, the time-series vibration instruction data group 110 (one or more vibration instruction data 112) may be prepared in advance as file-format data. In this case, the processor 101 may read the data each time while executing the game program 102P2. By using data in such a file format, processing for generating the time-series vibration instruction data group 110 each time is unnecessary, thereby facilitating implementation of the game program 102P2. Note that the vibration instruction data 112 may be generated in real time without using the vibration file 105.
[0085] While the above description illustrates an example of processing using vibration instruction data that specifies vibration at a certain timing, variation instruction data that specifies a change from the previous vibration may also be used. The variation instruction data may indicate, for example, the amount of change in amplitude and frequency compared to the vibration parameters in the previous vibration instruction cycle. In this case, the vibration parameters in the current vibration instruction cycle are calculated based on the vibration parameters in the previous vibration instruction cycle and the amount of change in amplitude and frequency. The process of calculating such vibration parameters may be performed by the processor 101 of the game device 100, or all or part of the process may be performed by the MCU 201 of the game controller 200.
[0086] In the above description, an example of processing is shown in which the processor 101 executes the game program 102P2 to generate vibration instruction data 116 including normalized amplitude parameters, but the vibration instruction data 112 (time-series vibration instruction data group 110) including amplitude parameters that indicate voltage amplitude values may also be generated directly by executing the game program.
[0087] When the time-series vibration instruction data group 110 (one or more vibration instruction data 112) is stored in the vibration instruction data area 103B3, a predetermined number of vibration instruction data 112 are sequentially transmitted from the game device 100 to the game controller 200 at each communication period (e.g., 5 msec) between the communication interface 104 and the communication interface 207.
[0088] [C. Example of Processing in Game Device 100] Next, an example of processing in the game device 100 will be described.
[0089] Fig. 4 is a flowchart showing an example of processing of game program 102P2 in game device 100 according to the present embodiment. Each step shown in Fig. 4 is realized by processor 101 of game device 100 executing game program 102P2. Game program 102P2 may be, for example, an action game, but the type of game is not limited in any way.
[0090] 4, processor 101 executes game processing (step S100). The game processing includes processing for determining the state of a game character based on operation data, processing for generating an image to be output to a display device, and the like.
[0091] Processor 101 determines whether a vibration event has occurred as a result of the execution of game processing (step S101). A vibration event is a trigger for giving a vibration to the user, such as an event in the virtual space where a game object collides with another game object or where an explosion occurs. The vibration event may occur at a predetermined timing. When a predetermined condition is met as the game progresses, the vibration event occurs.
[0092] If a vibration event has occurred (YES in step S101), the processor 101 passes the time-series vibration instruction data group 114 corresponding to the vibration effect to the system program 102P1 (step S102). If a vibration event has not occurred (NO in step S101), the processing of step S102 is skipped.
[0093] Processor 101 executes other game processes (step S103). Steps S101 to S103 are repeated until a condition for ending the game processes is met.
[0094] 5 is a flowchart showing an example of processing by system program 102P1 in game device 100 according to the present embodiment. Each step shown in FIG. 5 is realized by processor 101 of game device 100 executing system program 102P1.
[0095] By executing the system program 102P1, the processor 101 of the game device 100 generates a time-series vibration instruction data group 114 that instructs a waveform of a predetermined frequency or higher to drive the vibration motor 206 in accordance with instructions generated by the execution of the application program (game program 102P2).
[0096] 5, processor 101 selects one of vibration instruction data 116 included in time-series vibration instruction data group 114 passed from game program 102P2 (step S150). Then, processor 101 determines the order set in the filter of game controller 200 (step S151). In this specification, the term "filter" includes either a low pass filter (hereinafter also abbreviated as "LPF") or a high pass filter (hereinafter also abbreviated as "HPF"), or both. As will be described later, the order of the filter of game controller 200 is changeable, and as an example, a case where it is set to either fourth order or sixth order will be described. The order of the filter may be set or changed to any value.
[0097] If the order of the filter of the game controller 200 is set to 6th order ("6th order" in step S151), the processor 101 sets the lower limit value of the frequency parameter indicated by the time-series vibration instruction data group 114 transmitted to the game controller 200 to 40 Hz (step S152).
[0098] If the filter order of game controller 200 is set to fourth order ("fourth order" in step S151), processor 101 sets the lower limit value of the frequency parameter to 50 Hz (step S153). When the filter order is set to fourth order, the lower limit value of the frequency parameter is set higher by a predetermined value (e.g., 10 Hz) compared to when the filter order is set to sixth order. In this way, when the filter order is changed, a margin may be added to the certain range that limits the frequency parameter.
[0099] Subsequently, the processor 101 determines whether the frequency parameter of the selected vibration instruction data 116 is equal to or less than the lower limit (step S154).
[0100] If the frequency parameter is equal to or less than the lower limit (YES in step S154), processor 101 changes the frequency parameter to the lower limit (step S155). If the frequency parameter is not equal to or less than the lower limit (NO in step S154), the process of step S155 is skipped.
[0101] The processing of steps S150 to S155 is processing for restricting the lower limit value of the frequency parameter instructed by the time-series vibration instruction data group 114 transmitted to the game controller 200. Note that 40 Hz and 50 Hz are examples of lower limit frequencies allowed for the control data, and the lower limit frequency can be set arbitrarily depending on the amplifier 205 and vibration motor 206 of the game controller 200. Specifically, in this embodiment, the frequency characteristics of the vibration motor 206 such that it can vibrate effectively are frequencies above about 40 Hz, and vibration becomes quite weak when the frequency drops to, for example, 30 Hz, so the lower limit frequency that can be used in a game application is set to 40 Hz or 50 Hz.
[0102] In step S152, the amplitude parameter may be set to 0. By adopting such processing, the frequency parameter of the vibration instruction data 116 is not reflected, and is therefore canceled or invalidated.
[0103] The processes of steps S150 to S155 may be included in the game program 102P2 instead of the system program 102P1.
[0104] The processor 101 determines the maximum allowable voltage according to the frequency parameter of the selected vibration instruction data 116 (step S156). The processor 101 calculates the voltage amplitude value by multiplying the amplitude parameter (0 to 1) of the selected vibration instruction data 116 by the maximum allowable voltage (step S157). In this way, the processor 202 determines the amplitude value in the vibration control data 220 by changing the maximum amplitude value according to the frequency in the instruction to vibrate the vibration motor 206.
[0105] The processor 101 writes a set of the calculated voltage amplitude value (amplitude parameter) and the frequency parameter of the selected vibration instruction data 116 into the vibration instruction data area 103B3 (step S158). The written one or more sets correspond to the time-series vibration instruction data group 110 (vibration instruction data 112).
[0106] Processor 101 determines whether all vibration instruction data 116 included in time-series vibration instruction data group 114 passed from game program 102P2 have been processed (step S159). If all vibration instruction data 116 included in time-series vibration instruction data group 114 passed from game program 102P2 have not been processed (NO in step S159), the processes from step S150 onwards are repeated.
[0107] If all the vibration instruction data 116 included in the time-series vibration instruction data group 114 passed from the game program 102P2 have been processed (YES in step S159), the processing ends.
[0108] The process shown in FIG. 5 may be executed repeatedly at a predetermined cycle, or may be triggered by a predetermined condition being met (for example, the time-series vibration instruction data group 114 being passed from the game program 102P2).
[0109] [D. Temperature estimation process] Next, the temperature estimation process according to the present embodiment will be described.
[0110] The game system 10 according to the present embodiment includes a system for estimating the internal temperature of the vibration motor 206, which is a voice coil motor. For example, the game controller 200 (processor 202) estimates the temperature of the vibration motor 206 based on the resistance value of the vibration motor 206. More specifically, the amplifier 205 acquires the current and voltage values of the vibration motor 206 and outputs them to the MCU. The resistance and / or temperature are calculated based on the current and voltage values generated by a signal corresponding to a measurement wave among these current and voltage values.
[0111] In this specification, a "measurement wave" is a signal or waveform for estimating the temperature of the vibration motor 206. The measurement wave is used to measure the resistance value of the vibration motor 206. The measurement wave is typically a sine wave, but may be another waveform.
[0112] The temperature estimated by the temperature estimation process indicates the temperature inside the vibration motor 206, and can be used, for example, to prevent thermal deterioration of the vibration motor 206. The temperature measured by the temperature sensor 211 is the temperature outside the vibration motor 206, and indicates the internal temperature of the game controller 200 and / or the surface temperature of the game controller 200.
[0113] The temperature estimation system according to the present disclosure is executed by processing on the game controller 200 side, but part or all of it may be executed by processing on the game system 10 side.
[0114] The game system 10 according to the present embodiment includes a control system for the vibration motor 206, which is a voice coil motor. For example, the game controller 200 (processor 202) can stop and / or limit the driving of the vibration motor 206 based on the estimated temperature of the vibration motor 206.
[0115] The control system according to the present disclosure is not limited to the game controller 200 alone, but may be configured using at least a part of the game system 10.
[0116] [E. Example of Processing in Game Controller 200] Next, an example of processing in the game controller 200 will be described.
[0117] (e1: Generation process of control data 220) Control data 220 is generated in the game controller 200. The control data 220 is data input to the amplifier 205 to control the vibration of the vibration motor 206. More specifically, the time-series vibration instruction data group 110 is transmitted from the game device 100 to the game controller 200, and the processor 202 of the game controller 200 generates the control data 220 based on the time-series vibration instruction data group 110. The control data 220 is typically data indicating a voltage value of a waveform for driving the vibration motor 206, and is output or updated at a predetermined cycle. The control data 220 may also be data indicating an instantaneous value of the voltage in each cycle. Hereinafter, the cycle in which the control data 220 is output or updated is also referred to as a "control cycle."
[0118] The control period may be the same as the vibration instruction period (for example, 5 msec), but by making the control period shorter than the vibration instruction period, more precise control can be achieved. When generating the control data 220 at a period shorter than the vibration instruction period, by generating the control data on the game controller 200 side, more precise control can be achieved while reducing the amount of communication between the game device 100 and the game controller 200. For example, the control period may be 1 / 40 of the vibration instruction period (for example, 5 msec). In other words, the control period may be 0.125 msec.
[0119] The control data 220 specifies the vibration waveform (sine wave). However, the control data 220 may specify a square wave, or may specify another waveform depending on the system configuration. Furthermore, instead of supplying the vibration motor 206 with a PWM-modulated signal obtained by PWM-modulating the vibration waveform specified by the control data 220, the vibration motor 206 may be supplied with power obtained by amplifying the vibration waveform specified by the control data 220 as is.
[0120] Fig. 6 is a flowchart showing an example of a process for generating control data 220 in game controller 200 according to the present embodiment. In the example of a process for generating control data 220 shown in Fig. 6, the amplitude value of the measurement wave is fixed. Each step shown in Fig. 6 is realized by processor 202 of game controller 200 executing system program 203P. The process shown in Fig. 6 may be repeatedly executed at a predetermined cycle (for example, a vibration instruction cycle).
[0121] 6, processor 202 determines whether or not data exists in vibration instruction data area 204B1 (step S200). If data does not exist in vibration instruction data area 204B1 (NO in step S200), the process of step S200 is repeated.
[0122] If data exists in vibration instruction data area 204B1 (YES in step S200), processor 202 acquires vibration instruction data 112 (step S201). At this time, the first (oldest) vibration instruction data 112 is acquired from the data stored in vibration instruction data area 204B1.
[0123] The processor 202 sets the index X to 1 (step S202). The processor 202 calculates a phase that is advanced by one control cycle (0.125 msec) from the phase of the current control data (previously calculated control data) based on the frequency parameter of the acquired vibration instruction data 112 (step S203). The processor 202 calculates control data (voltage value) based on the amplitude parameter of the acquired vibration instruction data 112 and the phase calculated in step S203 (step S204).
[0124] It should be noted that the amplitude parameter and the frequency parameter may change significantly immediately after newly acquiring the vibration instruction data 112. In such a case, at least one of the amplitude parameter (step S204) and the frequency parameter (step S203) may be gradually changed from the previous value to the instructed value, rather than applying the instructed value as is.
[0125] The processor 202 calculates the voltage value of the measurement wave (in this embodiment, the amplitude is 0.1 V and the frequency is 15 Hz) based on the phase calculated in step S203 (step S205). In this way, the processor 202 generates a measurement wave for estimating the internal temperature of the vibration motor 206. It is known that when a motion input is performed using the game controller 200, a back electromotive force of less than 10 Hz is generated in the voice coil motor of this embodiment, and therefore, in this embodiment, the frequency of the measurement wave is set to 15 Hz.
[0126] The processor 202 superimposes the voltage value of the measurement wave calculated in step S205 on the control data (voltage value) calculated in step S204 (step S206). In this way, the processor 202 generates superimposed control data by superimposing the measurement wave on the control data for vibration of the vibration motor 206, which is a voice coil motor. The superimposed control data indicates a waveform in which the measurement wave is superimposed on a waveform based on the vibration instruction data 112 for driving the vibration motor 206.
[0127] The processor 202 writes the addition result (superimposed control data in which the voltage of the measurement wave is superimposed on the control data) to the control data area 204B2 (step S207). In this way, the processor 202 inputs the addition result (superimposed control data in which the voltage of the measurement wave is superimposed on the control data) to the vibration motor 206, which is a voice coil motor. The amplifier 205 drives the vibration motor 206 based on the addition result written to the control data area 204B2.
[0128] The processor 202 increments the index X by 1 (step S208). The processor 202 determines whether the index X after the increment exceeds 40 (step S209).
[0129] If the incremented index X does not exceed 40 (= vibration instruction period / control period) (NO in step S209), the processes from step S203 onward are repeated. If the incremented index X exceeds 40 (YES in step S209), processor 202 deletes vibration instruction data 112 acquired in step S201 from vibration instruction data area 204B1 (step S210). Then, the processes from step S200 onward are repeated.
[0130] In an example of the process for generating control data 220 according to this embodiment, a measurement wave with a frequency (e.g., 15 Hz) lower than the audible range (e.g., 20 Hz to 20,000 Hz) is used, thereby preventing the sound of the measurement wave from being heard from the voice coil motor. Furthermore, even if the processor's processing power is such that it is not possible to generate a high frequency and use a measurement wave higher than the audible range, temperature estimation is possible. Furthermore, the temperature inside vibration motor 206 can be estimated with minimal impact on the vibrations experienced by the user.
[0131] The frequency of the measurement wave is not limited to 15 Hz, and may be set to any frequency lower than 40 Hz (the lower limit of the frequency parameter that can be used by the application). In other words, a measurement wave lower than the lower limit frequency of the vibration control data of the vibration motor 206, which is a voice coil motor, may be used. From another perspective, any frequency lower than the audible range may be used. The frequency of the measurement wave may be set to a frequency lower than 20 Hz, for example, between 20 Hz and 10 Hz, or lower.
[0132] In the example of the generation process shown in Fig. 6, the amplitude value of the measurement wave is fixed (e.g., 0.1 V), but the amplitude value of the measurement wave may be determined based on the amplitude parameter of the vibration instruction data 112. In this case, typically, when the amplitude parameter of the vibration instruction data 112 is large, the amplitude value of the measurement wave may be increased, and when the amplitude parameter of the vibration instruction data 112 is small, the amplitude value of the measurement wave may be decreased. Fig. 7 is a flowchart that realizes this modification.
[0133] 7 is a flowchart showing a modified example of the process for generating control data 220 in game controller 200 according to the present embodiment. In the exemplary process for generating control data 220 shown in FIG. 7, the amplitude value of the measurement wave is changed according to the amplitude value of control data 220. The steps shown in FIG. 7 are implemented by processor 202 of game controller 200 executing system program 203P. The modified example shown in FIG. 7 employs steps S214 and S215 instead of step S205 in the exemplary process for generating control data 220 shown in FIG.
[0134] The processor 202 determines the amplitude value of the measurement wave based on the amplitude parameter of the acquired vibration instruction data 112 (step S214). In this way, the processor 202 determines the amplitude value of the measurement wave according to the amplitude value of the control data.
[0135] Specifically, for example, if the amplitude parameter of the vibration instruction data 112 is 3 V or more, the amplitude value of the measurement wave may be determined to be 0.2 V, and if the amplitude parameter of the vibration instruction data 112 is lower than 3 V, the amplitude value of the measurement wave may be determined to be 0.1 V. Alternatively, the amplitude value of the measurement wave may be determined to be a value obtained by multiplying the amplitude parameter of the vibration instruction data 112 by a predetermined percentage (for example, 5%).
[0136] The processor 202 calculates the voltage value of the measurement wave based on the phase calculated in step S203 so that a measurement wave (having the amplitude value determined in step S214 and a frequency of 15 Hz) is generated (step S215). In this way, the processor 202 adaptively determines the voltage value of the measurement wave for estimating the temperature of the vibration motor 206.
[0137] The processes other than steps S215 and S216 are the same as the corresponding processes in FIG. 6, and therefore detailed description thereof will not be repeated.
[0138] The greater the amplitude value of the measurement wave, the more accurate the temperature estimation, but if the amplitude value of the measurement wave becomes too large, the user will experience an unintended sensation. As described above, by dynamically changing the amplitude value of the measurement wave according to the amplitude value for the vibration that is originally intended to be experienced by the user, the accuracy of the temperature estimation can be improved and the user's perception of the unintended sensation of the measurement wave can be reduced.
[0139] (e2: Temperature estimation process and vibration motor stop process) In the game controller 200, the temperature of the vibration motor 206 is estimated based on the resistance value of the vibration motor 206. The vibration motor 206 may be stopped based on the estimated temperature.
[0140] 8 is a flowchart showing a first temperature estimation process in game controller 200 according to the present embodiment. The steps shown in FIG. 8 are realized by processor 202 of game controller 200 executing system program 203P.
[0141] 8, the processor 202 acquires a predetermined number (e.g., 40) of current and voltage values of the vibration motor 206 from the amplifier 205 (step S220). That is, the processor 202 acquires the internal current and voltage values of the vibration motor 206 to which superimposed control data in which a measurement wave is superimposed on control data has been input. For example, 40 sets of current and voltage values detected for each operating period (e.g., 0.125 ms) of the amplifier 205 may be acquired in chronological order (i.e., for 5 msec).
[0142] Processor 202 executes a process of determining the order of a filter (step S221). Note that the calculation accuracy improves as the order of the filter increases. Processor 202 executes LPF processing and HPF processing on the 40 current values and 40 voltage values acquired in step S220, respectively, with the orders determined in step S221 (step S222). In this way, processor 202 performs LPF processing and HPF processing on the acquired current values and voltage values.
[0143] In this embodiment, the LPF process extracts components of 15 Hz or less from, for example, 40 current values (time waveforms of current values) and 40 voltage values (time waveforms of voltage values), and then extracts components of 14 Hz or more by HPF process, thereby extracting components of 14-15 Hz. This type of filter process extracts components corresponding to the measurement wave calculated in step S205 of Fig. 6. Filters of any structure may be used in the LPF process and HPF process, but for example, an IIR (Infinite Impulse Response) filter or an FIR (Finite Impulse Response) filter may be used.
[0144] As an example, the input x at time n n and the corresponding output y n A second-order IIR digital filter can be described using the following equations (1) and (2).
[0145] u n =x n -a1u n-1 -a2u n-2 ···(1) y n =b0u n +b1u n-1 +b2u n-2 ···(2) However, u n are values adopted for the convenience of calculation, and a1, a2, b0, b1, and b2 are parameters that determine the filter characteristics. Different values are set for a1, a2, b0, b1, and b2 in LPF processing and HPF processing.
[0146] Since the IIR filter according to the above formula is a second-order filter, connecting two of them in series will realize a fourth-order filter, and connecting three of them in series will realize a sixth-order filter. Note that connecting IIR filters in series reduces the output y of the previous IIR filter. n is input to the downstream IIR filter x n In implementation, the filtering result using a fourth-order filter is obtained by repeating the calculations according to formulas (1) and (2) twice in one calculation timing, and the filtering result using a sixth-order filter is obtained by repeating the calculations according to formulas (1) and (2) three times.
[0147] Note that fourth- and sixth-order IIR filters may also be used. In this case, it is not necessary to connect the IIR filters in series. Specifically, an Nth-order IIR digital filter can be described using the following equations (3) and (4).
[0148] u n =x n -a1u n-1 -…-a N u n-N ···(3) y n =b0u n +b1u n-1 +…+b N u n-N ···(4) In this way, the calculation formula used for frequency filtering is changed according to the change in the order. The change in the calculation formula may be a change in the order of the calculation formula. Furthermore, in frequency filtering, the lower the set order, the lower the calculation load. Since an FIR filter is described by a calculation formula different from that of an IIR filter, the calculation formula is also changed when the FIR filter is changed to an IIR filter.
[0149] As an example of frequency filtering, a filtering process using a band-pass filter or a high-pass filter may be employed. Any filter (LPF, HPF, high-pass filter, or band-pass filter) may be used for frequency filtering.
[0150] Processor 202 calculates a resistance value using the filtered current value (time waveform of the current value) and voltage value (time waveform of the voltage value) (step S223). In this way, processor 202 calculates an internal resistance value of vibration motor 206, which is a voice coil motor, based on the filtered current value and voltage value. The resistance value calculated in step S223 is a value at each execution cycle (e.g., 50 msec) of temperature estimation process 1.
[0151] The processor 202 writes the calculated resistance value in the resistance value area 204B3 (step S224). The resistance value area 204B3 is configured to store 40 resistance values. In this case, the resistance value area 204B3 stores resistance values for 2 seconds (50 msec x 40) in chronological order.
[0152] The process shown in Fig. 8 may be repeatedly executed at a predetermined execution cycle (for example, 50 msec). The execution cycle of the process shown in Fig. 8 may be set longer than the execution cycle of temperature measurement by temperature sensor 211 shown in Fig. 11. By setting the execution cycle of the temperature estimation process longer than the execution cycle of temperature measurement by temperature sensor 211, it is possible to reduce the load on MCU 201 (processor 202) that must execute multiple processes while maintaining the level of temperature management.
[0153] 9 is a flowchart showing a second temperature estimation process in the game controller 200 according to the present embodiment. The processor 202 executes the second temperature estimation process in addition to the first temperature estimation process. The steps shown in FIG. 9 are realized by the processor 202 of the game controller 200 executing the system program 203P. The process shown in FIG. 9 may be repeatedly executed at a predetermined execution cycle (for example, 50 msec).
[0154] Referring to FIG. 9, processor 202 calculates an average resistance value from the 40 resistance values stored in resistance value area 204B3 (step S240). Note that instead of the average value, other representative values such as the median or the mode may be used. Processor 202 calculates the temperature from the calculated average resistance value (step S241). The process of calculating the temperature from the average resistance value may use a predetermined calculation formula or a table that defines the correspondence between resistance value and temperature. As shown in step S240, processor 202 may acquire current values and voltage values for a predetermined period or a predetermined number of times, and thereby calculate the resistance value multiple times. Then, processor 202 may estimate the temperature based on the resistance values measured multiple times.
[0155] Processor 202 determines the order set for the filter (step S242). If the order of the filter is set to 6th order ("6th order" in step S242), processor 202 sets a first threshold temperature and a second threshold temperature according to the order of the filter (6th order) (step S243). In this embodiment, the first threshold temperature is set to a value greater than the second threshold temperature.
[0156] If the filter order is set to 4th order ("4th order" in step S242), processor 202 sets a first threshold temperature and a second threshold temperature according to the filter order (4th order) (step S244). In this embodiment, the first threshold temperature when the filter order is 4th order is set to a value lower than the first threshold temperature when the filter order is 6th order. Also, the second threshold temperature when the filter order is 4th order is set to a value lower than the second threshold temperature when the filter order is 6th order.
[0157] The processor 202 determines whether the calculated temperature is equal to or greater than the first threshold temperature (step S245).
[0158] If the calculated temperature is equal to or higher than the first threshold temperature (YES in step S245), processor 202 changes the amplitude parameter of the leading vibration instruction data 112 among the vibration instruction data 112 stored in vibration instruction data area 204B1 to zero (step S246). Subsequently, processor 202 determines whether or not a predetermined time has elapsed (step S247). If the predetermined time has not elapsed (NO in step S244), the processing from step S247 onwards is repeated. If the predetermined time has elapsed (YES in step S247), the processing from step S246 onwards is repeated.
[0159] If the calculated temperature is lower than the first threshold temperature (NO in step S245), processor 202 determines whether the calculated temperature is equal to or higher than the second threshold temperature (step S248). If the calculated temperature is lower than the second threshold temperature (NO in step S248), the processes from step S240 onward are repeated.
[0160] On the other hand, if the calculated temperature is equal to or higher than the second threshold temperature (YES in step S248), the driving of the vibration motor 206 is restricted.
[0161] More specifically, the processor 202 determines whether the frequency parameter of the leading vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 is equal to or greater than 150 Hz (step S249).
[0162] If the frequency parameter of the first vibration instruction data 112 is 150 Hz or higher (YES in step S249), the processor 202 changes the frequency parameter of the first vibration instruction data 112 to 100 Hz (step S250).
[0163] In this way, when the calculated temperature becomes equal to or exceeds a predetermined value, the processor 202 stops or limits the driving of the vibration motor 206, which is a voice coil motor (S246, S250).
[0164] Furthermore, when the calculated temperature reaches or exceeds a predetermined value, the processor 202 shifts the control data for vibration of the vibration motor 206, which is a voice coil motor, to a value lower than the specified frequency (S250). Note that limiting the drive of the vibration motor 206 includes a process of shifting the frequency of the waveform for driving the vibration motor 206 to a frequency that provides better vibration efficiency. As can be seen from FIG. 3, the vibration motor 206 of this embodiment has the characteristic of being most susceptible to vibration at a frequency of 100 Hz (the characteristic of having large vibration even at a low drive voltage).
[0165] If the frequency parameter of the leading vibration instruction data 112 is lower than 150 Hz (NO in step S249), the processor 202 reduces the amplitude parameter of the leading vibration instruction data 112 (for example, changes it to half the value) (step S251). Note that only when the amplitude parameter of the leading vibration instruction data 112 exceeds the upper limit, the processor 202 may change the amplitude parameter of the leading vibration instruction data 112 to the upper limit. In this way, limiting the drive of the vibration motor 206 includes processing to reduce the amplitude of the waveform for driving the vibration motor 206. In this way, in this embodiment, both the frequency shift method and the method of reducing the amplitude are adopted as methods for limiting vibration, but only one of them may be used.
[0166] Processor 202 then determines whether a predetermined time has elapsed (step S252). If the predetermined time has not elapsed (NO in step S252), the processes from step S249 onward are repeated. If the predetermined time has elapsed (YES in step S252), the processes from step S240 onward are repeated.
[0167] In step S246, the control data 220 existing in the control data area 204B2 may be changed to 0. In step S247, instead of waiting for a predetermined time to elapse, it may be possible to wait until the temperature calculated by executing steps S24 and S241 again (or the temperature measured by the temperature sensor 211) becomes equal to or lower than a predetermined threshold temperature.
[0168] When a large amount of power is supplied to the vibration motor 206, the resistance value of the vibration motor 206 increases instantaneously. Even if there is such an instantaneous increase in the resistance value, the effect of thermal degradation of the vibration motor 206 is small. Therefore, as shown in step S240, the vibration motor 206 is stopped and / or limited based on the result of averaging the resistance value over a predetermined period. This allows the output from the vibration motor 206 to increase instantaneously.
[0169] Furthermore, when the frequency of the measurement wave is low, the accuracy of the temperature estimation decreases if the estimation period is short. Therefore, as shown in step S240, the accuracy of the temperature estimation can be improved by using an average value obtained by measuring multiple resistance values over a longer period.
[0170] Fig. 10 is a flowchart showing a more detailed example of the filter order determination process (step S221) shown in Fig. 8. In this embodiment, the order of the LPF and the order of the HPF are set to the same order. Referring to Fig. 10, the processor 202 determines whether the load on the MCU 201 is equal to or greater than a predetermined level (step S2210). Whether the load on the MCU 201 is equal to or greater than a predetermined level may be determined by using one or more of the following determination methods.
[0171] (1) The operating rate of the MCU 201 is measured, and when the measured operating rate reaches or exceeds a predetermined value, it is determined that the load on the MCU 201 is at or above a predetermined level.
[0172] (2) Determine whether MCU 201 is currently executing a predetermined process, and if so, determine that the load on MCU 201 is at or above a predetermined level. The predetermined process may be, for example, (a) input or output processing of sensors of game controller 200 (e.g., motion sensors (acceleration sensor 208 and gyro sensor 209), cameras, microphones, infrared sensors, etc.), or (b) input or output processing of external devices connected to game controller 200. At least some of the motion sensors, cameras, microphones, and infrared sensors may be peripheral devices connectable to game controller 200.
[0173] (3) If the period for communicating vibration instruction data (control data for controlling vibration) between the game device 100 and the game controller 200 is variable, if the period for such communication is above a predetermined level (e.g., the communication rate is above a predetermined value or the time interval is below a predetermined value), it is determined that the load on the MCU 201 is above a predetermined level.
[0174] If the load on MCU 201 is equal to or greater than a predetermined level (YES in step S2210), processor 202 determines the order of the filter to be fourth (step S2211). In this way, processor 202 changes the order of the filter depending on the load on MCU 201 (processor 202 that executes the filter process).
[0175] If the load on MCU 201 is lower than the predetermined level (NO in step S2210), processor 202 acquires the temperature estimated in step S241 (step S2212), and determines whether the estimated temperature is equal to or higher than a predetermined value (step S2213).
[0176] If the temperature estimated in step S241 is equal to or greater than the predetermined value (YES in step S2213), processor 202 determines the order of the filter to be sixth (step S2214). On the other hand, if the temperature estimated in step S241 is not equal to or greater than the predetermined value (NO in step S2213), processor 202 determines the order of the filter to be fourth (step S2215). In this way, processor 202 changes the order of the filter depending on the estimated temperature.
[0177] The temperature estimation process places a large load on the MCU 201. Therefore, as shown in step S2210, by changing the order of the filter that determines the magnitude of the load required for execution in accordance with the load on the MCU 201, it is possible to reduce the impact on other processes executed by the MCU 201.
[0178] In some cases, the processor in the game controller has lower performance than the processor in the game device. In such cases, it is necessary to reduce the load on the processor in the game controller.
[0179] As shown in step S2213, when the temperature reaches or exceeds a predetermined value, the order of the filter is increased to improve the accuracy of the temperature estimation, whereas otherwise, since the need for high accuracy in the temperature estimation is low, the order of the filter is decreased to reduce the load required for processing. In this way, in situations where high accuracy in the temperature estimation is not required, reducing the load required for execution allows multiple processes to be executed in parallel even on MCU 201 with limited processing resources.
[0180] Note that the specific numerical values of the order are merely examples, and in step S2211, for example, the order may be reduced from 5th to 3rd, or from 6th to 5th. The order when the load on the MCU 201 is high (the order set in S2211) may be different from the order when the estimated temperature is low (the order set in S2215).
[0181] The process of step S2211 may be executed only when the estimated temperature is below a predetermined value. The predetermined value used to determine whether to execute the process of step S2211 may be set higher than the temperature used in the determination of step S2213. This may increase the accuracy of the temperature estimation only when the temperature is equal to or higher than the predetermined value, and may prevent the load on the MCU 201 from increasing when the temperature is below the predetermined value.
[0182] The order of the LPF and the order of the HPF may be set to different orders. The process of lowering the order of the filter when the load on the MCU 201 is equal to or greater than a predetermined level or when the temperature is below a predetermined value may also be applied when an FIR filter is used as the filter.
[0183] When the load on the MCU 201 is equal to or greater than a predetermined level, the FIR filter may be changed to an IIR filter. Also, when the temperature is below a predetermined value, the FIR filter may be changed to an IIR filter. In this case, the order of the calculation formula for the FIR filter may be the same as the order of the calculation formula for the IIR filter. This is because, in general, an IIR filter can achieve a greater filtering effect with a lower order (i.e., a lower calculation load) than an FIR filter.
[0184] (e3: Temperature measurement process using a temperature sensor and vibration motor stop process) In the game controller 200, the temperature is measured using the temperature sensor 211. Based on the measured temperature, the vibration motor 206 may be stopped.
[0185] Fig. 11 is a flowchart showing the process of stopping the vibration motor based on the measured temperature in the game controller 200 according to this embodiment. The steps shown in Fig. 11 are realized by the processor 202 of the game controller 200 executing the system program 203P. The process shown in Fig. 11 may be repeatedly executed at a predetermined execution cycle (for example, 5 msec).
[0186] 11, processor 202 calculates the temperature from the resistance value of temperature sensor 211 (thermistor) (step S260). That is, processor 202 measures the temperature using temperature sensor 211 arranged outside vibration motor 206.
[0187] Processor 202 determines whether the temperature measured by temperature sensor 211 is equal to or higher than the third threshold temperature (step S261). If the calculated temperature is lower than the third threshold temperature (NO in step S261), the processes from step S260 onwards are repeated. In this embodiment, the third threshold temperature is set to a value lower than the first threshold temperature.
[0188] If the calculated temperature is equal to or higher than the third threshold temperature (YES in step S261), processor 202 changes the amplitude parameter of the leading vibration instruction data 112 among the data stored in vibration instruction data area 204B1 to zero (step S262). Subsequently, processor 202 determines whether or not a predetermined time has elapsed (step S263). If the predetermined time has not elapsed (NO in step S263), the processing from step S262 onwards is repeated. If the predetermined time has elapsed (YES in step S263), the processing from step S260 onwards is repeated.
[0189] In step S262, instead of changing the amplitude parameter to zero, the amplitude parameter may be reduced or the frequency parameter may be shifted as shown in steps S247 and S248 (see FIG. 9). In this way, when the temperature measured by the temperature sensor 211 becomes equal to or higher than a predetermined value, the processor 202 stops or limits the driving of the vibration motor 206, which is a voice coil motor (S262).
[0190] 11, when the temperature measured by the temperature sensor 211 becomes equal to or higher than a third threshold temperature, the processor 202 stops driving the vibration motor 206. The execution cycle of the process shown in FIG. 11 is, for example, 5 msec, so the cycle (5 msec) in which the temperature is measured by the temperature sensor 211 is shorter than the cycle (the execution cycle of the process shown in FIG. 9 is, for example, 50 msec) in which the temperature is calculated based on the resistance value. By providing such a difference in the execution cycle, it is possible to reduce the frequency of execution of the temperature estimation process, which places a heavy load on the MCU 201.
[0191] [F. Variations] In the above description, an example of a process in which a game program generates vibration instruction data is shown as an example of an application program, but the application program is not limited to a game program, and any application program can generate vibration instruction data.
[0192] 1 shows an example of a configuration in which the game device 100 includes one processor 101, but the game device 100 may include multiple processors 101. Similarly, an example of a configuration in which the MCU 201 of the game controller 200 includes one processor 202 is shown, but the MCU 201 may include multiple processors 101.
[0193] 1 shows an example configuration in which the game device 100 includes one non-volatile memory 102 and one volatile memory 103, but the game device 100 may include multiple non-volatile memories 102 and / or multiple volatile memories 103. Similarly, an example configuration in which the MCU 201 of the game controller 200 includes one non-volatile memory 203 and one volatile memory 204 is shown, but the MCU 201 may include multiple non-volatile memories 203 and / or volatile memories 204.
[0194] In the above description, an example of a configuration is shown in which processing is shared between the processor 101 of the game device 100 and the MCU 201 (processor 202) of the game controller 200, but processing may also be performed by only the processor 101 of the game device 100 (or the MCU 201 (processor 202) of the game controller 200).
[0195] Furthermore, the division of processing between the processor 101 of the game device 100 and the MCU 201 (processor 202) of the game controller 200 is an example, and processing may be divided in any manner. For example, the process of generating the control data 220 may be executed in the game device 100.
[0196] The term "program" includes source code, intermediate code, object code, native code, scripts, etc., and the form of the code is not limited. The program may also run on an interpreter or emulator.
[0197] The program may be executed by one processor, or parts of the program may be executed by different processors. Also, the functions of the present embodiment may be realized by several separate programs, in which case the collection of the multiple programs can be said to be the program.
[0198] Each function of the present embodiment does not have to be realized by the processing of a processor alone, but may be realized by utilizing various functions of a computer (a computer configured with a main processor, memory, sub-processor, peripheral circuits, software such as firmware, and in some cases, an interpreter or emulator). For example, the present embodiment also includes a mode in which a processor executes a program to issue instructions to other processors or peripheral circuits, and ultimately the other processors or peripheral circuits execute each function.
[0199] The game device 100 may also be a system in which the game controller 200 is integrated with the game device 100. Note that this specification also includes, as a modified example, an embodiment in which the processing performed by a single processor in this embodiment is shared and performed by multiple processors in cooperation with each other.
[0200] The embodiments disclosed herein should be considered to be illustrative in all respects and not restrictive. The scope of the present invention is defined by the claims, not by the above description, and is intended to include all modifications within the meaning and scope of the claims. [Explanation of symbols]
[0201] 10 Game system, 100 Game device, 101, 202 Processor, 102, 203 Non-volatile memory, 102P1, 203P System program, 102P2 Game program, 103, 204 Volatile memory, 103B3, 204B1 Vibration instruction data area, 103B2, 204B4 Operation data area, 103B1 Data area, 104, 207 Communication interface, 105 Vibration file, 110, 114 Time series vibration instruction data group, 112, 116 Vibration instruction data, 200 Game controller, 204B3 Resistance value area, 204B2 Control data area, 205 Amplifier, 206 Vibration motor, 208 Acceleration sensor, 209 Gyro sensor, 210 Operation switch, 211 Temperature sensor, 220 Control data.
Claims
1. A system for estimating the temperature inside a voice coil motor, comprising: a measurement wave generating means for generating a measurement wave for estimating a temperature, the measurement wave having a frequency lower than the audible range; a superimposed control data generating means for generating superimposed control data by superimposing the measurement wave on control data for vibration of the voice coil motor; a control data input means for inputting the superimposed control data to the voice coil motor; a filter means for extracting a component of the frequency of the measurement wave from the internal current and voltage values of the voice coil motor to which the superimposed control data has been input, using low-pass filtering and high-pass filtering; a resistance value calculation means for calculating an internal resistance value of the voice coil motor based on the extracted current value and voltage value; and a temperature estimation means for estimating an internal temperature of the voice coil motor based on the calculated resistance value.
2. The temperature estimation system according to claim 1 , wherein the measurement wave generating means generates the measurement wave at a frequency of 20 Hz or less.
3. The temperature estimation system according to claim 1 , wherein the measurement wave generating means generates the measurement wave at a frequency of 10 Hz to 20 Hz.
4. 2. The temperature estimation system according to claim 1, wherein the measurement wave generating means generates a measurement wave having a frequency lower than a lower limit frequency of control data for vibration of the voice coil motor.
5. 5. The temperature estimation system according to claim 1, wherein the voice coil motor is provided in a game controller.
6. the game controller includes a motion sensor; 6. The temperature estimation system according to claim 5, wherein the measurement wave generating means sets the frequency of the measurement wave to a frequency higher than the frequency of low-frequency noise caused by back electromotive force generated in the voice coil motor when a motion is input to the game controller.
7. The temperature estimation system according to any one of claims 1 to 4, further comprising a first change means for changing the order of the filter in the low-pass filter processing and / or the high-pass filter processing according to the temperature estimated by the temperature estimation means.
8. The temperature estimation system according to any one of claims 1 to 4, further comprising a second change means for changing the order of the filter in the low-pass filter processing and / or the high-pass filter processing depending on the load of a processor executing the low-pass filter processing and / or the high-pass filter processing.
9. 1. A control system for a voice coil motor, comprising: A temperature estimation system according to any one of claims 1 to 4; and control means for stopping or limiting the driving of the voice coil motor when the temperature estimated by the temperature estimation means reaches or exceeds a predetermined value.
10. On one or more computers, generating a measurement wave for estimating a temperature, the measurement wave having a frequency lower than the audible range; generating superimposed control data by superimposing the measurement wave on control data for vibration of a voice coil motor; inputting the superimposed control data to the voice coil motor; extracting, using low-pass filtering and high-pass filtering, components of the frequency of the measurement wave from the current and voltage values inside the voice coil motor to which the superimposed control data has been input; calculating an internal resistance value of the voice coil motor based on the extracted current value and voltage value; and estimating an internal temperature of the voice coil motor based on the calculated resistance value.
11. The program according to claim 10 , wherein the step of generating the measurement wave includes a step of setting a frequency of the measurement wave to 20 Hz or less.
12. The program according to claim 10 , wherein the step of generating the measurement wave sets the frequency of the measurement wave to be 10 Hz to 20 Hz.
13. The program according to claim 10 , wherein the step of generating a measurement wave includes the step of generating a measurement wave having a frequency lower than a lower limit frequency of control data for vibration of the voice coil motor.
14. The program according to any one of claims 10 to 13, wherein the voice coil motor is provided in a game controller.
15. the game controller includes a motion sensor; The program according to claim 14, wherein the step of generating the measurement wave sets the frequency of the measurement wave to a frequency higher than the frequency of low-frequency noise caused by back electromotive force generated in the voice coil motor when a motion input is made to the game controller.
16. 14. The program according to claim 10, wherein the order of a filter in the low-pass filtering and / or the high-pass filtering is changed according to the estimated temperature.
17. The program according to any one of claims 10 to 13, wherein a filter order in the low-pass filter processing and / or the high-pass filter processing is changed depending on a load on a processor that executes the low-pass filter processing and / or the high-pass filter processing.
18. The program is configured to: The program according to any one of claims 10 to 13, further comprising the step of stopping or limiting the driving of the voice coil motor when the estimated temperature reaches or exceeds a predetermined value.
19. 1. A method implemented by one or more computers, comprising: generating a measurement wave for estimating a temperature, the measurement wave having a frequency lower than the audible range; generating superimposed control data by superimposing the measurement wave on control data for vibration of a voice coil motor; inputting the superimposed control data to the voice coil motor; extracting, using low-pass filtering and high-pass filtering, components of the frequency of the measurement wave from the current and voltage values inside the voice coil motor to which the superimposed control data has been input; calculating an internal resistance value of the voice coil motor based on the extracted current value and voltage value; and estimating a temperature inside the voice coil motor based on the calculated resistance value.
20. The method according to claim 19 , wherein the step of generating a measurement wave has a frequency of the measurement wave of 20 Hz or less.
21. The method of claim 19, wherein the step of generating a measurement wave has a frequency of the measurement wave between 10 Hz and 20 Hz.
22. The method according to any one of claims 19 to 21, wherein the step of generating a measurement wave includes the step of generating a measurement wave having a frequency lower than a lower limit frequency of control data for vibration of the voice coil motor.
Citation Information
Patent Citations
Vibration signal creation program, vibration signal creation system, vibration signal creation device, vibration signal creation method and data output program
JP2016202486A