System, program, information processing method, and calibration method

The system addresses temperature measurement and estimation challenges in vibration motors by using a thermistor and threshold-based control, ensuring efficient and safe operation.

JP2025105475APending Publication Date: 2025-07-10NINTENDO CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024198589
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-12-28
Filing Date
2024-11-13
Publication Date
2025-07-10

AI Technical Summary

Technical Problem

Existing systems lack accurate temperature measurement and estimation methods for vibration motors, leading to potential thermal degradation and inefficiencies in controlling their operation.

Method used

A system is provided with a thermistor and temperature measurement/estimation processes to measure and estimate the temperature of a vibration motor, using threshold values to restrict its operation based on measured and estimated temperatures, and a calibration method to improve accuracy.

Benefits of technology

Accurate temperature measurement and estimation enable effective control of vibration motors, preventing thermal degradation and enhancing operational efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025105475000001_ABST
    Figure 2025105475000001_ABST
Patent Text Reader

Abstract

To improve the measurement or estimation of a temperature about a vibration motor.SOLUTION: A system including a device having a vibration motor includes: a thermistor arranged outside the vibration motor and near the vibration motor in a device; temperature measurement processing means for executing processing for measuring a temperature by the thermistor; temperature estimation processing means for acquiring a current value and a voltage value of the vibration motor and executing processing of estimating a temperature inside the vibration motor from the acquired current value and voltage value; and restriction means for executing processing of restricting vibrations of the vibration motor on the basis of a first temperature being the temperature measured by the temperature measurement processing means and a second temperature being the temperature estimated by the temperature estimation processing means.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to a system, a program, an information processing method, and a calibration method.

Background Art

[0002] An information processing system that gives vibration 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 measuring or estimating the temperature of a vibration motor.

Means for Solving the Problems

[0005] (Configuration 1) According to an embodiment, a system including a device having a vibration motor is provided. The system includes, in the device, a thermistor disposed outside the vibration motor and in the vicinity of the vibration motor, temperature measurement processing means for executing a process of measuring temperature by the thermistor, temperature estimation processing means for acquiring a current value and a voltage value of the vibration motor and executing a process of estimating the temperature inside the vibration motor from the acquired current value and voltage value, and restriction means for executing a process of restricting the vibration of the vibration motor based on a first temperature that is the temperature measured by the temperature measurement processing means and a second temperature that is the temperature estimated by the temperature estimation processing means.

[0006] According to Configuration 1, the temperature measurement processing means and the temperature estimation processing means estimate the temperature inside the vibration motor, measure the temperature affected by the vibration motor, and can control the vibration motor based on both the estimation and measurement results.

[0007] (Configuration 2) In Configuration 1, the limiting means may include a first limiting means that executes a process of limiting the vibration of the vibration motor by comparing the first temperature with the first threshold value, and a second limiting means that executes a process of limiting the vibration of the vibration motor by comparing the second temperature with a second threshold value different from the first threshold value.

[0008] (Configuration 3) In Configuration 2, the second threshold value may be higher than the first threshold value. (Configuration 4) In Configuration 2 or 3, the content of the limiting process by the first limiting means and the content of the limiting process by the second limiting means may be different.

[0009] (Configuration 5) In any of Configurations 1 to 4, in the device, the thermistor and the vibration motor may be arranged on the same side with respect to the substrate on which the electronic components are arranged.

[0010] (Configuration 6) In Configuration 5, in the device, the thermistor and the vibration motor may be arranged on the lower side of the substrate.

[0011] (Configuration 7) In any of Configurations 1 to 6, in the device, the thermistor and the vibration motor may be arranged on the same surface of the substrate on which the electronic components are arranged.

[0012] (Configuration 8) In Configuration 7, in the device, predetermined electronic components may be arranged on the opposite surface of the substrate.

[0013] (Configuration 9) In Configuration 8, the predetermined electronic components may include an operation switch. (Configuration 10) In any of Configurations 7 to 9, the surface on which the thermistor and the vibration motor are arranged may be the surface on the back side of the device among the surfaces of the substrate.

[0014] (Configuration 11) In Configuration 10, the vibration motor may be arranged to contact the housing on the back side of the device.

[0015] (Configuration 12) In Configuration 11, the vibration motor may be contacted with the substrate via a cushioning material.

[0016] (Configuration 13) In any of Configurations 1 to 12, the measurement cycle by the temperature measurement processing means may be shorter than the measurement cycle by the temperature estimation processing means.

[0017] (Configuration 14) According to an embodiment, a program is provided for causing a computer to function as the temperature measurement processing means, the temperature estimation processing means, and the limiting means described in any of Configurations 1 to 13.

[0018] (Configuration 15) According to an embodiment, an information processing method for controlling a device having a vibration motor is provided. The information processing method includes a temperature measurement step of executing a process of measuring temperature by a thermistor arranged outside the vibration motor and in the vicinity of the vibration motor in the device, a temperature estimation step of acquiring a current value and a voltage value of the vibration motor and executing a process of estimating the temperature inside the vibration motor from the acquired current value and voltage value, and a limiting step of executing a process of limiting the vibration of the vibration motor based on a first temperature that is the temperature measured in the temperature measurement processing step and a second temperature that is the temperature measured in the temperature estimation step.

[0019] (Configuration 16) In Configuration 15, the limiting step may include a first limiting step of executing a process of limiting the vibration of the vibration motor by comparing the first temperature with a first threshold value, and a second limiting step of executing a process of limiting the vibration of the vibration motor by comparing the second temperature with a second threshold value different from the first threshold value.

[0020] (Configuration 17) In Configuration 16, the second threshold value may be higher than the first threshold value.

[0021] (Configuration 18) According to an embodiment, a calibration method for the temperature estimation processing means described in any of Configurations 1 to 13 is provided. The calibration method includes a temperature measurement step of measuring temperature with a thermistor, a current-voltage acquisition step of acquiring the current value and voltage value of the vibration motor, a resistance value calculation step of calculating a resistance value based on the acquisition result in the current-voltage acquisition step, and a calibration step of calibrating the temperature measurement processing means based on the temperature measured in the temperature measurement step and the resistance value calculated in the resistance value calculation step.

[0022] 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 a shared manner. Also, when a plurality of processors are employed, each processor may exist within the same device or in different devices.

[0023] In any of the above configurations, the necessary processing may be realized by executing a single program, or the necessary processing may be realized by a plurality of processors each executing a different program.

Brief Description of Drawings

[0024]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Embodiments for Carrying Out the Invention

[0025] The present embodiment will be described in detail with reference to the drawings. For the same or corresponding parts in the drawings, the same reference numerals are given and the description thereof will not be repeated.

[0026] [A. Example of System Configuration] First, a configuration example of the game system 10 according to the present embodiment will be described.

[0027] 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).

[0028] The game controller 200 is an example of a device that receives operations from a 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.

[0029] 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.

[0030] The game device 100 includes a processor 101, a non-volatile memory 102, a volatile memory 103, and a communication interface (I / F) 104.

[0031] 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.

[0032] As used herein, 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).

[0033] As used herein, the term "program" includes a single program and a group of programs consisting of a plurality of programs.

[0034] 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 storage medium detachable from the game device 100 such as an optical disk and a cartridge.

[0035] The non-volatile memory 102 stores a system program 102P1 and a game program 102P2.

[0036] 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 a library necessary for executing the game program 102P2.

[0037] The game program 102P2 includes computer-readable instructions for executing game processing. The game program 102P2 includes a vibration file 105.

[0038] The processing in the game device 100 described below is realized by the processor 101 executing at least one of the system program 102P1 and the game program 102P2.

[0039] The volatile memory 103 is a storage medium accessible by the processor 101, and is, for example, a DRAM (Dynamic Random Access Memory) or the like. 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.

[0040] 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.

[0041] 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.

[0042] 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 into the vibration instruction data area 103B3 at a predetermined cycle (for example, 60 fps (frames per second); about 16 msec cycle) according to the execution of the game program 102P2. Details of the vibration instruction data will be described later.

[0043] In this specification, the term "memory" includes at least the non-volatile memory 102 and the volatile memory 103.

[0044] 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.

[0045] The game controller 200 includes an MCU (Micro Controller Unit) 201 as an example of a processor, an amplifier 205, a vibration motor 206, a communication interface (I / F) 207, an acceleration sensor 208, a gyro sensor 209, an operation switch 210, and a temperature sensor 211.

[0046] 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 held by the user, and may be, for example, a general-purpose keyboard and / or mouse including 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.

[0047] The MCU 201 includes a processor 202, a non-volatile memory 203, and a volatile memory 204.

[0048] The processor 202 is a processing entity (processing means) for executing processing in the game controller 200. The processor 202 expands and executes a 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, detailed description will not be repeated.

[0049] 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 non-volatile memory 102 described above, detailed description will not be repeated.

[0050] 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 volatile memory 103 described above, detailed description will not be repeated.

[0051] The vibration instruction data area 204B1 is an area (FIFO (First-In First-Out) buffer) for temporarily storing vibration instruction data transmitted from the game device 100.

[0052] The control data area 204B2 is an area (FIFO buffer) for temporarily storing 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.

[0053] 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. Operation data is generated based on the data stored in the operation data area 204B4.

[0054] 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.

[0055] 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.

[0056] 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).

[0057] The vibration motor 206 is, for example, an eccentric motor in which a weight with a bias in shape is attached to a rotating shaft. 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 who is 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.

[0058] 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 a command from the processor 101 and / or the processor 202, etc.

[0059] 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.

[0060] The gyro sensor 209 detects the inclination, angular velocity, angular acceleration, etc. of the game controller 200.

[0061] 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.

[0062] 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 also be a thermocouple or the like. In the game controller 200, the temperature sensor 211 may be arranged outside and in the vicinity of the vibration motor 206 (structural examples will be described later). Also, if the temperature sensor 211 is arranged in a location near the MCU as well, it is possible to detect both the temperature rise of the vibration motor 206 and the MCU 201.

[0063] 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.

[0064] The system program 203P includes computer-readable instructions for executing the 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 and restricting the vibration of the vibration motor 206 based on the estimated temperature, (3) processes for restricting the vibration of the vibration motor 206 based on the temperature measured by the temperature sensor 211, (4) processes for filtering the detection values of the acceleration sensor 208 and the gyro sensor 209, (5) processes for calculating the posture based on the detection values of the acceleration sensor 208 and the gyro sensor 209, and (6) processes for communicating between the game controller 200 and the game device 100, and includes computer-readable instructions for executing a plurality of processes in parallel. Note that some or all of the processes (1) to (6) may be independent computer-readable instructions. That is, the system program 203P may be a set of software prepared for each process.

[0065] The communication process between the game device 100 and the game controller 200 includes a process of transmitting operation data including detection values of the acceleration sensor 208, the gyro sensor 209, and the operation switch 210, etc. to the game device 100, and a process of receiving vibration instruction data from the game device 100.

[0066] [B. Structural Example of Game Controller 200] Next, a structural example of the game controller 200 will be described.

[0067] FIG. 2 is a plan view showing a configuration example of the game controller 200 according to the present embodiment. Referring to FIG. 2, inside the housing 212 of the game controller 200, a substrate 213 on which electronic components are arranged and a vibration module 216 are arranged. The vibration module 216 includes the vibration motor 206. The temperature sensor 211 is arranged in the vicinity of the vibration module 216 (or the vibration motor 206).

[0068] Figure 3 is a cross-sectional view taken along line III-III of Figure 2. Referring to Figure 3, the game controller 200 is provided with a button which is an example of the operation switch 210 protruding from the front. On the surface of the substrate 213 facing the front, a detection circuit 218 for detecting an operation from the user for the operation switch 210 (in this example, the button) is arranged. Thus, the electronic components may include the operation switch 210 and the corresponding detection circuit.

[0069] On the back side of the substrate 213, a vibration module 216 is arranged. The vibration module 216 is arranged so as to contact the housing 212 on the back side of the game controller 200. In the configuration example shown in Figure 3, the vibration module 216 is adhered to the housing 212 on the back side with double-sided tape. The vibration module 216 is fixed to a rib 215 integrally formed with the housing 212. The fixing method may be a method other than adhesion.

[0070] A cushioning material 214 is arranged in the gap between the vibration module 216 and the substrate 213. That is, the vibration module 216 is brought into contact with the substrate 213 via the cushioning material 214. The cushioning material 214 is fitted into the gap. Thereby, the vibration module 216 and the substrate 213 are in contact with each other under a state where pressure is applied. As a modification, instead of the cushioning material 214, a heat dissipation sheet may be used.

[0071] In the configuration example shown in Figure 3, neither the vibration module 216 and the cushioning material 214 nor the cushioning material 214 and the substrate are fixed. As a modification, the vibration module 216 may be mounted or fixed (for example, adhered by any method) on the substrate 213. As another modification, the vibration module 216 may not be in contact with the substrate 213.

[0072] The vibration motor 206 included in the vibration module 216 includes a pair of magnets 206M which are vibrators and a coil 206C which is a stator. Note that the magnet 206M may be a stator and the coil 206C may be a vibrator.

[0073] The temperature sensor 211 is, for example, a chip-shaped thermistor and is mounted on the substrate 213. The temperature sensor 211 may be arranged near the vibration module 216 within a range where it does not interfere with the arrangement of other electronic components on the substrate 213. The temperature sensor 211 is arranged at a position where it can accurately measure the internal temperature of the module when the vibration module 216 stops.

[0074] Note that the temperature sensor 211 may be arranged in a state where it does not contact the substrate 213. As shown in FIG. 3, in the game controller 200, the temperature sensor 211 and the vibration module 216 (or the vibration motor 206) may be arranged on the same side with respect to the substrate 213. The temperature sensor 211 and the vibration module 216 (or the vibration motor 206) may be arranged on the lower side of the substrate 213 (the back side of the housing 212). The surface on which the temperature sensor 211 and the vibration module 216 (or the vibration motor 206) are arranged can also be said to be the surface on the back side of the game controller 200 among the surfaces of the substrate 213.

[0075] It can also be said that the temperature sensor 211 and the vibration module 216 (or the vibration motor 206) are arranged on the same surface of the substrate 213. At this time, predetermined electronic components may be arranged on the opposite surface of the substrate 213.

[0076] As a design example of the arrangement position of the temperature sensor 211, for example, it may be arranged within 5 mm from the outer edge of the vibration module 216, or within 1 cm.

[0077] As another design example of the arrangement position of the temperature sensor 211, for example, it may be arranged at a position within 1 / 10, within 1 / 5, or within 1 / 3 of each of the longitudinal length and the lateral length of the vibration module 216 (both in the plan view shown in FIG. 2).

[0078] FIG. 4 is a cross-sectional view showing a configuration example of the game controller 200 according to the present embodiment. In the configuration example shown in FIG. 4(A), buttons and a stick are arranged on the front surface of the game controller 200 as an example of the operation switch 210. On the substrate 213 arranged inside the housing 212, a detection circuit 218 associated with each button and a detection circuit 219 associated with the stick are arranged.

[0079] Between the substrate 213 and the back surface of the housing 212, the battery 217 and the vibration module 216 are arranged side by side. It can also be said that the vibration module 216 is provided on the back surface side of the substrate 213.

[0080] Electronic components such as the detection circuits 218 and 219 may be arranged on the substrate 213 on the side opposite to the side where the vibration module 216 is arranged. The vibration module 216 may be arranged beside the battery 217.

[0081] In the configuration example shown in FIG. 4(B), the vibration module 216 is arranged at the end side inside the housing 212. The thickness of the vibration module 216 corresponds to the length from the front surface side to the back surface side inside the housing 212.

[0082] In the configuration example shown in FIG. 4(A), compared with the configuration example shown in FIG. 4(B), the surface area of the substrate 213 can be widened, so that a larger mounting area can be secured. On the other hand, in the configuration example shown in FIG. 4(B), compared with the configuration example shown in FIG. 4(B), the thickness of the vibration motor 206 included in the vibration module 216 can be more secured.

[0083] [C. Vibration Instruction Data] Next, the vibration instruction data transmitted from the game device 100 to the game controller 200 will be described.

[0084] The vibration instruction data is data that instructs a vibration effect. 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 a set of an amplitude parameter and a frequency parameter as an example of the vibration parameters.

[0085] In the present embodiment, by designating one or more (N) pieces of vibration instruction data 116 in time series 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 time series order will also be referred to as a "time series vibration instruction data group". For example, the vibration instruction period T may be set to 5 msec.

[0086] By adopting such a data format, it is possible to easily specify a vibration effect in which the amplitude value and the frequency change.

[0087] FIG. 5 is a diagram for explaining the generation process of the time series vibration instruction data group 110 in the game device 100 according to the present embodiment. Referring to FIG. 5, the vibration file 105 includes information for instructing the vibration effect for each vibration event.

[0088] More specifically, in the vibration file 105, for each vibration event, in addition to the vibration parameters (amplitude parameter and frequency parameter), a wavelength number parameter is set. The wavelength number parameter is used to determine the number of vibration parameters that make up the time series vibration parameter group.

[0089] 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 indicates the vibration effect corresponding to vibration event 1 includes two vibration instruction data. That is, the time-series vibration instruction data group 110 includes vibration instruction data for two cycles of the vibration instruction period.

[0090] In the vibration file 105 shown in FIG. 5, the amplitude parameter among the amplitude instruction data is normalized to 0 to 1. By executing the game program 102P2, vibration instruction data 116 (time-series vibration instruction data group 114) including the normalized amplitude parameter is generated. By executing the system program 102P1, the amplitude parameter of the vibration instruction data 116 is multiplied by the maximum allowable voltage 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).

[0091] FIG. 6 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. 6, 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. 6.

[0092] 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.

[0093] In the above description, a processing example is shown in which the time-series vibration instruction data group 110 (one or more vibration instruction data 112) is generated each time based on the vibration file 105. However, the time-series vibration instruction data group 110 (one or more vibration instruction data 112) may be prepared in advance as file-formatted data. In this case, the processor 101 may read the data each time during the execution of the game program 102P2. By using such file-formatted data, 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.

[0094] In the above description, a processing example is shown in which vibration instruction data for specifying vibration at a certain timing is used. However, variation instruction data for specifying a 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 to the vibration parameters in the previous vibration instruction cycle. In this case, based on the vibration parameters in the previous vibration instruction cycle and the amounts of change in the amplitude value and frequency, the vibration parameters in the current vibration instruction cycle are calculated. 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.

[0095] In the above description, a processing example is shown in which the vibration instruction data 116 including the normalized amplitude parameter is generated by the processor 101 executing the game program 102P2. However, the vibration instruction data 112 (time-series vibration instruction data group 110) including the amplitude parameter indicating the voltage amplitude value may be directly generated by the execution of the game program.

[0096] 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.

[0097] [D. Processing Example in Game Device 100] Next, a processing example in the game device 100 will be described.

[0098] FIG. 7 is a flowchart showing a processing example of the game program 102P2 in the game device 100 according to the present embodiment. Each step shown in FIG. 7 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 the game is not limited at all.

[0099] Referring to FIG. 7, 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.

[0100] 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, the vibration event occurs.

[0101] If a vibration event is occurring (YES in step S101), the processor 101 passes the time-series vibration instruction data group 114 corresponding to the vibration effect to the system program 102P1 (step S102). If a vibration event is not occurring (NO in step S101), the process of step S102 is skipped.

[0102] 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.

[0103] FIG. 8 is a flowchart showing an example of the processing of the system program 102P1 in the game device 100 according to the present embodiment. Each step shown in FIG. 8 is realized by the processor 101 of the game device 100 executing the system program 102P1.

[0104] By executing the system program 102P1, the processor 101 of the game device 100 generates a time-series vibration instruction data group 114 that instructs a waveform of a predetermined frequency or higher for driving the vibration motor 206 according to an instruction generated by executing an application program (game program 102P2).

[0105] Referring to FIG. 8, 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.

[0106] 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).

[0107] 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 the certain range that restricts the frequency parameter.

[0108] 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).

[0109] 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.

[0110] 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. 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 this 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 lower, 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.

[0111] 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.

[0112] Note that the processes of steps S150 to S155 may be included in the game program 102P2 instead of the system program 102P1.

[0113] 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.

[0114] 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).

[0115] 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 has been processed (NO in step S159), the processing below step S150 is repeated.

[0116] If all the vibration instruction data 116 included in the time-series vibration instruction data group 114 passed from the game program 102P2 has been processed (YES in step S159), the processing ends.

[0117] The processing shown in FIG. 8 may be repeatedly executed at a predetermined period, or may be executed triggered by the establishment of a predetermined condition (for example, the time-series vibration instruction data group 114 is passed from the game program 102P2).

[0118] [E. Temperature Estimation Processing] Next, the temperature estimation processing according to the present embodiment will be described.

[0119] 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) acquires the current value and voltage value of the vibration motor 206, and estimates the temperature inside the vibration motor 206 from the acquired current value and voltage value. 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 measurement wave among these current value and voltage value, the resistance value and / or temperature is calculated.

[0120] 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.

[0121] The temperature estimated by the temperature estimation process indicates the temperature inside the vibration motor 206, and can be used, for example, to prevent thermal degradation of the vibration motor 206. The temperature measured by the temperature sensor 211 is the temperature outside the vibration motor 206, and is correlated with the internal temperature of the game controller 200 and / or the surface temperature of the game controller 200.

[0122] 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.

[0123] 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.

[0124] Limiting the vibration of the vibration motor 206 includes not performing vibration control based on the vibration instruction data. For example, the amplitude parameter of the vibration instruction data may be changed to zero. By changing the amplitude parameter to zero, the vibration motor 206 stops. By stopping the vibration motor 206, no vibration occurs.

[0125] Limiting the vibration of the vibration motor 206 includes performing vibration control so that the vibration amount is suppressed compared to the vibration amount indicated by the vibration instruction data. For example, the amplitude value indicated by the vibration parameter of the vibration instruction data may be reduced by a predetermined value or a predetermined degree, or may be changed to a smaller predetermined amplitude value. Limiting the vibration of the vibration motor 206 may include at least one of reducing the input voltage of the vibration motor 206 and weakening the vibration amount of the vibration motor 206. Note that the vibration amount may be referred to as the strength of the vibration.

[0126] Restricting the vibration of the vibration motor 206 includes a process of shifting the frequency of the waveform for driving the vibration motor 206 to a frequency with better vibration efficiency than the frequency indicated by the vibration instruction data.

[0127] The control system according to the present disclosure may be configured using at least a part of the game system 10, not limited to the game controller 200 alone.

[0128] [F. Processing Example in Game Controller 200] Next, a processing example in the game controller 200 will be described.

[0129] (f1: Generation Process of Control Data 220) In the game controller 200, control data 220 is generated. The control data 220 is data input to the amplifier 205 to control the vibration of the vibration motor 206. More specifically, the time-series vibration instruction data group 110 is transmitted from the game device 100 to the game controller 200, and the processor 202 of the game controller 200 generates the control data 220 based on the time-series vibration instruction data group 110. The control data 220 is typically data indicating the voltage value of the waveform for driving the vibration motor 206, and is output or updated at a predetermined period. The control data 220 may be data indicating the instantaneous value 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".

[0130] 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.

[0131] 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 amplified from the waveform of the vibration indicated by the control data 220 as it is may be supplied to the vibration motor 206.

[0132] FIG. 9 is a flowchart showing an 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. 9 is realized by the processor 202 of the game controller 200 executing the system program 203P. The process shown in FIG. 9 may be repeatedly executed at a predetermined cycle (for example, the vibration instruction cycle).

[0133] Referring to FIG. 9, 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.

[0134] 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.

[0135] The processor 202 sets the index X to 1 (step S202). The processor 202 calculates the phase advanced by one control period (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 the 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).

[0136] 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.

[0137] The processor 202 calculates the voltage value of the measurement wave (for example, the amplitude value is 0.1 V and the frequency is 10 Hz) based on the phase calculated in step S203 (step S205). In this way, the processor 202 generates a measurement wave for estimating the temperature inside the vibration motor 206.

[0138] 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 of the vibration of the voice coil motor vibration motor 206. 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.

[0139] The processor 202 writes the addition result (the 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 (the 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.

[0140] The processor 202 increments the index X by 1 (step S208). The processor 202 determines whether the incremented index X exceeds 40 (step S209).

[0141] 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.

[0142] 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 the sound due to the measurement wave being heard from the voice coil motor. Also, 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. Further, 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.

[0143] The frequency of the measurement wave is not limited to 10 Hz. For example, it may be set to any frequency lower than 40 Hz (the lower limit 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. For example, it may be set to 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.

[0144] In the generation process example shown in FIG. 9, the amplitude value of the measurement wave is constant (for example, 0.1 V), but the amplitude value of the measurement wave may be determined based on the amplitude parameter of the vibration instruction data 112. In this case, typically, when the amplitude parameter of the vibration instruction data 112 is large, the amplitude value of the measurement wave may be increased, and when the amplitude parameter of the vibration instruction data 112 is small, the amplitude value of the measurement wave may be decreased. FIG. 10 is a flowchart for realizing this modification.

[0145] FIG. 10 is a flowchart showing a modification of the generation process of the control data 220 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. In the modification shown in FIG. 10, steps S214 and S215 are adopted instead of step S205 in the generation process example shown in FIG. 9.

[0146] 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). Thus, the processor 202 determines the amplitude value of the measurement wave according to the amplitude value of the control data.

[0147] Specifically for illustration, for example, if the amplitude parameter of the vibration instruction data 112 is 3V or more, the amplitude value of the measurement wave may be determined to be 0.2V, and if the amplitude parameter of the vibration instruction data 112 is less than 3V, the amplitude value of the measurement wave may be determined to be 0.1V. 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.

[0148] The processor 202 calculates the voltage value of the measurement wave (step S215) based on the phase calculated in step S203 so that a measurement wave (the amplitude value is the value determined in step S214 and the frequency is 10 Hz) is generated. In this way, the processor 202 adaptively determines the voltage value of the measurement wave for estimating the temperature of the vibration motor 206.

[0149] The processes other than steps S215 and S216 are the same as the corresponding processes in FIG. 9, so detailed description will not be repeated.

[0150] The higher 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.

[0151] (f2: Temperature Estimation Process and Limitation Process of Vibration Motor) In the game controller 200, the temperature of the vibration motor 206 is estimated based on the current value and voltage value of the vibration motor 206. Based on the estimated temperature, the vibration of the vibration motor 206 may be restricted.

[0152] FIG. 11 is a flowchart showing the first temperature estimation process 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.

[0153] Referring to FIG. 11, the processor 202 acquires the current values and voltage values of a predetermined number (e.g., 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 into which the superimposed control data with the measurement wave superimposed on the control data is input. For example, a set of current values and voltage values detected every operation cycle (e.g., 0.125 ms) of the amplifier 205 may be acquired 40 in chronological order (i.e., for 5 msec).

[0154] The processor 202 executes a process for determining the order of the LPF (step S221). Note that the higher the order of the LPF, the higher the calculation accuracy. The processor 202 executes the LPF process on the 40 current values and 40 voltage values acquired in step S220 with the order determined in step S221, respectively (step S222). In this way, the processor 202 performs the LPF process on the acquired current values and voltage values.

[0155] 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. 9 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.

[0156] 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).

[0157] u n =x n -a1u n-1 -a2un-2 ···(1) y n = b0u n + b1u n-1 + b2u n-2 ···(2) However, u n is a value adopted for computational convenience, and a1, a2, b0, b1, b2 are parameters that determine the filter characteristics.

[0158] 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.

[0159] Note that fourth-order and sixth-order IIR filters may also be used. In this case, it is not necessary to connect the IIR filters in series. Specifically, an Nth-order IIR digital filter can be described using the following calculation formulas (3) and (4).

[0160] u n = x n - a1u n-1 -…- a N u n-N ···(3) y n = b0u n + b1u n-1 +…+ b N u n-N ···(4) In this way, the calculation formula used for frequency filtering is changed according to the change in the order. The change in the calculation formula may be a change in the order of the calculation formula. 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 when the FIR filter is changed to the IIR filter.

[0161] 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. Any filter (LPF, high-pass filter, and band-pass filter) can be used for frequency filtering.

[0162] The processor 202 calculates the 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 current value and voltage value that have been LPF-processed. The resistance value calculated in step S223 is the value in each execution cycle (for example, 50 msec) of the first part of the temperature estimation process.

[0163] The processor 202 writes the calculated resistance value to 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 seconds (50 msec × 40 pieces) are stored in time series in the resistance value area 204B3.

[0164] The process shown in FIG. 11 may be repeatedly executed at a predetermined execution cycle (for example, 50 msec). The execution cycle of the process shown in FIG. 11 may be set longer than the execution cycle of the temperature measurement by the temperature sensor 211 shown in FIG. 14. By making the execution cycle of the temperature estimation process longer than the execution cycle 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.

[0165] FIG. 12 is a flowchart showing the second temperature estimation process in the game controller 200 according to the present embodiment. In addition to the first temperature estimation process, the processor 202 executes the second temperature estimation process. 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, 50 msec).

[0166] Referring to FIG. 12, the processor 202 calculates the average resistance value from the 40 resistance values stored in the resistance value area 204B3 (step S240). Note that other representative values such as the median value or the mode value may be used instead of the average value. The processor 202 calculates the temperature from the calculated average resistance value (step S241). The process of calculating the temperature from the average resistance value may use a predetermined calculation formula or a table 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 for a predetermined period or a predetermined number of times, thereby calculating the resistance value a plurality of times. Then, the processor 202 may estimate the temperature based on the plurality of resistance values.

[0167] 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). In the present embodiment, a value larger than the second threshold temperature is set as the first threshold temperature.

[0168] If the order of the LPF is set to 4 (i.e., "4th order" in step S242), the processor 202 sets the first threshold temperature and the second threshold temperature according to the order of the LPF (4th order) (step S244). In the present embodiment, the first threshold temperature when the order of the LPF is 4th order is set to a value lower than the first threshold temperature when the order of the LPF is 6th order. Also, the second threshold temperature when the order of the LPF is 4th order is set to a value lower than the second threshold temperature when the order of the LPF is 6th order.

[0169] The processor 202 determines whether the calculated temperature is equal to or higher than the first threshold temperature (step S245).

[0170] If the calculated temperature is equal to or higher than the first threshold temperature (i.e., YES in step S245), 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 S246). Subsequently, the processor 202 determines whether a predetermined time has elapsed (step S247). If the predetermined time has not elapsed (i.e., NO in step S244), the processing below step S247 is repeated. If the predetermined time has elapsed (i.e., YES in step S247), the processing below step S246 is repeated.

[0171] If the calculated temperature is lower than the first threshold temperature (i.e., NO in step S245), the processor 202 determines whether the calculated temperature is equal to or higher than the second threshold temperature (step S248). If the calculated temperature is lower than the second threshold temperature (i.e., NO in step S248), the processing below step S240 is repeated.

[0172] On the other hand, if the calculated temperature is equal to or higher than the second threshold temperature (i.e., YES in step S248), the vibration of the vibration motor 206 is restricted.

[0173] 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 S249).

[0174] If the frequency parameter of the first vibration instruction data 112 is 150 Hz or more (YES in step S249), the processor 202 changes the frequency parameter of the first vibration instruction data 112 to 100 Hz (step S250).

[0175] In this way, when the calculated temperature becomes equal to or higher than a predetermined value, the processor 202 restricts the vibration of the vibration motor 206, which is a voice coil motor (S246, S250).

[0176] Further, when the calculated 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, to a value lower than the instructed frequency (S250). As can be seen by referring to FIG. 6, 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 that the vibration is large even at a low drive voltage).

[0177] If the frequency parameter of the first vibration instruction data 112 is lower than 150 Hz (NO in step S249), the processor 202 reduces the amplitude parameter of the first 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 first vibration instruction data 112 to the upper limit value only when the amplitude parameter of the first 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. In this way, in the present embodiment, both the method of frequency shift and the method of reducing the amplitude are adopted as the method of restricting vibration, but only one of them may be used.

[0178] 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 processing from step S249 and below is repeated. If the predetermined time has elapsed (YES in step S252), the processing from step S240 and below is repeated.

[0179] 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 the elapse of a predetermined time, steps S24 and S241 may be executed again and the process may wait until the temperature calculated (or the temperature measured by the temperature sensor 211) becomes equal to or lower than a predetermined threshold temperature.

[0180] 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. Thereby, the output from the vibration motor 206 can be instantaneously increased.

[0181] Also, when the frequency of the measured wave is low, if the prediction period is short, the accuracy of temperature estimation decreases. Therefore, as shown in step S240, by using a plurality of resistance values over a longer period and using the averaged value, the accuracy of temperature estimation can be improved.

[0182] FIG. 13 is a flowchart showing a more detailed processing example of the LPF order determination process (step S221) shown in FIG. 11. Referring to FIG. 13, the processor 202 determines whether or not the load on the MCU 201 is equal to or higher than a predetermined level (step S2210). Whether or not the load on the MCU 201 is equal to or higher than a predetermined level may employ one or more of the following determination methods.

[0183] (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.

[0184] (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 external devices connected to the game controller 200. At least some of the motion sensor, camera, microphone, and infrared sensor may be peripheral devices connectable to the game controller 200.

[0185] (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.

[0186] If the load on the MCU 201 is at or above a predetermined level (YES in step S2210), the processor 202 determines the order of the LPF to be 4th order (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).

[0187] 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).

[0188] 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). In this way, the processor 202 changes the order of the LPF according to the estimated temperature.

[0189] The temperature estimation process places a large load on the MCU 201. 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 MCU 201, the impact on other processes executed by the MCU 201 can be reduced.

[0190] Note that the processor in the game controller may have lower performance 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.

[0191] 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 processing. In this way, in a situation where the accuracy of temperature estimation is not required, by reducing the load required for execution, even the MCU 201 with limited processing resources can execute a plurality of processes in parallel.

[0192] 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 MCU 201 is high (the order set in S2211) and the order when the estimated temperature is low (the order set in S2215) may be different.

[0193] 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 increased, and the load on the MCU201 may not be increased when the temperature is less than the predetermined value.

[0194] 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 an FIR filter is used as the LPF.

[0195] When the load on the MCU201 is equal to or higher than a predetermined level, the FIR filter may be changed to an IIR filter. Also, when the temperature is less than a predetermined value, the FIR filter may be changed 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 an FIR filter.

[0196] (f3: Temperature measurement process by temperature sensor and restriction process of vibration motor) In the game controller 200, the temperature is measured using the temperature sensor 211. Based on the measured temperature, the vibration of the vibration motor 206 may be restricted.

[0197] FIG. 14 is a flowchart showing the restriction process of the vibration motor 206 based on the measured temperature in the game controller 200 according to the present embodiment. Each step shown in FIG. 14 is realized by the processor 202 of the game controller 200 executing the system program 203P. The process shown in FIG. 14 may be repeatedly executed at a predetermined execution cycle (for example, 5 msec). Thus, the measurement cycle of the temperature measurement process by the temperature sensor 211 is shorter than the estimation cycle of the temperature estimation process.

[0198] Referring to FIG. 14, the processor 202 calculates the temperature from the resistance value of the temperature sensor 211 (thermistor) (step S260). That is, the processor 202 measures the temperature by the temperature sensor 211 disposed outside the vibration motor 206.

[0199] 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, the third threshold temperature may be set to a value lower than the first threshold temperature.

[0200] 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 first 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.

[0201] Note that in step S262, instead of changing the amplitude parameter to zero, the amplitude parameter may be reduced or the frequency parameter may be shifted as shown in steps S247 and S248 (see FIG. 12). In this way, when the temperature measured by the temperature sensor 211 becomes equal to or higher than a predetermined value, the processor 202 restricts the vibration of the vibration motor 206, which is a voice coil motor (S262).

[0202] As shown in FIG. 14, when the temperature measured by the temperature sensor 211 becomes equal to or higher than the third threshold temperature, the processor 202 restricts the vibration of the vibration motor 206. Since the execution period of the process shown in FIG. 14 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 (the execution period of the process shown in FIG. 12 is, for example, 50 msec) in which the temperature is calculated based on the current value and voltage value of the vibration motor 206. 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.

[0203] [G. Calibration of Temperature-Resistance Value Characteristics] In the temperature estimation process based on the resistance value of the vibration motor 206 as described above, the change in the resistance value with respect to a predetermined temperature (hereinafter, also referred to as "temperature-resistance value characteristics") may be referred to. The resistance value of the vibration motor 206 may be affected by manufacturing tolerances. Therefore, in order to improve the accuracy of temperature estimation, it is preferable to perform calibration.

[0204] FIG. 15 is a graph showing an example of the temperature-resistance value characteristics of the vibration motor according to the present embodiment. Referring to FIG. 15, the magnitude of the intercept may change due to manufacturing tolerances. Calibration may include determining the magnitude of the intercept. As an example, the magnitude of the intercept at 20°C (that is, the resistance value of the vibration motor 206 at 20°C (hereinafter, also referred to as "R20")) may be determined.

[0205] Specific calibration procedures include the following steps. (1) Measure the temperature with the temperature sensor 211 (for example, a thermistor). An average value obtained by measuring multiple times may be adopted.

[0206] (2) Apply a pilot signal from the amplifier 205 to the vibration motor 206 to obtain the current value and voltage value of the vibration motor 206, and calculate the resistance value from the current value and voltage value. An average value obtained by multiple calculations may be used.

[0207] Based on the temperature measured in (3)(1) (or the average value of the temperature, hereinafter also referred to as "T"), and the resistance value calculated in (2) (or the average value of the resistance value, hereinafter also referred to as "RT"), the resistance value (R20) of the vibration motor 206 at 20°C is calculated according to the following formula. Note that, as the RT, a value obtained by subtracting the resistance value of the wiring between the vibrator of the vibration motor 206 and the amplifier 205 (for example, a predetermined constant) from the resistance value calculated in (2) may be used. Note that αt in the formula indicates the winding temperature coefficient.

[0208] R20 = RT / {1 + αt(T - 20)} The resistance value (R20) of the vibration motor 206 at 20°C is stored, for example, in the non-volatile memory 203 of the game controller 200. In the temperature estimation process, the resistance value (R20) stored in the non-volatile memory 203 is referred to. That is, the calculation of the resistance value (R20) means the calibration of the temperature estimation process.

[0209] The calibration of the temperature-resistance value characteristics may be executed at the manufacturing factory or repair department of the game controller 200, etc. Alternatively, a program for executing the calibration may be stored in the game controller 200, and when predetermined conditions are satisfied, the calibration may be executed in the game controller 200.

[0210] [H. Modified Example] In the above description, the game controller 200 has been described as an example of the device, but the above configuration and process are also applicable to other devices such as smartphones, tablets, and portable game machines.

[0211] In the above description, the temperature measurement process by the temperature sensor 211, the temperature estimation process based on the current value and voltage value of the vibration motor 206, and the restriction process of the vibration motor 206 are realized by the MCU 201 (or the processor 202) of the game controller 200 executing a program (for example, the system program 203P). However, part or all of these processes may also be realized by the processor 101 of the game device 100 executing a program.

[0212] In the above description, as an example of an application program, a processing example in which a game program generates vibration instruction data is shown. However, it is not limited to a game program, and any application program can generate vibration instruction data.

[0213] The execution order between the temperature measurement process by the temperature sensor 211 and the temperature estimation process based on the current value and voltage value of the vibration motor 206 is arbitrary. That is, either the temperature measurement process or the temperature estimation process may be executed first, or the two processes may be executed in parallel. As a result, the execution order between the restriction process based on the temperature measurement process and the restriction process based on the temperature estimation process is also arbitrary.

[0214] 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.

[0215] 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.

[0216] In the above description, a configuration example is shown in which the processor 101 of the game device 100 and the MCU 201 (processor 202) of the game controller 200 share the processing. 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.

[0217] Also, the sharing of the 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 shared. For example, the generation process of the control data 220 may be executed in the game device 100.

[0218] The program means including 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 an emulator.

[0219] 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 programs divided into several parts. In this case, it can be said that the set of the plurality of programs is a program.

[0220] 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, a memory, a sub-processor, peripheral circuits, firmware, etc., and in some cases, a computer constituted by an interpreter or an emulator). For example, when the processor executes a program, it issues instructions to other processors, peripheral circuits, etc., and finally, an aspect in which other processors, peripheral circuits, etc. execute each function is also included in the embodiments of the present embodiment.

[0221] Alternatively, a system in which the game device 100 and the game controller 200 are integrated may be used. Note that, in the present embodiment, a mode in which processes executed by a single processor are executed by a plurality of processors sharing and cooperating with each other is also included in this specification as a modification example.

[0222] 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 Reference Numerals

[0223] 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, 103B1 Data area, 103B2, 204B4 Operation data area, 103B3, 204B1 Vibration instruction data area, 104, 207 Communication interface (I / F), 105 Vibration file, 110, 114 Time-series vibration instruction data group, 112, 116 Vibration instruction data, 200 Game controller, 201 MCU, 204B2 Control data area, 204B3 Resistance value area, 205 Amplifier, 206 Vibration motor, 206C Coil, 206M Magnet, 208 Acceleration sensor, 209 Gyro sensor, 210 Operation switch, 211 Temperature sensor, 212 Housing, 213 Substrate, 214 Cushion material, 215 Rib, 216 Vibration module, 217 Battery, 218, 219 Detection circuit, 220 Control data.

Claims

1. A system including a device having a vibration motor, in the device, a thermistor disposed outside the vibration motor and in the vicinity of the vibration motor, temperature measurement processing means for executing a process of measuring temperature by the thermistor, temperature estimation processing means for acquiring a current value and a voltage value of the vibration motor and executing a process of estimating the temperature inside the vibration motor from the acquired current value and voltage value, a system comprising: a limiting means for executing a process of limiting the vibration of the vibration motor based on a first temperature which is the temperature measured by the temperature measurement processing means and a second temperature which is the temperature estimated by the temperature estimation processing means.

2. The limiting means, a first limiting means for executing a process of limiting the vibration of the vibration motor by comparing the first temperature with a first threshold value, a second limiting means for executing a process of limiting the vibration of the vibration motor by comparing the second temperature with a second threshold value different from the first threshold value, the system according to claim 1.

3. The system according to claim 2, wherein the second threshold value is higher than the first threshold value.

4. The system according to claim 2, wherein the content of the limiting process by the first limiting means is different from the content of the limiting process by the second limiting means.

5. In the device, the thermistor and the vibration motor are disposed on the same side with respect to a substrate on which electronic components are disposed, the system according to any one of claims 1 to 4.

6. In the device, the thermistor and the vibration motor are disposed on the lower side of the substrate, the system according to claim 5.

7. In the device, the thermistor and the vibration motor are disposed on the same surface of a substrate on which electronic components are disposed, the system according to any one of claims 1 to 4.

8. In the device, predetermined electronic components are disposed on the opposite surface of the substrate, the system according to claim 7.

9. The system according to claim 8, wherein the predetermined electronic components include an operation switch.

10. The surface on which the thermistor and the vibration motor are disposed is the surface on the back side of the device among the surfaces of the substrate, the system according to claim 7.

11. The system according to claim 10, wherein the vibration motor is arranged to contact a housing on the back side of the device.

12. The system according to claim 11, wherein the vibration motor is contacted with the substrate via a cushioning material.

13. The system according to claim 1, wherein a measurement cycle by the temperature measurement processing means is shorter than a measurement cycle by the temperature estimation processing means.

14. A program for causing a computer to function as the temperature measurement processing means, the temperature estimation processing means, and the limiting means according to any one of claims 1 to 4.

15. An information processing method for controlling a device having a vibration motor, a temperature measurement step of executing a process of measuring a temperature by a thermistor disposed outside the vibration motor and in the vicinity of the vibration motor in the device; a temperature estimation step of acquiring a current value and a voltage value of the vibration motor and executing a process of estimating a temperature inside the vibration motor from the acquired current value and voltage value; a limiting step of executing a process of limiting vibration of the vibration motor based on a first temperature that is the temperature measured in the temperature measurement step and a second temperature that is the temperature measured in the temperature estimation step.

16. The limiting step includes: a first limiting step of executing a process of limiting vibration of the vibration motor by comparing the first temperature with a first threshold value; a second limiting step of executing a process of limiting vibration of the vibration motor by comparing the second temperature with a second threshold value different from the first threshold value. The information processing method according to claim 15.

17. The information processing method according to claim 16, wherein the second threshold value is higher than the first threshold value.

18. A calibration method for the temperature estimation processing means according to any one of claims 1 to 4, a temperature measurement step of measuring a temperature by the thermistor; a current-voltage acquisition step of acquiring a current value and a voltage value of the vibration motor; a resistance value calculation step of calculating a resistance value based on an acquisition result in the current-voltage acquisition step. A calibration method comprising: a calibration step of calibrating the temperature measurement processing means based on the temperature measured in the temperature measurement step and the resistance value calculated in the resistance value calculation step.

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