Information processing method, information processing system, and program
The method optimizes vibration motor operation by dynamically adjusting frequency and amplitude based on temperature and battery level, addressing inefficiencies and safety issues in existing systems.
Patent Information
- Application Number
- JP2024193814
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-12-28
- Filing Date
- 2024-11-05
- Publication Date
- 2025-07-10
AI Technical Summary
Existing information processing systems for controlling vibration motors lack effective methods to adapt frequency and amplitude based on temperature and battery level, leading to inefficient and potentially damaging operation.
An information processing method that includes temperature and battery level measurements to dynamically adjust vibration frequency and amplitude, using processors to execute programs that restrict or change vibration based on predetermined conditions, ensuring efficient and safe operation of vibration motors.
Enhances the efficiency and safety of vibration motor operation by optimizing frequency and amplitude based on temperature and battery level, preventing thermal degradation and ensuring consistent user experience.
Smart Images

Figure 2025105464000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to an information processing method, an information processing system, and a program.
Background Art
[0002] An information processing system that gives vibrations to a user is known. For example, Japanese Unexamined Patent Application Publication No. 2016-202486 (Patent Document 1) discloses a vibration signal generation program capable of changing vibration parameters.
Prior Art Documents
Patent Documents
[0003]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] There is room for improvement in the control method of the vibration motor.
Means for Solving the Problems
[0005] (Configuration 1) According to an embodiment, an information processing method for controlling a vibration motor in response to an instruction of a vibration frequency is provided. The information processing method includes a temperature measurement step of measuring a temperature, a determination step of determining that the temperature measured in the temperature measurement step satisfies a predetermined condition, and a frequency change step of changing the instructed frequency based on the determination in the determination step so that the vibration amount with respect to the input voltage is larger at the changed frequency than at the instructed frequency.
[0006] (Configuration 2) In Configuration 1, the determination step may include a first determination step of determining that the temperature measured in the temperature measurement step satisfies a first condition, and a second determination step of determining that the temperature measured in the temperature measurement step satisfies a second condition different from the first condition. The frequency change step may include a step of changing the frequency when it is determined in the first determination step that the first condition is satisfied. The information processing method may further include a restriction step of restricting the vibration of the vibration motor when it is determined in the second determination step that the second condition is satisfied. Note that the execution order of the first determination step and the second determination step is not limited. The execution order of the frequency change step and the restriction step is not limited.
[0007] (Configuration 3) In Configuration 1 or 2, the frequency change step may include a step of determining the changed frequency according to the instructed frequency.
[0008] (Configuration 4) In any of Configurations 1 to 3, the frequency change step may include a step of changing the frequency when the instructed frequency is within a certain range, and restricting the vibration of the vibration motor when the instructed frequency is outside the certain range.
[0009] (Configuration 5) In any of Configurations 1 to 4, the frequency change step may include a step of determining the changed frequency according to the temperature measured in the temperature measurement step.
[0010] (Configuration 6) In any of Configurations 1 to 5, the frequency change step may include a step of not changing the frequency when the instructed frequency is within a certain range.
[0011] (Configuration 7) According to an embodiment, an information processing method is provided for controlling a vibration motor upon receiving an instruction for the frequency of vibration. The information processing method includes a measurement step of measuring the remaining battery level, a determination step of determining that the remaining battery level measured in the measurement step satisfies a predetermined condition, and a frequency change step of changing the instructed frequency based on the determination in the determination step such that the vibration amount with respect to the input voltage is greater at the changed frequency than at the instructed frequency.
[0012] (Configuration 8) In Configuration 7, the determination step may include a first determination step of determining that the remaining battery level measured in the measurement step satisfies a first condition, and a second determination step of determining that the remaining battery level measured in the measurement step satisfies a second condition different from the first condition. The frequency change step may include a step of changing the frequency when it is determined in the first determination step that the first condition is satisfied. The information processing method may further include a restriction step of restricting the vibration of the vibration motor when it is determined in the second determination step that the second condition is satisfied. Note that the execution order of the first determination step and the second determination step is not limited. The execution order of the frequency change step and the restriction step is not limited.
[0013] (Configuration 9) In Configuration 7 or 8, the frequency change step may include a step of determining the changed frequency according to the instructed frequency.
[0014] (Configuration 10) In any of Configurations 7 to 9, the frequency change step may include a step of changing the frequency when the instructed frequency is within a certain range, and restricting the vibration of the vibration motor when the instructed frequency is outside the certain range.
[0015] (Configuration 11) In any of Configurations 7 to 10, the frequency change step may include a step of determining the changed frequency according to the remaining battery level measured in the measurement step.
[0016] (Configuration 12) In any of Configurations 7 to 11, the frequency change step may include a step of not changing the frequency when the instructed frequency is within a certain range.
[0017] (Configuration 13) According to an embodiment, an information processing system configured to execute each process described in any of Configurations 1 to 12 is provided.
[0018] (Configuration 14) According to an embodiment, a program configured to cause a computer to execute each process described in any one of Claims 1 to 12 is provided.
[0019] In any of the above configurations, it is not necessary for a single processor to execute all the processes, and a plurality of processors may execute the processes in cooperation. Also, when a plurality of processors are employed, each processor may be present in the same device or in different devices.
[0020] In any of the above configurations, the necessary processes may be realized by executing a single program, or the necessary processes may be realized by a plurality of processors each executing a different program.
Brief Description of Drawings
[0021]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Embodiments for Carrying Out the Invention
[0022] The present embodiment will be described in detail with reference to the drawings. Note that the same or corresponding parts in the drawings are denoted by the same reference numerals and their descriptions will not be repeated.
[0023] In this specification, the term "measurement" includes "estimation". In the following description, the term "estimation" can also be read as "measurement".
[0024] [A. Example of System Configuration] First, a configuration example of a game system 10 according to the present embodiment will be described.
[0025] FIG. 1 is a schematic diagram showing a configuration example of a game system 10 according to the present embodiment. The game system 10 includes a game device 100 and a game controller 200. The game device 100 executes application programs such as game programs. The game device 100 outputs video or images generated by the execution of the application program to a display device (not shown).
[0026] The game controller 200 receives operations from the user and transmits operation data indicating the received operation contents to the game device 100. The game controller 200 has a vibration motor 206 and drives the vibration motor 206 according to an instruction from the game device 100.
[0027] FIG. 1 shows a configuration example in which the game system 10 includes one game controller 200, but the game system 10 may include a plurality of game controllers 200.
[0028] The game device 100 includes a processor 101, a non-volatile memory 102, a volatile memory 103, a communication interface (I / F) 104, and a battery 106.
[0029] The processor 101 is a processing entity (processing means) for executing processing in the game device 100. The processor 101 is a processing circuit, for example, a CPU (Central Processing Unit) and a GPU (Graphics Processing Unit). The processor 101 expands and executes a program stored in the non-volatile memory 102 in the volatile memory 103. The processor 101 may be a SoC (System on Chip) in which the functions of the CPU and the GPU are integrated.
[0030] In this specification, the term "processor" includes at least a processing circuit that executes processing according to computer-readable instructions such as a CPU and a GPU, a SoC in which a plurality of functions are integrated, and a hard-wired circuit such as an ASIC (Application Specific Integrated Circuit) and an FPGA (Field Programmable Gate Array).
[0031] The non-volatile memory 102 is a storage medium accessible by the processor 101, and examples thereof include a flash memory, a ROM (Read Only Memory), and an SSD (Solid State Drive). Note that the non-volatile memory 102 may be a removable storage medium for the game device 100, such as an optical disk and a cartridge.
[0032] The non-volatile memory 102 stores a system program 102P1 and a game program 102P2.
[0033] The system program 102P1 includes computer-readable instructions for executing basic processing such as communication processing between the game device 100 and the game controller 200. The system program 102P1 may include libraries necessary for executing the game program 102P2.
[0034] The game program 102P2 includes computer-readable instructions for executing game processing. The game program 102P2 includes a vibration file 105.
[0035] The processing in the game device 100 described later is realized by the processor 101 executing at least one of the system program 102P1 and the game program 102P2.
[0036] The volatile memory 103 is a storage medium accessible by the processor 101, such as a DRAM (Dynamic Random Access Memory). During the execution of game processing, the volatile memory 103 includes a data area 103B1 for game progress, an operation data area 103B2, and a vibration instruction data area 103B3.
[0037] The data area 103B1 is an area for temporarily storing data necessary for game progress. The processor 101 refers to the data area 103B1 and updates the data in the data area 103B1 during the execution of the game program 102P2.
[0038] 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 during the execution of the game program 102P2.
[0039] The vibration instruction data area 103B3 is an area for temporarily storing vibration instruction data for vibrating the vibration motor 206. The processor 101 writes the vibration instruction data to the vibration instruction data area 103B3 at a predetermined cycle (e.g., 60 fps (frames per second); approximately 16 msec cycle) according to the execution of the game program 102P2. Details of the vibration instruction data will be described later.
[0040] In this specification, the term "memory" includes at least the non-volatile memory 102 and the volatile memory 103.
[0041] 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.
[0042] The battery 106 supplies the power required for the game device 100. The game device 100 includes a circuit for the battery 106 to supply power to each component of the game device 100 and a circuit (both not shown) for charging the battery 106 with an external power source. The game device 100 may include a circuit for measuring the remaining battery level of the battery 106.
[0043] 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, a temperature sensor 211, and a battery 212.
[0044] The game controller 200 is typically held by both or one of the user's hands, and receives operations from the user when the operation switch 210 is operated by the user's fingers. Note that the game controller 200 is not limited to a game controller in a form that is held by the user. For example, it may be a general-purpose keyboard and / or mouse that includes a vibration motor 206, or a game controller in a form that is laid on the floor and receives input when the user's sole touches it.
[0045] The MCU 201 includes a processor 202, a non-volatile memory 203, and a volatile memory 204.
[0046] The processor 202 is a processing entity (processing means) for executing the processing in the game controller 200. The processor 202 expands and executes the program stored in the non-volatile memory 203 in the volatile memory 204. Since the hardware configuration of the processor 202 is the same as that of the above-described processor 101, a detailed description will not be repeated.
[0047] The non-volatile memory 203 stores the system program 203P. Since the hardware configuration of the non-volatile memory 203 is the same as that of the above-described non-volatile memory 102, a detailed description will not be repeated.
[0048] 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 the execution of the processing of the game controller 200. Since the hardware configuration of the volatile memory 204 is the same as that of the above-described volatile memory 103, a detailed description will not be repeated.
[0049] The vibration instruction data area 204B1 is an area (FIFO (First-In First-Out) buffer) for temporarily storing the vibration instruction data transmitted from the game device 100.
[0050] The control data area 204B2 is an area (FIFO buffer) for temporarily storing the control data for vibrating the vibration motor 206, which is generated by the processor 202. As will be described later, in the present embodiment, the control data is generated based on the vibration instruction data.
[0051] The operation data area 204B4 is an area (buffer) for temporarily storing detection values of the acceleration sensor 208, the gyro sensor 209, the operation switch 210, and the like. The operation data is generated based on the data stored in the operation data area 204B4.
[0052] The resistance value area 204B3 is an area for temporarily storing the resistance value calculated from the current value and voltage value supplied by the amplifier 205 to the vibration motor 206.
[0053] FIG. 1 shows a configuration example using the MCU 201 including the processor 202, the non-volatile memory 203, and the volatile memory 204, but each element may adopt an independent configuration.
[0054] The amplifier 205 supplies power to the vibration motor 206 according to the control data 220. The amplifier 205 may supply a PWM (Pulse Width Modulation) signal with a predetermined carrier frequency (for example, 8 kHz) to the vibration motor 206. The amplifier 205 determines the duty ratio based on the control data 220 every operation cycle corresponding to one carrier (1 / 8 kHz = 0.125 ms) 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 a predetermined cycle, for example, by DMA (Direct Memory Access).
[0055] The vibration motor 206 is, for example, an eccentric motor in which a weight with a bias in shape is attached to the rotation axis. When the vibration motor 206 rotates, vibration is generated. The vibration motor 206 may be a linear motor or a coin-type motor, etc. Thereby, the vibration motor 206 can give vibration to the user holding the game controller 200 in which the vibration motor 206 is stored. In the game controller 200 of the present embodiment, the vibration motor 206 is a voice coil motor that can output audible sound.
[0056] The communication interface 207 performs data communication with the game device 100 using at least one of wireless communication and wired communication. Since the hardware configuration of the communication interface 207 is the same as that of the communication interface 104 described above, detailed description will not be repeated. The communication cycle between the communication interface 104 and the communication interface 207 may be variable based on instructions from the processor 101 and / or the processor 202, etc.
[0057] The acceleration sensor 208 detects the magnitude of the linear acceleration along a predetermined three-axis direction. Note that the acceleration sensor 208 may detect acceleration in one-axis or two-axis directions.
[0058] The gyro sensor 209 detects the tilt, angular velocity, angular acceleration, etc. of the game controller 200.
[0059] 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 characters such as the A button and the B button, a cross key for inputting the up, down, left, and right directions, and a 3D stick for inputting the tilt direction and tilt amount.
[0060] 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 arranged in the vicinity of the vibration motor 206. Also, if the temperature sensor 211 is arranged in a place near the MCU as well, it is possible to detect both the temperature rise of the vibration motor 206 and the MCU 201.
[0061] The battery 212 supplies the power required by the game controller 200. The game controller 200 includes a circuit for the battery 212 to supply power to each component of the game controller 200, and a circuit (both not shown) for charging the battery 212 with an external power source. The game controller 200 may include a circuit for measuring the remaining battery level of the battery 212. The circuit for measuring the remaining battery level may include, for example, at least one of a circuit for measuring the voltage value of the battery 212 and a circuit for measuring the current value flowing through the battery 212.
[0062] 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 device.
[0063] The system program 203P includes computer-readable instructions for executing necessary processes in the game controller 200. The system program 203P includes, for example, (1) processes for generating control data 220 provided to the amplifier 205 based on vibration instruction data received from the game device 100, (2) processes for estimating the temperature of the vibration motor 206, (3) processes for limiting the vibration of the vibration motor 206 based on the estimated temperature, (4) processes for changing the frequency of the vibration of the vibration motor 206 based on the estimated temperature, (5) processes for limiting the vibration of the vibration motor 206 based on the temperature measured by the temperature sensor 211, (6) processes for changing the frequency of the vibration motor 206 based on the temperature measured by the temperature sensor 211, (7) processes for filtering the detected values of the acceleration sensor 208 and the gyro sensor 209, (8) processes for calculating the attitude based on the detected values of the acceleration sensor 208 and the gyro sensor 209, and (9) processes for communicating between the game controller 200 and the game device 100, including computer-readable instructions for executing a plurality of processes in parallel. Note that some or all of the processes (1) to (9) may be independent computer-readable instructions. That is, the system program 203P may be a set of software prepared for each process.
[0064] The communication process between the game device 100 and the game controller 200 includes a process of transmitting operation data including detected 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.
[0065] [B. Vibration Instruction Data] Next, the vibration instruction data transmitted from the game device 100 to the game controller 200 will be described.
[0066] The vibration instruction data is data that instructs a vibration effect. The vibration instruction data is used for controlling the vibration motor 206. The vibration instruction data is, for example, data that specifies the waveform of control data for controlling vibration at a certain timing. The vibration instruction data 116 includes one or more vibration parameters that instruct the waveform of the control data. The vibration instruction data 116 may include, as an example of vibration parameters, a set of an amplitude parameter and a frequency parameter. The amplitude parameter is an example of an instruction of the amplitude value of vibration, and the frequency parameter is an example of an instruction of the frequency of vibration.
[0067] In the present embodiment, by designating one or more (N pieces) of the vibration instruction data 116 in chronological order for each vibration instruction period T (msec), the vibration effect for a period of T × N (msec) is designated. Hereinafter, the N pieces of vibration instruction data 116 designated in chronological order are also referred to as a "chronological vibration instruction data group". For example, the vibration instruction period T may be set to 5 msec.
[0068] By adopting such a data format, it is possible to easily specify a vibration effect in which the amplitude value and the frequency change.
[0069] FIG. 2 is a diagram for explaining the generation process of the chronological vibration instruction data group 110 in the game device 100 according to the present embodiment. Referring to FIG. 2, the vibration file 105 includes information for instructing a vibration effect for each vibration event.
[0070] More specifically, in the vibration file 105, for each vibration event, in addition to vibration parameters (an amplitude parameter and a frequency parameter), a wavelength number parameter is set. The wavelength number parameter is used to determine the number of vibration parameters that constitute the chronological vibration parameter group.
[0071] 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 110 that instructs the vibration effect corresponding to vibration event 1 includes two vibration instruction data. That is, the time-series vibration instruction data group 100 includes vibration instruction data for two cycles of the vibration instruction period.
[0072] In the vibration file 105 shown in FIG. 2, among the amplitude instruction data, the amplitude parameter 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 corresponding to the frequency, thereby generating the vibration instruction data 112. The amplitude parameter of the vibration instruction data 112 indicates the 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).
[0073] FIG. 3 is a diagram showing an example of the frequency characteristics of the maximum allowable voltage in the game system 10 according to the present embodiment. Referring to FIG. 3, the maximum voltage (maximum allowable voltage) that can be applied to the vibration motor 206 is different for each frequency. The system program 102P1 can refer to the frequency characteristics of the maximum allowable voltage as shown in FIG. 3.
[0074] With such a configuration, it is also possible to effectively utilize the maximum allowable voltage for each frequency to increase the vibration amount of the vibration motor 206. In addition, since the time-series vibration instruction data group 110 can be generated without considering the specifications of the vibration motor 206, etc., the implementation of the game program 102P2 can be facilitated.
[0075] In the above description, an example of the process 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 is shown. However, the time-series vibration instruction data group 110 (one or more vibration instruction data 112) may be prepared in advance as data in a file format. In this case, the processor 101 may read the data each time during the execution of the game program 102P2. By using such data in a file format, the process of generating the time-series vibration instruction data group 110 each time becomes unnecessary, so the implementation of the game program 102P2 can be facilitated. Note that the vibration instruction data 112 may be generated in real time without using the vibration file 105.
[0076] In the above description, an example of the process using the vibration instruction data for specifying the vibration at a certain timing is shown. However, the variation instruction data for specifying the change from the previous vibration may be adopted. The variation instruction data indicates, for example, the amount of change in the amplitude value and frequency compared with 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 amounts of change in the amplitude value 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.
[0077] In the above description, an example of the process in which the vibration instruction data 116 including the normalized amplitude parameter is generated by the processor 101 executing the game program 102P2 is shown. However, the vibration instruction data 112 (time-series vibration instruction data group 110) including the amplitude parameter for instructing the voltage amplitude value may be directly generated by the execution of the game program.
[0078] 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 every communication cycle (for example, 5 msec) between the communication interface 104 and the communication interface 207.
[0079] [C. Example of Processing in Game Device 100] Next, an example of processing in the game device 100 will be described.
[0080] FIG. 4 is a flowchart showing an example of processing of the game program 102P2 in the game device 100 according to the present embodiment. Each step shown in FIG. 4 is realized by the processor 101 of the game device 100 executing the game program 102P2. The game program 102P2 may be, for example, an action game, but the type of game is not limited at all.
[0081] Referring to FIG. 4, the processor 101 executes game processing (step S100). The game processing includes processing for determining the state of the game character based on the operation data and processing for generating an image to be output to the display device.
[0082] The processor 101 determines whether a vibration event has occurred by executing the game processing (step S101). The vibration event is a trigger for giving vibration to the user, and is, for example, an event such as a game object colliding with another game object or an explosion in the virtual space. The vibration event may occur at a predetermined timing. When a predetermined condition is satisfied as the game progresses, a vibration event occurs.
[0083] 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 no vibration event has occurred (NO in step S101), the process of step S102 is skipped.
[0084] The processor 101 executes other game processes (step S103). The processes of steps S100 to S103 are repeated until the end condition of the game process is satisfied.
[0085] FIG. 5 is a flowchart showing an example of the processing of the system program 102P1 in the game apparatus 100 according to the present embodiment. Each step shown in FIG. 5 is realized by the processor 101 of the game apparatus 100 executing the system program 102P1.
[0086] By executing the system program 102P1, the processor 101 of the game apparatus 100 generates a time-series vibration instruction data group 114 that instructs a waveform having a predetermined frequency or higher for driving the vibration motor 206 according to an instruction generated by executing an application program (game program 102P2).
[0087] Referring to FIG. 5, the processor 101 selects one of the vibration instruction data 116 included in the time-series vibration instruction data group 114 passed from the game program 102P2 (step S150). Then, the processor 101 determines the order set in the low-pass filter (hereinafter also abbreviated as "LPF") of the game controller 200 (step S151). As will be described later, the order of the LPF of the game controller 200 can be changed. As an example, the case where it is set to either the fourth order or the sixth order will be described. Note that the order of the LPF may be set or changed to any value.
[0088] If the order of the LPF of the game controller 200 is set to 6 (i.e., "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).
[0089] If the order of the LPF of the game controller 200 is set to 4 (i.e., "4th order" in step S151), the processor 101 sets the lower limit value of the frequency parameter to 50 Hz (step S153). When the order of the LPF is set to 4, the lower limit value of the frequency parameter is set higher by a predetermined value (e.g., 10 Hz) compared to the case where the order of the LPF is set to 6. Thus, when the order of the LPF is changed, a margin may be added to a certain range that limits the frequency parameter.
[0090] Subsequently, the processor 101 determines whether the frequency parameter of the selected vibration instruction data 116 is less than or equal to the lower limit value (step S154).
[0091] If the frequency parameter is less than or equal to the lower limit value (i.e., YES in step S154), the processor 101 changes the frequency parameter to the lower limit value (step S155). If the frequency parameter is not less than or equal to the lower limit value (i.e., NO in step S154), the process of step S155 is skipped.
[0092] The processes of steps S150 to S155 are for restricting the lower limit value of the frequency parameter indicated by the time-series vibration instruction data group 114 transmitted to the game controller 200. Note that, as an example of the lower limit frequency allowed in the control data, it may be 40 Hz or 50 Hz. Depending on the amplifier 205 and the vibration motor 206 of the game controller 200, the lower limit frequency can be arbitrarily set. Specifically, in the present embodiment, the frequency at which the vibration motor 206 can effectively vibrate as its frequency characteristic is greater than about 40 Hz. For example, when it drops to 30 Hz or less, the vibration becomes considerably weak. Therefore, the lower limit frequency that can be used in the game application is set to 40 Hz or 50 Hz.
[0093] In step S152, the amplitude parameter may be set to 0. By adopting such a process, since the frequency parameter of the vibration instruction data 116 is not reflected in the process, the instruction is canceled or invalidated.
[0094] Note that the processes of steps S150 to S155 may be included in the game program 102P2 instead of the system program 102P1.
[0095] 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 multiplies the maximum allowable voltage by the amplitude parameter (0 to 1) of the selected vibration instruction data 116 to calculate the voltage amplitude value (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 of the vibration of the vibration motor 206.
[0096] The processor 101 writes the 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).
[0097] The processor 101 determines whether it has processed all the vibration instruction data 116 included in the time-series vibration instruction data group 114 passed from the game program 102P2 (step S159). If not 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 (NO in step S159), the processing below step S150 is repeated.
[0098] 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.
[0099] The processing shown in FIG. 5 may be repeatedly executed at a predetermined period, or may be executed triggered by a predetermined condition being satisfied (for example, the time-series vibration instruction data group 114 being passed from the game program 102P2).
[0100] [D. Temperature Estimation Processing] Next, the temperature estimation processing according to the present embodiment will be described.
[0101] The game system 10 according to the present embodiment includes a temperature estimation system inside 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 value and voltage value of the vibration motor 206 and outputs them to the MCU. Based on the current value and voltage value corresponding to the signal equivalent to the measurement wave among this current value and voltage value, the resistance value and / or temperature is calculated.
[0102] In this specification, the "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 other waveforms.
[0103] The temperature estimated by the temperature estimation process indicates the temperature inside the vibration motor 206, and for example, it can be used to prevent thermal degradation 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.
[0104] The temperature estimation system according to the present disclosure is executed by the processing on the game controller 200 side, but part or all of it may be executed by the processing on the game system 10 side.
[0105] 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 (or the processor 202) can limit the vibration of the vibration motor 206 based on the estimated temperature of the vibration motor 206.
[0106] Limiting the vibration of the vibration motor 206 includes at least one of reducing the input voltage of the vibration motor 206 and weakening the vibration amount of the vibration motor 206. The vibration amount may be rephrased as the strength of the vibration. Also, limiting the vibration of the vibration motor 206 may include stopping the vibration motor 206 (including not performing the control to vibrate). By stopping the vibration motor 206, no vibration occurs.
[0107] The control system according to the present disclosure is not limited to the game controller 200 alone, and may be configured using at least a part of the game system 10.
[0108] [E. Example of Processing in Game Controller 200] Next, an example of processing in the game controller 200 will be described.
[0109] (e1: Generation Process of Control Data 220) In game controller 200, control data 220 is generated. The control data 220 is data that is input to amplifier 205 to control the vibration of vibration motor 206. More specifically, a time-series vibration instruction data group 110 is transmitted from game device 100 to game controller 200, and processor 202 of game controller 200 generates control data 220 based on the time-series vibration instruction data group 110. The control data 220 is typically data indicating voltage values of waveforms for driving the vibration motor 206, and is output or updated at a predetermined period. The control data 220 may be data indicating instantaneous values of the voltage for each period. Hereinafter, the period at which the control data 220 is output or updated is also referred to as the "control period".
[0110] The control period may be the same as the vibration instruction period (for example, 5 msec), but finer control can be achieved by making the control period shorter than the vibration instruction period. 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, it is possible to reduce the communication volume between the game device 100 and the game controller 200 while achieving finer control. For example, the control period may be 1 / 40 of the vibration instruction period (for example, 5 msec). That is, the control period may be 0.125 msec.
[0111]
[0112] The control data 220 indicates the waveform of the vibration (sine wave). However, the control data 220 may indicate a rectangular wave, or may indicate other waveforms depending on the system configuration. Also, instead of supplying a PWM modulation signal obtained by PWM-modulating the waveform of the vibration indicated by the control data 220 to the vibration motor 206, power obtained by directly amplifying the waveform of the vibration indicated by the control data 220 may be supplied to the vibration motor 206.FIG. 6 is a flowchart showing an example of a process for generating control data 220 in the game controller 200 according to the present embodiment. Each step shown in FIG. 6 is realized by the processor 202 of the game controller 200 executing the system program 203P. The process shown in FIG. 6 may be repeatedly executed at a predetermined cycle (for example, a vibration instruction cycle).
[0113] Referring to FIG. 6, the processor 202 determines whether there is data in the vibration instruction data area 204B1 (step S200). If there is no data in the vibration instruction data area 204B1 (NO in step S200), the process of step S200 is repeated.
[0114] If there is data in the vibration instruction data area 204B1 (YES in step S200), the processor 202 acquires the vibration instruction data 112 (step S201). At this time, among the data stored in the vibration instruction data area 204B1, the first (oldest) vibration instruction data 112 is acquired.
[0115] The processor 202 sets the index X to 1 (step S202). The processor 202 calculates a phase 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).
[0116] Note that immediately after the vibration instruction data 112 is newly acquired, the amplitude parameter and the frequency parameter may change significantly. In such a case, for at least one of the amplitude parameter (step S204) and the frequency parameter (step S203), instead of applying the indicated value as it is, it may be gradually changed from the previous value to the indicated value.
[0117] Based on the phase calculated in step S203, the processor 202 calculates the voltage value of the measurement wave (for example, the amplitude value is 0.1V and the frequency is 10Hz) (step S205). In this way, the processor 202 generates a measurement wave for estimating the temperature inside the vibration motor 206.
[0118] The processor 202 adds the control data (voltage value) calculated in step S204 and the voltage value of the measurement wave calculated in step S205 (step S206). In this way, the processor 202 generates superimposed control data by superimposing the measurement wave on the control data for the 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 the waveform by the vibration instruction data 112 for driving the vibration motor 206.
[0119] The processor 202 writes the addition result (superimposed control data with the voltage of the measurement wave 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 with the voltage of the measurement wave 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.
[0120] The processor 202 increments the index X by 1 (step S208). The processor 202 determines whether the incremented index X exceeds 40 (step S209).
[0121] If the incremented index X does not exceed 40 (= vibration instruction period / control period) (NO in step S209), the processing from step S203 and below is repeated. If the incremented index X exceeds 40 (YES in step S209), the processor 202 deletes the vibration instruction data 112 acquired in step S201 from the vibration instruction data area 204B1 (step S210). Then, the processing from step S200 and below is repeated.
[0122] In the example of the generation process of the control data 220 according to the present embodiment, since a measurement wave having a frequency lower than the audible range (for example, 20 Hz to 20,000 Hz) (for example, 10 Hz) is adopted, it is possible to avoid hearing a sound due to the measurement wave from the voice coil motor. Further, due to the processing ability of the processor, even when a high frequency cannot be generated and a measurement wave higher than the audible range cannot be used, temperature estimation becomes possible. Also, the temperature inside the vibration motor 206 can be estimated in a state where the influence on the vibration given to the user is small.
[0123] The frequency of the measurement wave is not limited to 10 Hz, and may be set to any frequency lower than, for example, 40 Hz (the lower limit value of the frequency parameter available for the application). That is, a measurement wave lower than the lower limit frequency of the control data for the vibration of the vibration motor 206, which is a voice coil motor, may be adopted. Also, from another perspective, it may be set to any frequency lower than the audible range. The frequency of the measurement wave can also be set to a frequency of 20 Hz or less, and may be set to, for example, 20 Hz, 15 Hz, etc., or may be set to a frequency of 10 Hz or less. Thus, a frequency of 20 Hz or less may be used as the frequency of the measurement wave.
[0124] In the generation process example shown in FIG. 6, although the amplitude value of the measurement wave is constant (for example, 0.1 V), 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 for implementing this modification example.
[0125] FIG. 7 is a flowchart showing a modification example of the generation process of the control data 220 in the game controller 200 according to the present embodiment. Each step shown in FIG. 7 is realized by the processor 202 of the game controller 200 executing the system program 203P. In the modification example shown in FIG. 7, steps S214 and S215 are adopted instead of step S205 in the generation process example shown in FIG. 6.
[0126] 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.
[0127] Specifically for illustration, 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 less than 3 V, the amplitude value of the measurement wave may be determined to be 0.1 V. Alternatively, a value obtained by multiplying the amplitude parameter of the vibration instruction data 112 by a predetermined ratio (for example, 5% or the like) may be determined as the amplitude value of the measurement wave.
[0128] The processor 202 calculates the voltage value of the measurement wave based on the phase calculated in step S203 so that the measurement wave (amplitude value is the value determined in step S214, frequency is 10 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.
[0129] The processes other than steps S215 and S216 are the same as the corresponding processes in FIG. 6, and thus detailed descriptions thereof will not be repeated.
[0130] The larger the amplitude value of the measurement wave, the higher the accuracy of temperature estimation. However, if the amplitude value of the measurement wave becomes too large, it will give the user an unintended feeling. As described above, by dynamically changing the amplitude value of the measurement wave according to the amplitude value of the vibration originally given to the user, the accuracy of temperature estimation can be improved, and the user's feeling of an unintended measurement wave can be reduced.
[0131] (e2: Temperature Estimation 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.
[0132] FIG. 8 is a flowchart showing the temperature estimation process in the game controller 200 according to the present embodiment. Each step shown in FIG. 8 is realized by the processor 202 of the game controller 200 executing the system program 203P.
[0133] Referring to FIG. 8, the processor 202 acquires the current values and voltage values of a predetermined number (for example, 40) of vibration motors 206 from the amplifier 205 (step S220). That is, the processor 202 acquires the current value and voltage value inside the vibration motor 206 to which the superimposed control data obtained by superimposing the measurement wave on the control data is input. For example, a set of current values and voltage values detected every operation period (for example, 0.125 ms) of the amplifier 205 may be acquired 40 in chronological order (that is, for 5 msec).
[0134] The processor 202 executes the LPF order determination process (step S221). Note that the calculation accuracy improves as the order of the LPF increases. The processor 202 executes the LPF process for each of the 40 current values and 40 voltage values acquired in step S220 with the order determined in step S221 (step S222). In this way, the processor 202 performs the LPF process on the acquired current values and voltage values.
[0135] The LPF process extracts components of 10 Hz or less from, for example, 40 current values (time waveform of current values) and 40 voltage values (time waveform of voltage values), respectively. By the LPF process, components corresponding to the measurement wave calculated in step S205 of FIG. 6 are extracted. Any filter structure may be used, for example, an IIR (Infinite Impulse Response) filter or an FIR (Finite Impulse Response) filter can be used.
[0136] As an example, for the input x n and the corresponding output y n at time n, the second-order IIR digital filter can be described using the following calculation formulas (1) and (2).
[0137] 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 is a value adopted for calculation convenience, and a1, a2, b0, b1, b2 are parameters that determine the filter characteristics.
[0138] Since the IIR filter according to the above formula is a second-order filter, a fourth-order filter can be realized by connecting two of them in series, and a sixth-order filter can be realized by connecting three of them in series. Note that connecting IIR filters in series means using the output y n of the previous IIR filter as the input x n of the subsequent IIR filter. In implementation, at one operation timing, the filtering result by a fourth-order filter can be obtained by repeating the calculations according to calculation formulas (1) and (2) twice, and the filtering result by a sixth-order filter can be obtained by repeating the calculations according to calculation formulas (1) and (2) three times.
[0139] Note that fourth-order and sixth-order IIR filters may 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 calculation formulas (3) and (4).
[0140] 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) Thus, according to the change in the order, the calculation formula used for frequency filtering is changed. The change in the calculation formula may be a change in the order of the calculation formula. Also, in frequency filtering, the lower the set order, the lower the calculation load. Since the FIR filter is described by a different calculation formula from the IIR filter, the calculation formula is also changed even when the FIR filter is changed to an IIR filter.
[0141] As an example of frequency filtering, the LPF process has been described, but filtering processes using a band-pass filter or a high-pass filter may also be adopted. For frequency filtering, any filter (LPF, high-pass filter, and band-pass filter) can be used.
[0142] The processor 202 calculates a resistance value using the current value (time waveform of the current value) and the voltage value (time waveform of the voltage value) after the LPF process (step S223). In this way, the processor 202 calculates the resistance value inside the vibration motor 206, which is a voice coil motor, based on the LPF-processed current value and voltage value. The resistance value calculated in step S223 is the value in each execution period (for example, 50 msec) of the temperature estimation process.
[0143] The processor 202 writes the calculated resistance value into the resistance value area 204B3 (step S224). Note that the resistance value area 204B3 is configured to be able to store 40 resistance values. In this case, the resistance values for 2 sec (50 msec × 40 pieces) are stored in time series in the resistance value area 204B3.
[0144] The process shown in FIG. 8 may be repeatedly executed at a predetermined execution period (for example, 50 msec). The execution period of the process shown in FIG. 8 may be set longer than the execution period of the temperature measurement by the temperature sensor 211 shown in FIG. 12 described later. By making the execution period of the temperature estimation process longer than the execution period of the temperature measurement by the temperature sensor 211, it is possible to reduce the load on the MCU 201 (processor 202) that has to execute a plurality of processes while maintaining the level of temperature management.
[0145] FIG. 9 is a flowchart showing a more detailed processing example of the LPF order determination process (step S221) shown in FIG. 8. Referring to FIG. 9, the processor 202 determines whether the load on the MCU 201 is equal to or higher than a predetermined level (step S2210). Whether the load on the MCU 201 is equal to or higher than a predetermined level may adopt one or more of the following determination methods.
[0146] (1) Measure the operating rate of the MCU 201. When the measured operating rate is equal to or higher than a predetermined value, it is determined that the load on the MCU 201 is at or above a predetermined level.
[0147] (2) Determine whether the MCU 201 is executing a predetermined process. If it is executing a predetermined process, it is determined that the load on the MCU 201 is at or above a predetermined level. The predetermined process may be, for example, (a) processing of input or output of sensors of the game controller 200 (such as a motion sensor (acceleration sensor 208 or gyro sensor 209), camera, microphone, infrared sensor, etc.), or (b) processing of input or output of an external device connected to the game controller 200. At least a part of the motion sensor, camera, microphone, and infrared sensor may be a peripheral device connectable to the game controller 200.
[0148] (3) When the period of communicating vibration instruction data (control data for controlling vibration) between the game device 100 and the game controller 200 is variable, if the period of the communication is at or above a predetermined level (such as the communication rate being at or above a predetermined value or the time interval being at or below a predetermined value), it is determined that the load on the MCU 201 is at or above a predetermined level.
[0149] If the load on the MCU 201 is at or above a predetermined level (YES in step S2210), the processor 202 determines that the order of the LPF is 4 (step S2211). In this way, the processor 202 changes the order of the LPF according to the load on the MCU 201 (the processor 202 that executes the LPF process).
[0150] If the load on the MCU 201 is lower than a predetermined level (NO in step S2210), the 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).
[0151] If the temperature estimated in step S241 is equal to or higher than a predetermined value (YES in step S2213), the processor 202 determines that the order of the LPF is 6 (step S2214). On the other hand, if the temperature estimated in step S241 is lower than the predetermined value (NO in step S2213), the processor 202 determines that the order of the LPF is 4 (step S2215). Thus, the processor 202 changes the order of the LPF according to the estimated temperature.
[0152] The temperature estimation process places a large load on the MCU201. Therefore, as shown in step S2210, by changing the order of the LPF that determines the magnitude of the load required for execution according to the load on the MCU201, the impact on other processes executed by the MCU201 can be reduced.
[0153] Note that the processor in the game controller may be less powerful than the processor in the game device. In such a case, it is necessary to reduce the load on the processor in the game controller.
[0154] As shown in step S2213, when the temperature becomes equal to or higher than the predetermined value, the order of the LPF is increased to improve the accuracy of temperature estimation. On the other hand, if not, since the necessity for the accuracy of temperature estimation is low, the order of the LPF is decreased to reduce the load required for the process. Thus, in a situation where the accuracy of temperature estimation is not required, by reducing the load required for execution, even the MCU201 with limited processing resources can execute a plurality of processes in parallel.
[0155] Note that the specific numerical values of the order are merely examples. In step S2211, for example, the order may be decreased from 5 to 3, or the order may be decreased from 6 to 5. The order when the load on the MCU201 is high (the order set in S2211) and the order when the estimated temperature is low (the order set in S2215) may be different.
[0156] The process of step S2211 may be executed only when the estimated temperature is less than 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. Thereby, only when the temperature becomes equal to or higher than the predetermined value, the accuracy of temperature estimation may be improved, and the load on the MCU201 may not be increased when the temperature is less than the predetermined value.
[0157] When the load on the MCU201 is equal to or higher than a predetermined level or when the temperature is less than a predetermined value, the process of reducing the order of the LPF may also be applied when a FIR filter is used as the LPF.
[0158] When the load on the MCU201 is equal to or higher than a predetermined level, it may be changed from a FIR filter to an IIR filter. Also, when the temperature is less than a predetermined value, it may be changed from a FIR filter to an IIR filter. At this time, the order of the calculation formula of the FIR filter and the order of the calculation formula of the IIR filter may be the same. Generally, an IIR filter can obtain a greater filter effect with a smaller order (that is, a lower calculation load) compared to a FIR filter.
[0159] (e3: Correction process of vibration instruction data based on the estimated temperature) The vibration instruction data may be corrected based on the estimated temperature. Correcting the vibration instruction data may include at least one of a process of restricting the vibration of the vibration motor and a process of changing the frequency of the vibration of the vibration motor.
[0160] FIG. 10 is a flowchart showing a process of correcting vibration instruction data based on the estimated temperature in the game controller 200 according to the present embodiment. Each step shown in FIG. 10 is realized by the processor 202 of the game controller 200 executing the system program 203P. The process shown in FIG. 10 may be repeatedly executed at a predetermined execution cycle (for example, 50 msec).
[0161] Referring to FIG. 10, the processor 202 calculates the average resistance value from the 40 resistance values stored in the resistance value region 204B3 (step S240). Note that other representative values such as the median or the mode may be used instead of the average value. The processor 202 estimates the temperature from the calculated average resistance value (step S241). The process of estimating the temperature from the average resistance value may use a predetermined calculation formula or a table defining the correspondence between the resistance value and the temperature. As shown in step S240, the processor 202 may acquire the current value and the voltage value over a predetermined period or a predetermined number of times, thereby calculating the resistance value multiple times. Then, the processor 202 may estimate the temperature based on the resistance values obtained multiple times.
[0162] The processor 202 determines the order set in the LPF (step S242). If the order of the LPF is set to 6 (in step S242, "6th order"), the processor 202 sets the first threshold temperature and the second threshold temperature according to the order of the LPF (6th order) (step S243). Note that in the present embodiment, a value higher than the second threshold temperature is set as the first threshold temperature.
[0163] If the order of the LPF is set to 4 (in step S242, "4th order"), the processor 202 sets the first threshold temperature and the second threshold temperature according to the order of the LPF (4th order) (step S244). Note that in the present embodiment, the first threshold temperature when the order of the LPF is 4 is set to a value lower than the first threshold temperature when the order of the LPF is 6. Also, the second threshold temperature when the order of the LPF is 4 is set to a value lower than the second threshold temperature when the order of the LPF is 6.
[0164] The processor 202 determines whether the estimated temperature is equal to or higher than the first threshold temperature (step S245).
[0165] If the estimated temperature is equal to or higher than the first threshold temperature (YES in step S245), the processor 202 changes the amplitude parameter of the leading vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 to zero (step S246). Subsequently, the 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 processes from step S246 onward are repeated. If the predetermined time has elapsed (YES in step S247), the processes from step S240 onward are repeated.
[0166] If the estimated temperature is lower than the first threshold temperature (NO in step S245), the processor 202 determines whether or not the estimated temperature is equal to or higher than the second threshold temperature (step S248). If the estimated temperature is lower than the second threshold temperature (NO in step S248), the processes from step S240 onward are repeated.
[0167] On the other hand, if the estimated temperature is equal to or higher than the second threshold temperature (YES in step S248), the processor 202 changes the vibration frequency of the vibration motor 206 or restricts the vibration of the vibration motor 206.
[0168] More specifically, the processor 202 determines whether or not 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 150 Hz or higher (step S249).
[0169] If the frequency parameter of the leading vibration instruction data 112 is 150 Hz or higher (YES in step S249), the processor 202 changes the frequency parameter of the leading vibration instruction data 112 to 100 Hz (step S250).
[0170] 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 the processor 202 may change the amplitude parameter of the leading vibration instruction data 112 to the upper limit value only when the amplitude parameter of the leading vibration instruction data 112 exceeds the upper limit value. In this way, the restriction of the vibration of the vibration motor 206 includes a process of reducing the amplitude of the waveform for driving the vibration motor 206. Note that as a method of restricting vibration, both a frequency shift and a method of reducing the amplitude may be adopted.
[0171] Subsequently, the processor 202 determines whether or not a predetermined time has elapsed (step S252). If the predetermined time has not elapsed (NO in step S252), the processes from step S249 and below are repeated. If the predetermined time has elapsed (YES in step S252), the processes from step S240 and below are repeated.
[0172] In this way, when the estimated temperature becomes equal to or higher than a predetermined value, the processor 202 may restrict the vibration of the vibration motor 206, which is a voice coil motor (S246, S251).
[0173] As shown in step S250, when the estimated temperature becomes equal to or higher than a predetermined value, the processor 202 shifts the control data of the vibration of the vibration motor 206, which is a voice coil motor, from the instructed frequency to another frequency. The frequency shift of the vibration motor 206 is a process of shifting the frequency of the waveform for driving the vibration motor 206 to a frequency with better vibration efficiency. As can be seen with reference to FIG. 3, the vibration motor 206 of the present embodiment has the characteristic of being most likely to vibrate at a frequency of 100 Hz (the characteristic of large vibration even at a low driving voltage).
[0174] More specifically, in an example of the frequency characteristics shown in FIG. 3, the amount of vibration with respect to a certain input voltage in the vicinity of 100 Hz (about 50 Hz to about 150 Hz) is greater than the amount of vibration with respect to the same input voltage at other frequencies (for example, about 50 Hz or less and about 150 Hz or more). In step S250, the processor 202 changes the instructed frequency parameter so that the amount of vibration with respect to the input voltage is greater at the changed frequency than at the instructed frequency. It can also be said that the frequencies in the vicinity of 100 Hz are frequencies at which the same amount of vibration can be achieved with a lower voltage.
[0175] Note that in step S246, the control data 220 existing in the control data area 204B2 may be changed to zero. Also, in step S247, instead of waiting for a predetermined time to elapse, steps S240 and S241 may be executed again and waiting may be continued until the estimated temperature (or the temperature measured by the temperature sensor 211) becomes equal to or lower than a predetermined threshold temperature.
[0176] The execution order of the determination process in step S245 and the determination process in step S248 is not limited. Also, the execution order of the processes (steps S246, S250, S251) corresponding to each determination is not limited.
[0177] When a large amount of power is supplied to the vibration motor 206, the resistance value of the vibration motor 206 instantaneously increases. Even with such an instantaneous increase in the resistance value, the influence of thermal degradation of the vibration motor 206 is small. Therefore, as shown in step S240, the vibration of the vibration motor 206 is restricted based on the result of averaging the resistance values over a predetermined period. As a result, the output from the vibration motor 206 can be instantaneously increased.
[0178] Also, when the frequency of the measurement wave is low, the accuracy of temperature estimation decreases if the estimation period is short. Therefore, as shown in step S240, the accuracy of temperature estimation can be improved by using an average value obtained by using a plurality of resistance values over a longer period.
[0179] (e4: Modification Processing of Vibration Instruction Data Based on Battery Level) The vibration instruction data may be modified based on the battery level of the battery 212 of the game controller 200.
[0180] FIG. 11 is a flowchart showing the modification process of the vibration instruction data based on the battery level in the game controller 200 according to the present embodiment. Each step shown in FIG. 11 is 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, 50 msec). Note that the same processes as those shown in FIG. 10 will not be described repeatedly.
[0181] Referring to FIG. 11, the processor 202 measures the battery level of the battery 212 (step S270). The method for measuring the battery level may be any method. For example, the battery level may be calculated by monitoring the current value and voltage value generated during charging and discharging of the battery 212, or may be calculated based on the voltage value shown on the battery 212.
[0182] The processor 202 determines whether the measured battery level is less than or equal to a first threshold (step S271).
[0183] If the measured battery level is less than or equal to the first threshold (YES in step S271), the processor 202 changes the amplitude parameter of the first vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 to zero (step S272). Then, the processes below step S270 are repeated.
[0184] If the measured battery level is higher than the first threshold (NO in step S271), the processor 202 determines whether the measured battery level is equal to or lower than the second threshold (step S273). In the present embodiment, the second threshold is set to a value higher than the first threshold. If the measured battery level is higher than the second threshold (NO in step S273), the processes below step S270 are repeated.
[0185] On the other hand, if the measured battery level is equal to or lower than the second threshold (YES in step S273), the processor 202 changes the vibration frequency of the vibration motor 206 or restricts the vibration of the vibration motor 206.
[0186] More specifically, the processor 202 determines whether the frequency parameter of the first vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 is 150 Hz or more (step S274).
[0187] If the frequency parameter of the first vibration instruction data 112 is 150 Hz or more (YES in step S274), the processor 202 changes the frequency parameter of the first vibration instruction data 112 to 100 Hz (step S275). Then, the processes below step S270 are repeated.
[0188] In this way, when the measured battery level becomes equal to or lower than a predetermined value, the processor 202 shifts the control data of the vibration of the vibration motor 206, which is a voice coil motor, from the instructed frequency to another frequency. The frequency shift of the vibration motor 206 is a process of shifting the frequency of the waveform for driving the vibration motor 206 to a frequency with better vibration efficiency.
[0189] If the frequency parameter of the leading vibration instruction data 112 is lower than 150 Hz (NO in step S274), the processor 202 reduces the amplitude parameter of the leading vibration instruction data 112 (for example, changes it to half the value) (step S276). Then, the processing from step S270 and below is repeated.
[0190] In this way, when the measured remaining battery level becomes equal to or lower than a predetermined value, the processor 202 may limit the vibration of the vibration motor 206, which is a voice coil motor (S272, S276).
[0191] Note that only when the amplitude parameter of the leading vibration instruction data 112 exceeds the upper limit value, the processor 202 may change the amplitude parameter of the leading vibration instruction data 112 to the upper limit value. In this way, the limitation of the vibration of the vibration motor 206 includes the process of reducing the amplitude of the waveform for driving the vibration motor 206. As a method of limiting vibration, a frequency shift may be combined.
[0192] Note that in step S272, the control data 220 existing in the control data area 204B2 may be changed to zero.
[0193] The execution order of the determination process in step S271 and the determination process in step S273 is not limited. Also, the execution order of the processes (steps S272, S275, S276) corresponding to each determination is not limited.
[0194] (e5: Adjustment during the correction process of vibration instruction data) Of the correction process of the vibration instruction data based on the estimated temperature shown in FIG. 10 and the correction process of the vibration instruction data based on the remaining battery level shown in FIG. 11, both correction processes may be executed, or only one of the correction processes may be executed.
[0195] After the correction process of the vibration instruction data based on the estimated temperature shown in FIG. 10 is executed for each predetermined execution cycle, the correction process of the vibration instruction data based on the remaining battery level shown in FIG. 11 may be executed. Conversely, after the correction process of the vibration instruction data based on the remaining battery level shown in FIG. 11 is executed for each predetermined execution cycle, the correction process of the vibration instruction data based on the estimated temperature shown in FIG. 10 may be executed. Note that the correction process of the vibration instruction data shown in FIG. 10 and the correction process of the vibration instruction data shown in FIG. 11 may be executed in different execution cycles respectively.
[0196] When the correction process shown in FIG. 10 and the correction process shown in FIG. 11 are executed, the following adjustment process may be performed.
[0197] (1) When at least one of step S246 in FIG. 10 and step S272 in FIG. 11 is executed, the amplitude parameter of the leading vibration instruction data 112 is changed to zero.
[0198] (2) When neither step S246 in FIG. 10 nor step S272 in FIG. 11 is executed, and at least one of step S250 in FIG. 10 and step S275 in FIG. 11 is executed, the frequency parameter of the leading vibration instruction data 112 is changed to 100 Hz.
[0199] (3) When neither step S246 in FIG. 10 nor step S272 in FIG. 11 is executed, and neither step S250 in FIG. 10 nor step S275 in FIG. 11 is executed, and at least one of step S251 in FIG. 10 and step S276 in FIG. 11 is executed, the amplitude parameter of the leading vibration instruction data 112 is reduced (for example, changed to half the value).
[0200] In this way, in each correction process, when corrections of different vibration instruction data are determined, the determination in one of the correction processes may be prioritized according to a predetermined adjustment rule. Note that the order of the adjustment rules shown in (1) to (3) can be changed as appropriate.
[0201] (e6: Modification example) At least one of the correction process of the vibration instruction data based on the above estimated temperature (Fig. 10) and the correction process of the vibration instruction data based on the remaining battery level (Fig. 11) may be modified as follows.
[0202] In the above steps S250 and S275, an example of the process of changing the frequency when the acquired frequency parameter is 150 Hz or more was shown. As a modification example, depending on the instructed frequency, either the change of the frequency or the restriction of the vibration of the vibration motor 206 may be selected. In other words, when the instructed frequency is within a certain range, the frequency may be changed, and when it is outside the certain range, the vibration of the vibration motor 206 may be restricted. For example, if the acquired frequency parameter is 300 Hz or more, the value of the amplitude parameter may be changed to zero without changing the frequency parameter.
[0203] In the above steps S250 and S275, an example of the process of changing the frequency when the acquired frequency parameter is 150 Hz or more was shown. As a modification example, it may not be necessary to change the frequency when the instructed frequency is within a certain range. For example, if the acquired frequency parameter is within the range of 50 Hz to 150 Hz, the value of the frequency parameter may be maintained as it is.
[0204] In the above steps S250 and S275, an example of changing the frequency parameter to a fixed value (for example, 100 Hz) was shown. As a modification example, the frequency after the change may be determined according to the instructed frequency. For example, if the acquired frequency parameter is 200 Hz, it may be changed to 100 Hz, and if the acquired frequency parameter is 300 Hz, it may be changed to 125 Hz.
[0205] In the above steps S250 and S275, an example was shown in which the frequency parameter was changed to a fixed value (for example, 100 Hz). As a modification, the frequency after the change may be determined according to the temperature estimated by the temperature estimation process (or the temperature measured by the temperature sensor 211). For example, when the acquired frequency parameter is 150 Hz, if the estimated temperature (or the measured temperature) is equal to or higher than the first threshold temperature (see steps S243 and S244), it is changed to 100 Hz, and if the estimated temperature (or the measured temperature) is lower than the first threshold temperature and equal to or higher than the second threshold temperature, it may be changed to 125 Hz. Note that the first threshold temperature and the second threshold temperature (lower than the first threshold temperature) may be set independently of the first threshold temperature and the second threshold temperature set in steps S243 and S244.
[0206] Note that only some of the above modifications may be adopted, or they may be combined as appropriate.
[0207] (e7: Correction process of vibration instruction data based on measured temperature) In the game controller 200, the temperature is measured using the temperature sensor 211. The vibration instruction data may be corrected based on the measured temperature.
[0208] FIG. 12 is a flowchart showing a correction process of vibration instruction data based on the measured temperature in the game controller 200 according to the present embodiment. Each step shown in FIG. 12 is realized by the processor 202 of the game controller 200 executing the system program 203P. The process shown in FIG. 12 may be repeatedly executed at a predetermined execution cycle (for example, 5 msec).
[0209] Referring to FIG. 12, the processor 202 calculates the temperature from the resistance value of the temperature sensor 211 (for example, a thermistor) (step S260). That is, the processor 202 measures the temperature with the temperature sensor 211 disposed outside the vibration motor 206.
[0210] The processor 202 determines whether the temperature measured by the temperature sensor 211 is equal to or higher than a third threshold temperature (step S261). If the measured temperature is lower than the third threshold temperature (NO in step S261), the processes below step S260 are repeated. In the present embodiment, a value lower than the first threshold temperature is set as the third threshold temperature.
[0211] If the calculated temperature is equal to or higher than the third threshold temperature (YES in step S261), the processor 202 changes the amplitude parameter of the leading vibration instruction data 112 among the data stored in the vibration instruction data area 204B1 to zero (step S262). Subsequently, the processor 202 determines whether a predetermined time has elapsed (step S263). If the predetermined time has not elapsed (NO in step S263), the processes below step S262 are repeated. If the predetermined time has elapsed (YES in step S263), the processes below step S260 are repeated.
[0212] Note that in step S262, instead of changing the amplitude parameter to zero, as shown in steps S247 and S248 (see FIG. 10), reduction of the amplitude parameter or shift of the frequency parameter (i.e., change of the instructed frequency) may be performed. In this way, when the temperature measured by the temperature sensor 211 becomes equal to or higher than a predetermined value, the processor 202 may limit the vibration of the vibration motor 206, which is a voice coil motor (S262).
[0213] As shown in FIG. 12, when the temperature measured by the temperature sensor 211 becomes equal to or higher than the third threshold temperature, the processor 202 stops driving the vibration motor 206. Since the execution period of the process shown in FIG. 12 is, for example, 5 msec, the period (5 msec) in which the temperature is measured by the temperature sensor 211 is shorter than the period in which the temperature is calculated based on the resistance value (the execution period of the process shown in FIG. 10 is, for example, 50 msec). By providing such a difference in the execution period, the execution frequency of the temperature estimation process with a large load on the MCU 201 can be reduced.
[0214] (e8: Combination) Each of the above-described correction processes and each of the modification examples of the vibration motor can be combined as appropriate.
[0215] [F. Modification Example] In the above description, as an example of the application program, a processing example in which a game program generates vibration instruction data is shown. However, it is not limited to the game program, and any application program can generate vibration instruction data.
[0216] FIG. 1 shows a configuration example in which the game device 100 includes one processor 101, but the game device 100 may include a plurality of processors 101. Similarly, FIG. 1 shows a configuration example in which the MCU 201 of the game controller 200 includes one processor 202, but the MCU 201 may include a plurality of processors 101.
[0217] FIG. 1 shows a configuration example in which the game device 100 includes one non-volatile memory 102 and one volatile memory 103, but the game device 100 may include a plurality of non-volatile memories 102 and / or a plurality of volatile memories 103. Similarly, FIG. 1 shows a configuration example in which the MCU 201 of the game controller 200 includes one non-volatile memory 203 and one volatile memory 204, but the MCU 201 may include a plurality of non-volatile memories 203 and / or volatile memories 204.
[0218] In the above description, a configuration example in which the processor 101 of the game device 100 and the MCU 201 (processor 202) of the game controller 200 share the processing is shown. However, only the processor 101 of the game device 100 (or the MCU 201 (processor 202) of the game controller 200) may execute the processing.
[0219] Also, 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 the processing may be arbitrarily divided. For example, the generation process of the control data 220 may be executed in the game device 100.
[0220] The program includes source code, intermediate code, object code, native code, script, etc., and the form of the code is not limited. Also, it may operate on an interpreter or emulator.
[0221] The program may be executed by one processor, or each part of the program may be executed by different processors. Also, each function of the present embodiment may be realized by a plurality of divided programs. In this case, it can be said that the set of the plurality of programs is a program.
[0222] Each function of the present embodiment does not necessarily have to be realized only by the processing of the processor, and may be realized by using various functions of a computer (software such as a main processor, memory, sub-processor, peripheral circuit, firmware, etc., and in some cases, a computer configured by an interpreter or emulator). For example, when the processor executes a program to issue instructions to other processors, peripheral circuits, etc., and finally, other processors, peripheral circuits, etc. execute each function, such an aspect is also included in the embodiments of the present embodiment.
[0223] Also, a system in which the game device 100 and the game controller 200 are integrated may be used. Note that an aspect in which a plurality of processors share and cooperate to execute the processing executed by a single processor in the present embodiment is also included in this specification as a modification example.
[0224] The embodiments disclosed this time should be considered as illustrative in all respects and not restrictive. The scope of the present invention is shown not by the above description but by the claims, and it is intended that all modifications within the meaning and scope equivalent to the claims are included.
Explanation of Signs
[0225] 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, 106,212 Battery, 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. An information processing method for controlling a vibration motor upon receiving an instruction of a vibration frequency, comprising: a temperature measurement step of measuring temperature; a determination step of determining whether the temperature measured in the temperature measurement step satisfies a predetermined condition; a frequency change step of changing the instructed frequency based on the determination in the determination step such that the vibration amount with respect to the input voltage is larger at a changed frequency than at the instructed frequency.
2. The determination step includes: a first determination step of determining whether the temperature measured in the temperature measurement step satisfies a first condition; a second determination step of determining whether the temperature measured in the temperature measurement step satisfies a second condition different from the first condition, the frequency change step includes a step of changing the frequency when it is determined in the first determination step that the first condition is satisfied, and the information processing method further includes a restriction step of restricting the vibration of the vibration motor when it is determined in the second determination step that the second condition is satisfied, according to the information processing method of Claim 1.
3. The frequency change step includes a step of determining the changed frequency according to the instructed frequency, according to the information processing method of Claim 1 or 2.
4. The frequency change step includes a step of changing the frequency when the instructed frequency is within a certain range, and a step of restricting the vibration of the vibration motor when the instructed frequency is outside the certain range, according to the information processing method of Claim 1 or 2.
5. The frequency change step includes a step of determining the changed frequency according to the temperature measured in the temperature measurement step, according to the information processing method of Claim 1 or 2.
6. The frequency change step includes a step of not changing the frequency when the instructed frequency is within a certain range, according to the information processing method of Claim 1.
7. An information processing method for controlling a vibration motor upon receiving an instruction of a vibration frequency, comprising: a measurement step of measuring the remaining battery level; a determination step of determining whether the remaining battery level measured in the measurement step satisfies a predetermined condition; An information processing method comprising: a frequency changing step of changing the indicated frequency based on the determination in the determination step such that the amount of vibration with respect to the input voltage is larger at the changed frequency than at the indicated frequency.
8. The determination step includes: a first determination step of determining that the remaining battery level measured in the measurement step satisfies a first condition; a second determination step of determining that the remaining battery level measured in the measurement step satisfies a second condition different from the first condition, the frequency changing step including a step of changing the frequency when it is determined in the first determination step that the first condition is satisfied, The information processing method further includes a limiting step of limiting the vibration of the vibration motor when it is determined in the second determination step that the second condition is satisfied, according to the information processing method of claim 7.
9. The frequency changing step includes a step of determining the changed frequency according to the indicated frequency, according to the information processing method of claim 7 or 8.
10. The frequency changing step includes a step of changing the frequency when the indicated frequency is within a certain range, and a step of limiting the vibration of the vibration motor when the indicated frequency is outside the certain range, according to the information processing method of claim 7 or 8.
11. The frequency changing step includes a step of determining the changed frequency according to the remaining battery level measured in the measurement step, according to the information processing method of claim 7 or 8.
12. The frequency changing step includes a step of not changing the frequency when the indicated frequency is within a certain range, according to the information processing method of claim 7.
13. An information processing system configured to execute each process according to claim 1 or 7.
14. A program configured to cause a computer to execute each process according to claim 1 or 7.
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