CROSS REFERENCE TO RELATED APPLICATIONSThis application claims priority to and the benefit of U.S. Patent Application No. 61/240,755, filed on Sep. 9, 2009, hereby incorporated by reference.
BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates to a reel control system for a gaming machine with multiple reels and more particularly to a reel control system which facilitates factory calibration of the radial position of the motor shaft to a home position on initial power up and automatically resets the home position on subsequent power-ups and maintains the standstill position of the reel mechanism while enabling unequally spaced symbols. The reel control system is also configured to drive a plurality stepper motor drivers virtually simultaneously by way of a serial bus with multiple serial interfaces. In accordance with another important aspect of the invention, the reel control system can drive multiple reels, different distances, different directions as well as different reel types while reducing the manufacturing cost of these devices.
2. Description of the Prior Art
Gaming machines are well known in the art. Such gaming machines are known to include a plurality of reel mechanisms. The reel mechanisms include a rotatable reel which carries a plastic strip imprinted with symbols. The reel mechanisms are rigidly supported in such gaming machines in a side by side relationship such that the axes of rotation of the rotatable reels are essentially horizontal and co-linear. Each rotatable reel is driven independently by a stepper motor, which, in turn, is under the control of stepper motor driver.
The stepper motor driver is a control system for controlling the operation of the stepper motor in response to external signals. In the context of a gaming machine, the external signals are normally provided by a host game application. In response to user input, such as a pull of a game lever or depressing a pushbutton to initiate the game, the host game application generates a random number. As discussed in detail in U.S. Pat. No. 4,711,451, hereby incorporated by reference, each reel is divided up into a predetermined stop positions. These stop positions are stored in memory and normally coincide with the center positions of each of the symbols on the plastic strip carried by the reel. The random numbers generated by the random number generator are then associated with the addresses of the various stop positions for the reel mechanism.
As mentioned above, each reel mechanism is independently controlled. Thus, the host game controller generates a random number for each reel mechanism. Known gaming machines are provided with three (3) to seven (7) reel mechanisms. Thus, the host game controller generates a random number for each of the reel mechanisms.
An exemplary reel mechanism is illustrated in U.S. Pat. No. 5,388,829, hereby incorporated by reference. The gaming machine includes a window for each reel mechanism on its front panel. The reel mechanisms are mounted in the gaming machine so that one or more symbols on each reel are visible from the outside of the machine through the window. Each reel assembly includes a fixed lamp rigidly carried by a frame member which also carries the stepper motor and the rotatable reel. The reel mechanisms and the lamp assemblies are located so as illuminate the symbols behind the windows.
It is important that the symbols on the various side by side reels in the gaming machine be aligned relative to the payline. Assuming a single payline, the centerlines of the symbols for each of reels should be essentially colinear. Many factors are known to affect the alignment. One factor is known as phase setting. Phase setting relates to calibration of the angular position of each reel so that the number one symbol on the reel is aligned within the payline on the gaming machine on power up. More particularly, each reel is mechanically coupled to a stepper motor shaft by way of a cross pin, as illustrated in detail in U.S. Pat. No. 4,410,178. a through hole, traverse to the shaft axis, is formed in the stepper motor shaft. A cross pin is received in the through hole. The cross pin is received by a mating slot on the hub of the reel to mechanically couple the stepper motor to the reel mechanism.
When the stepper motor driver is initially powered up, the angular position of the motor shaft is unknown in relation to the energized winding position. For example, for a200 step motor with four (4) pairs of windings in full step excitation mode, each pair of windings will have 50 step positions in one revolution. Thus, when the motor is first energized, it is not known which of the 50 energized positions is aligned to the zero phase or home position. The home position is correlated to a home position on an optical encoder wheel. As such, the stepper motor is known to be factory adjusted by a procedure known as phase setting with no load on the motor shaft.
It is known that if a load, such as a reel, is applied to the stepper motor shaft during power-up, the zero phase or home position will be offset thus requiring re-calibration when the reel mechanism is installed in a gaming machine. In order to correct the offset in the phase setting in the field, the stepper motor housing is physically rotated with respect to the reel mechanism frame. The procedure for phase setting is described in detail in Standard Operating Procedure SOP-0205-01-N-DEV, Starpoint Electrics Ltd, Pages 1-36, January, 2004, hereby incorporated by reference. In as much as there are normally five (5) reel mechanisms per gaming machine (number of reels in machine can be 3 to 7), phase setting of each of the reel mechanisms in a gaming machine (or at time of manufacture) is cumbersome and time consuming.
In particular, two windings of the stepper motor are energized in the field so that the reel assumes a permanent static position. Once locked in the static position, the motor is adjusted on the frame, so that the home position on the encoder aligns with a home position on the optical encoder. Rotation of the motor housing causes the zero phase position of the motor and the symbol on the reel, to be aligned to the payline.
Failure to correct the offset in the zero position can result in the symbols on the reels not properly lining up with the pay lines on the gaming machines and with the symbols on the other reels in the machine. Unfortunately, since gaming machines are configured so that the reel is directly coupled to the stepper motor on power up, the zero position will be offset.
Another problem with known reel mechanisms is the ability to control the reel position during a standstill condition. State gaming laws, e.g. Nevada gaming laws, require that the standstill condition be monitored and that an indication be provided should the reel move during such a standstill condition. Normally, systems for monitoring a standstill condition normally utilize an optical sensor and an optical encoder wheel. In known systems, the optical sensor and the optical encoder are used to detect movement of the reel. Should the movement beyond an acceptable amount be detected during a standstill condition, a tilt condition is known to be indicated.
There are several other problems with current methods of monitoring and controlling the reel position during a standstill condition. First, the monitoring requires an optical sensor. Second, during temporary power interruptions and low power conditions, the reels may drift from their standstill positions. In known systems, the drift would be indicated as a tilt condition, thereby ending any games in progress, likely disenchanting players. Thirdly, if reels are tampered with, the movement must be detected.
Known gaming machines include reel control systems with other problems. For example, known reel control systems have limited functionality. Indeed, known reel control systems are relatively limited in the number of reel control mechanisms that can be controlled and suffer from manufacturing and operational problems. For example, known gaming machines are known to include reel control drivers with unique addresses for each reel control mechanism in the gaming machine. The unique addresses require additional manufacturing steps and require additional inventory thus increasing the cost of such devices. In addition, known reel control mechanisms are known to require separate serial control buses for each reel control mechanism thus decreasing the response time of the system. In addition, known reel control systems are known to be limited with respect to their operational abilities. For example, known reel control systems cannot drive different types of reels simultaneously or drive multiple reels in different directions.
Thus, there is a need for eliminating the need for manual phase setting in reel mechanisms in gaming machines and improving the method of monitoring and responding to conditions when the reel position drifts during a standstill condition and providing reel control mechanisms with improved operational abilities that are less expensive to manufacture.
SUMMARY OF THE INVENTIONThe present invention relates to control system for eliminating known problems with reel mechanisms used in gaming machines. First of all, phase setting of the reel position is greatly simplified. More particularly, in accordance with one aspect of the invention, phase setting of the motor shaft in an unloaded position is obviated thus simplifying the overall calibration procedure. Manufacturing phase setting calibration is done with a loaded rotor shaft. Instead of rotating the motor housing to align the first symbol with a payline, the stepper motor is energized causing the rotor shaft to rotate to a home position. The shaft is then rotated under software control until the first symbol is aligned with a payline. The angular distance to that position is stored in persistent memory as an offset along with the home position. On subsequent power-ups, the system retrieves the stored home and offset positions from the persistent storage and rotates the rotor shaft to the stored positions and writes these positions to the stepper motor driver as the home and offset positions.
The control system also provides a relatively accurate method for determining if a reel position has moved from a standstill position, due to low power, no power or outright tampering. Any movement of the reel can be corrected. In a lock mode and any games in progress can be allowed to continue. Alternatively, in a tilt mode, any games in progress are terminated and an alarm signal is indicated. The control system takes advantage of the micro-stepping ability of the stepper motor driver to enable symbol strips with different size symbols to be implemented.
In accordance with an important aspect of the invention, the reel control system is configured with multiple serial bus interfaces connected to a single serial bus that, in turn, can be connected to multiple stepper motor drivers which provides for fast response time to commands. In accordance with other aspects of the invention, the reel control system can drive multiple stepper motor drivers configured with the same physical address to reduce manufacturing costs and is further configured to simultaneously drive multiple reels, different distances, different directions, with different numbers of symbols per reel as well as drive different types of reels.
DESCRIPTION OF THE DRAWINGThese and other advantages of the present invention will be readily understood with reference to the following specification and attached drawing wherein:
FIG. 1 is a block diagram of a control system for a reel mechanism in accordance with the present invention.
FIG. 2 is a block diagram of an Intelligent Reel Controller (IRD) configured to host configured to interface to an exemplary number of reel mechanisms.
FIGS. 3A and 3B are process diagrams for phase setting of the reel mechanisms in accordance with the present invention.
FIG. 4 is a software flow diagram for detecting movement of a reel mechanism during a standstill condition.
FIG. 5 is a two dimensional representation of a symbol strip with unequal symbol lengths in accordance with one aspect of the invention.
FIG. 6 is a data flow diagram illustrating the operation of the reel control system in accordance with the present invention.
FIG. 7 is an exemplary simplified flow diagram of an exemplary application for use with the present invention.
FIG. 8 is an exemplary simplified flow diagram for an Intelligent Reel Driver (IRD) in accordance with the present invention.
DETAILED DESCRIPTIONThe present invention relates to a reel control system for a gaming machine having at least one reel mechanism, for example, as described in detail in U.S. Pat. Nos. 4,410,178 and 5,388,829, hereby incorporated by reference. As will be discussed in detail below, the control system in accordance with the present invention relates to a reel control system that includes various improvements relative to known reel control systems.
For example, the reel control system is configured to eliminate known problems related to phase setting and detection of reel movement during a standstill condition. In accordance with another aspect of the invention, the reel control system may also be configured to enable reels with unequal symbol lengths to be utilized which enabled the odds of a winning combination to be easily changed. In accordance with yet another aspect of the invention, the reel control system is configured to control multiple stepper motor drivers by way of a single serial bus with multiple serial bus interface, for example, eight (8) serial interfaces, which improves the response time of the system and enabling the stepper motors to be operated at a relative fast speed, for example, full speed. In order to facilitate the manufacturing and reduce the cost of such devices, the reel control system is configured to operate with the stepper motor drivers all configured with the same physical address. Finally, the reel control system in accordance with the present invention can control multiple reels, different types of reels in different directions virtually simultaneously, as discussed below.
Reel Control SystemReferring toFIG. 1, a reel control system in accordance with the present invention is generally identified with thereference numeral20. As shown, thereel control system20 includes a Intelligent Reel Driver (IRD) generally identified with thereference numeral22 and a multiple of reel mechanisms, generally identified with thereference numerals26,2830 and32. TheIRD22 is used to interface ahost controller24 with one ormore reel mechanisms26,2830 and32.
Eachreel mechanism26,28,30 and32 includes a stepper motor and a stepper motor driver. The electrical connections between the stepper motor and the stepper motor driver are made locally at eachreel mechanism26,28,30 and32. The connections from each of the stepper motor drivers are terminated, for example, by way of an exemplary connector (not shown) and routed to theIRD22. The connectors from the stepper drivers are mated with corresponding reel interfaces, generally identified with thereference numeral34 on theIRD22. The reel interfaces34 are configured as complementary connectors (not shown). The reel interfaces34 and the complementary connectors from the stepper drivers may be implemented as 18 pin Molex type MTA connectors.
As will be discussed in more detail below, theIRD22 provides an interface between the host ormaster controller24 and a plurality of stepper motor drivers, for example eight (8) identified with thereference numerals26,28,30 and32. TheIRD22 acts as a client or slave with respect to thehost controller24. TheIRD22 acts as master with respect to thestepper motor drivers26,28,30 and32 when sending commands to thestepper motor drivers26,28,30 and32 and acts as a slave when receiving data from thestepper motor drivers26,28,30 and32.
In accordance with an important aspect of the invention, theIRD22 communicates with each of thestepper motor drivers26,28,30 and32 by way of individualserial communication buses34,36,38 and40, for example, I2C buses. Communication between theIRD22 and thehost controller24 may be by way ofserial communication buses42 and44, for example, an RS-232 bus and/or a USB bus. For example, the RS-232bus42 may be used to connect ahost controller24 to theIRD22 while theUSB bus44 may be used for connecting theIRD22 to a personal computer (not shown) for initialization, testing and calibration. Acommon power supply46 may be used to provide power to both theIRD22 and thehost controller24.
Game controllers, for example, as described in detail in U.S. Pat. No. 5,988,638, hereby incorporated by reference, are well known in the art. Such game controllers may include a persistent memory device for storing all of the stop positions for each symbol on each reel in the gaming machine. These stop positions are used to identify the positions of the center of symbol position of each symbol on each reel and/or the position of one or more pay lines on each symbol. The stop positions are stored in memory at various memory addresses and may be used to identify the center of the symbol positions and/or pay line positions with reels having equally spaced symbols and unequally spaced symbols, for example, as illustrated inFIG. 5. The random numbers may also represent the number of symbols each reel is to move.
As is well known in the art, the host application orcontroller24 includes a random number generator (not shown) for generating random numbers that are correlated with the addresses of the stop positions of the reels in the gaming machine. The random numbers may also represent the number of symbols each reel is to move.
The stepper motor drivers then cause the reels to rotate to the randomly selected reel positions. As will be discussed in more detail below, these randomly selected reel positions are configured as reel control commands by an Application Program Interface (API). The reel control commands are sent to theIRD22. TheIRD22 converts the reel control commands to stepper motor driver commands which have the proper syntax and format for the stepper motor drivers. These stepper motor driver commands are sent to the stepper motor drivers which drive therespective reel mechanisms26,28,30 and32 to the positions which correlate with the positions generated by the random number generator. The stepper motor driver commands are sent theIRD22 over one of the serial communication buses, theUSB bus42 or the RS-232bus44 under the control of theIRD22.
TheIRD22 acts both as a master and a slave depending on whether theIRD22 is sending commands to thestepper motor driver26,28,30,32 or receiving data from thestepper motor drivers26,28,30,32. In particular, when theIRD22 sends a command to thestepper motor drivers26,28,30,32, theIRD22 acts as a master. When theIRD22 receives data from thestepper motor drivers26,28,30 and32, theIRD22 acts as a slave.
Intelligent Reel DriverAs mentioned above, the intelligent reel driver (IRD) is configured with multiple serial bus interfaces that can be connected to multiple stepper motor drivers which provides for fast response time to commands. As shown inFIGS. 1 and 2, theexemplary IRD22 is shown with eight (8) serial bus interfaces, for example, I2C bus interfaces, which allow theIRD22 to control eight (8) reel mechanisms virtually simultaneously. Each of the eight (8) serial interfaces, in turn, is capable of driving, for example, thirty-two (32) stepper motor drivers since each stepper motor driver has a 5 bit address. TheIRD22 is thus configurable to drive256 (8×32) stepper motor drivers. TheIRD22 is thus able to drive a relatively large number of stepper motor drivers and provide relatively fast response times. As such, theIRD22 allows commands to be sent to the stepper motor drivers at a relatively fast speed, thereby reducing system response time. Indeed, known systems with a separate I2C bus for eight (8) separate stepper motor drivers would have an increased response time, i.e the difference in time from the time is sent to the stepper motor driver and the time the command is fully executed, on the order of a factor of eight (8).
In accordance with other aspects of the invention, the reel control system can drive multiple stepper motor drivers configured with the same physical address to reduce manufacturing costs. For an exemplary AMIS-30624 stepper motor driver, the format of the address is generally one byte.Bits6 and7 are fixed as a “1” while bit0 is preset as a “0”.Bit1 is hardwired whilebits2,3,4 and5 are configured as OTP, one time programmable. In order to simplify manufacturing, the OTP bits for all of stepper motor driver. These OTP bits may be set by way of a SetOTP command on the stepper motor driver. In order to reduce manufacturing costs, the OTP address bits for all of the stepper motor drivers are set to the same physical address. In order to provide selectivity of the various stepper motor drivers, the hardwired bit,bit1, is connected to the FPGA56 (FIG. 2). TheFPGA56 is configured as an eight (8) channel duplex time division multiplexer. As such commands from theIRD22 are sent to the respective stepper motor drivers virtually simultaneously by way of time division multiplexing. Similarly, data from the stepper motor drivers is returned to theIRD22 in the same fashion.
In accordance with another aspect of the invention, the reel control system is configured to drive different types of reels, such as reels having both an equal number of symbols and reels having an unequal number of symbols, for example, as illustrated inFIG. 5. As will be discussed in more detail below, the stop positions for all of the symbols on a reel are stored. Thus for random signals based on a number of symbols to move a reel, the radial distance that the reel is moved is calculated irrespective of the radial length of the symbols I. Thus, the system can control reels with symbols having different radial lengths as well as a different number of symbols per reel.
Moreover, the reel control system allows for movement of the reels in different directions. In particular, the SetPosition command has a signed data bytes. In particular, the most significant bit (msb), i.e bit15, is used to determine the direction of rotation of the reel depending on whether the msb is a “1” or a “0”. Based on the above, the reel control system is configured to simultaneously drive multiple reels, different distances, different directions, with different numbers of symbols per reel and can also drive different types of reels.
An exemplary hardware block diagram of theIRD22 is illustrated inFIG. 2. As shown, theIRD22 includes a CPU48, for example, a 32 bit ARM CPU and anon-volatile memory50, for example, a EEPROM. TheIRD22 also includes an LEDmatrix control circuit52 which does not form a part of the present invention. The stepper motor drivers for thevarious reel mechanisms26,28,30 and32 (FIG. 1) are connected to theIRD22 by way of a plurality of connectors or reel interfaces54. Eachreel interface54 is connected to a field programmable gate array (FPGA)56 by way of an I2C buffer, generally identified with thereference numeral58 and an I2C interface, generally identified with thereference numeral60. The I2C buffers58 and the I2C interfaces60 are used to interface the I2C buses corresponding to the stepper motor drivers of thevarious reel mechanisms26,28,30 and32 to a Field Programmable Gate Array (FPGA)56. These I2C buffers58 and the I2C interfaces60 may be implemented by way of one or more integrated circuits, for example CMOS Integrated Circuits (ICs) 40106 or 74HC14, which are hex inverting Schmitt triggers.
TheFPGA56 is configured as a multi-channel duplex time division multiplexer. In the exemplary application shown, theFPGA56 is configured as an eight (8) channel duplex multiplexer. TheFPGA56 is used to transmit commands and receive data to and from thestepper motor drivers26,28,30 and32 by way of the reel interfaces54. As shown, an exemplary eight (8) reel interfaces are shown which would require a three (3) bit interface from the CPU48 to theFPGA56. The three (3) bit interface would thus allow the CPU48 to address each of the eight (8) stepper motor drivers attached to the reel interfaces54. TheFPGA56 may also be used to interface anEEPROM62 to the CPU48.
TheEEPROM62 may be used for storing software which stores parameters for the instructions from the host controller24 (FIG. 1) to each of the stepper motor drivers associated with thevarious reel mechanisms26,28,30 and32. TheEEPROM62 may also be used for initializing each of thereel mechanisms26,28,30 and32 on power-up.
TheIRD22 also includes a non-volatile memory, for example a read only memory (ROM)50 for storing firmware associated with the CPU48. TheROM50 may be external or on-chip with the CPU48.
As mentioned above bi-directional communications between the host controller24 (FIG. 1) and theIRD22 is by way of a RS-232communication link42. The RS-232 communication link is connected to a RS-232 port64 (FIG. 2) on theIRD22. Bi-directional communication between an external PC (not shown) and theIRD22 may by way of a USB bus44 (FIG. 1). TheUSB bus44 would be connected to aUSB port66 on theIRD22.
Data Flow DiagramAn exemplary data flow diagram is illustrated inFIG. 6. As mentioned above, the host application24 (FIG. 1) includes a random number generator (FIG. 6), generally identified with thereference numeral49. All of the stop positions for each reel in the gaming machine are stored in anon-volatile memory51. As is known in the art, suchrandom number generators49 are generally responsive toplayer inputs53, such as a lever pull, etc. In response to such aplayer input53, therandom number generator49 selects an address for each reel stop position stored in thenon-volatile memory51 for each reel in the gaming machine. The randomly selected stop positions are formulated into various reel control commands by an Application Program Interface (API)55. A simplified description of theAPI55 is provided for a complete understanding of the system.
The reel control commands are sent to the IRD22 (FIG. 1) over a serial bus, for example the RS-232bus42 or theUSB bus44. Exemplary Spin commands generated by theAPI55 are provided below.
Command—ReelControl:Spin:Forward:X=Y
Command—ReelControl:Spin:Backward:X=Y
Command—ReelControl:Spin:X=Y
Command—ReelControl:Spin:X=F,Y
Command—ReelControl:Spin:X=B,Y
These commands start one or more reels spinning. The X parameter specifies which reel or reels to start. This can be a single reel, e.g. “1”, or a comma separated list of more than one reel, e.g. “2,4”. The Y parameter specifies the number of symbol positions to spin the reel. This can be more than one complete revolution of the reel if required. For small position adjustments, a number of reel steps to spin can be specified, as opposed to complete symbol positions. For example, Y=″5″ means spin five symbols. Y=“0.5” meansspin5 steps. TheAPI55 keeps track of the symbol positions of each reel in the gaming machine and therefore can calculate the number of steps, half steps, etc., to move the stepper motor from the reel's current position to the newly randomly selected position.
Exemplary Responses to the ReelControl command are provided below.
Response-Reel Control: Spin command sent
Response-Reel Control: Failed to spin, reel N has timed out
Response-Reel Control: Failed to spin, reel N already spinning
Response-Reel Control: Failed to spin, command not sent
Response-Reel Control: Failed to spin, command not acknowledged
Except for the Response “Reel Control: Spin command sent”, system control is based upon positive feedback from theIRD22 within a predetermined time period. For example, if one of the specified reels is already spinning when theAPI55 issues the command to theIRD22, theAPI55 will return the response: “Reel Control: Failed to spin, reel N already spinning”. In this case, theIRD22 is able to get the motion status of a reel in response to a GetFullStaus command to the stepper motor driver. This data is returned to theAPI55. If the reel to which a command was sent indicates motion at the end of a predetermined time period, theAPI55 returns the response: “Reel Control: Failed to spin, reel N already spinning.”
The “Spin command sent” response indicates that the command has been sent, but not necessarily that the reels have started spinning. After this response one or more event messages should be received. For example, a Response “Reel Control: Reel N started”, is generated confirming that each reel has started spinning, when confirmation is received from theIRD22.
Commands from theAPI55 are transmitted to theIRD22 by way of one of theserial communication buses42,44. These commands are translated to the proper format and syntax for the stepper motor drivers by theIRD22. TheIRD22 writes these commands stepper motor drivers which controls the stepper motors according to the received command. In particular, the ReelControl command from theAPI55 is translated, i.e formatted into a command recognizable by the stepper motor driver. For example, the ReelControl:Spin:Forward:X=Y command from theAPI55 can be translated by the CPU48 (FIG. 2) to a “SetPosition” stepper motor driver command for an AMIS-30625 stepper motor driver.
The SetPosition command is provided to drive the stepper motor to a given absolute position. The format and syntax of the SetPosition command is provided below. The entire command set for the stepper motor drivers is set forth in Model No. AMIS-30625, I2C micro-stepping motor driver, as manufactured by ON Semiconductor, described in detail in Publication Order No. AMIS 30624D, Rev. 4, Copyright 2008, published by ON Semiconductor, hereby incorporated by reference.
|
| SetPosition Command corresponds to the following |
| I2C command frame: SetPosition Command Frame |
| Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
|
| 0 | Address | 1 | 1 | OTP | OTP | OTP | OTP | HW | 0 |
| | | | 3 | 2 | 1 | 0 |
| 1 | Command | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
| 2 | Data | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 |
| 3 | Data | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 2 |
A method for translating a ReelControl command from theAPI55 by theIRD22 is illustrated below. Other commands can be translated in a similar manner. TheIRD22 may includes a look up table in theEEPROM62, which associates a ReelControl command from theAPI55 with a SetPosition command for the stepper motor driver. Given the syntax and format of the SetPosition command as provided above, the CPU48 creates the SetPosition command by parsing the data from the ReelControl command from theAPI55. The data is provided in two (2) bytes. Bits [15:8] of the data are provided bybyte4 and bits [7:0] are provided bybyte5.
The CPU48 uses the data to create the SetPosition command. In particular, as set forth above, the SetPosition command is a five (5) byte command.Byte1 relates to the address of the stepper motor drive. This address corresponds to thereel control mechanism26,28,30 and32. The next byte is the command byte. This byte corresponds to the number of the “SetPosition” command. In this case, this byte is 1001011. The next two bytes are for position data. These two (2) bytes or sixteen (16) bits of data allow 1 of 65,536 positions to be specified.
The current position of the stepper motor is stored in memory on board the stepper motor driver. The position may also be provided by an encoder wheel attached to the gaming reel. The position of the stepper motor for each gaming reel can be read from the stepper motor driver by theIRD22 by way of a “GetFullStatus2” command. This command is configured with eight (8) bytes. Two bytes,bytes2 and3, together provide the 16 bit actual position of the stepper motor. This position may be used to enable the CPU48 to calculate the number of steps to rotate the stepper motor in order to get to the new symbol that corresponds to the position determined by the random number generator.
A simplified exemplary flow diagram of theAPI55 is illustrated inFIG. 7. As shown, the system waits instep57 for a player input. Upon receipt of a player input, the host application24 (FIG. 6) generates a random number by way of a random number generator. TheAPI55 reads the random number in order to determine the number of symbols to move each of the reels based upon the output of the random number generator. These randomly selected numbers are stored instep59. TheAPI55 uses those numbers to construct a command, such as the ReelControl command discussed above instep61. Instep63, the command is transmitted to the IRD22 (FIG. 1) over a serial communication bus, such as the RS-232bus42 or theUSB bus44.
A position control command is generated for each reel. After each command is sent to theIRD22 instep65, theAPI55 checks if commands have sent for all of the reels in the gaming machine. If not, the system returns to step61 and repeatssteps61,63 and65 until commands for all of the gaming reels have been sent to theIRD22. After all of the commands have been sent to theIRD22, the system returns to step57 to await additional player input.
A simplified exemplary flow diagram for theIRD22 is illustrated inFIG. 8. Initially, theIRD22 awaits a command from theAPI55 instep67. Upon receipt of the command, theIRD22 translates the command into a format and syntax, for example, as described above. As mentioned above, the exemplary ReelControl command is provided in terms of the number of symbol positions that each reel is to move. In an exemplary embodiment, the stop positions for all symbols on each reel are stored in the EEPROM62 (FIG. 2). As discussed below, the current position of each reel is returned by the stepper motor driver to theIRD22. The CPU uses this information to calculate the target position of the reel that corresponds to the number of symbols that the reel is to be moved. TheIRD22 uses this number to construct a SetPosition command, for example, as discussed above instep69. The command is then sent to the stepper motor driver instep71. Subsequently, theIRD22 reads various data from the stepper motor driver including the actual position of the stepper motor after the command has been executed instep73. Instep75, the data from the stepper motor driver is stored and the system returns to step67 to await another command from theAPI55. Steps69-71 are repeated until commands for all of the reels have been received and processed.
Stepper Motor DriverAt the heart of the control system is the stepper motor driver. The stepper motor driver is used to drive a bipolar stepper motor in micro-stepping mode. The stepper motor driver is an integrated circuit (IC), for example an AMIS 30624 IC, which acts as a either slave or a master to theCPU56 on theIRD22 depending on whether a command is being sent by theCPU56 or data is being received from the stepper motor driver. As mentioned above, each pair of stepper motor drivers is interfaced; i.e connected, to theIRD22 by way of individual I2C buses34,36,38 and40. Each stepper motor driver is connected to a stepper motor and an electrical connector (not shown). As mentioned above, these electrical connectors are connected to the reel interfaces54, located on theIRD22.
The stepper motor driver provides many important functions with respect to the control system in accordance with the present invention. First, the stepper motor driver provides closed loop control of the reel positions. In particular, The IC has built in motor position reference. When the motor is rotated, the IC automatically updates the physical position. More specifically, the stepper motor driver monitors the back EMF in the stator coils of the stepper motor to determine the actual rotor position. Whenever a SW input on the stepper motor driver is triggered, the rotor position of the stepper motor is saved in on-board memory on the stepper motor driver. Thehost controller24 can thus read back the physical position of the stepper motor from the stepper motor memory. As such, thehost controller24 does not need an external optic device and encoder to monitor the symbol positions and keep a log of reel positions.
A brief description of the operation of the stepper motor driver, as provided below, will enable the present invention to be better understood. Initialization of the reels is accomplished with a single optical sensor (not shown) on eachreel mechanism26,28,30 and32, located at a “home” position. The “home” position is defined as that position, where the first symbol on a reel is aligned to a pay-line, the optic sensor output is at a defined state, and the motor step position is known. The “home” position may be adjusted through 360 degrees of movement by means of mechanical adjustment of motor, lamp array and optic device, on the frame. On power up/reset condition, the motor is rotated, and the optic device monitored. When the optic device is triggered by the driven load, the output is fed into the SW input of the stepper motor driver. The motor step position is then saved to memory on-board the stepper motor driver as an absolute reference point.
Among other things, the stepper motor driver can be used to set various control parameters. For example, the stepper motor driver enables master controller24 (FIG. 1) to set the micro-step resolution, run current and hold current of the stepper motor. With the stepper motor driver as described above, there are two methods for driving a reel to a new symbol position. In the first method, when a new symbol position is required, the host controller24 (FIG. 1) reads back the reel position from the stepper motor driver memory and calculates the difference in steps and/or micro-steps from the current reel position to the target symbol position. Themaster controller24 by way of theIRD22, then commands the stepper motor driver to the target symbol position. The host controller can then check the physical position of the reel by reading the memory on-board the stepper motor driver and correct if required. This is similar to incremental positioning; the key difference being the host can read the current reel position from the load and not rely on a previous incremental position, thereby avoiding positional errors. In a second method, when a new symbol position is required, thehost controller24 drives the stepper motor in the required direction and monitors the reel position from the stepper motor on board memory. The stepper motor is then stopped when the target reel position is achieved.
Phase SettingAs mentioned above, phase setting relates to the position of the stepper motor shaft on power up. Since the reel is directly connected to the stepper motor on power up, the zero position of the rotor shaft is normally offset from a true zero position . . . . More specifically, as discussed above, the zero position of a stepper motor relates to the position of the rotor on power up. This zero position is used for positioning the rotor to other positions. When a load such as a reel is placed on the rotor at power-up, the factory zero position may not correspond to the centerline of a symbol. As such, heretofore, the stepper motor housing was rotated to cause the centerline of the symbol to be aligned with the payline on power up.
In accordance with the present invention, calibration of the rotor shaft in an unloaded position is unnecessary. In order to better understand the invention, previously known technique for calibrating the rotor shaft position are briefly described below. More particularly, the calibration of the rotor position was previously done in full step mode. Thus for a four (4) winding stepper motor in full step mode, 50 positions are known per revolution for each winding. Thus, previously factory calibration of the rotor position was used to locate a home position as close as possible to a position in which the first symbol was aligned with the payline. In order to fine tune the calibration and align the first symbol with a payline, the motor housing was rotated until the first symbol was aligned with the payline. The method in accordance with the present invention greatly simplifies phase calibration of the rotor shaft and eliminates the need to calibrate the shaft position in an unloaded condition.
Rather than physically rotating the stepper motor housing as is known in the prior art, thecontrol circuit20 in accordance with the present invention allows the “home” position for each reel to be adjusted under software control on initial power up in micro-step mode. In particular, each reel includes an optical encoder. Each optical encoder is formed as a wheel rigidly secured to each reel. Each optical encoder includes a number of peripheral slots which are positioned to correspond with various symbol positions on the reel.
The “home” position is defined as the reel position in which encoder corresponding to the first symbol is aligned with the optical sensor, rigidly secured to thereel mechanism26,28,30 and32 Ideally, the home position is aligned with a payline on the glass of a gaming machine. If not, the reel has to be rotated so that the first symbol is aligned with the payline defining an offset position.
The home and offset positions are normally stored in a volatile memory on-board the stepper motor driver IC. On power loss, this data is lost and the system has to be re-calibrated and the home and offset positions have to be re-stored on the IC. In accordance with one aspect of the invention, the system automatically restores the home and offset in the IC and re-positions the rotor to the correct position.
The process steps for factory calibration of the rotor position is illustrated inFIG. 3A. Calibration is accomplished electronically by way of an external PC connected to theUSB port36 on theIRD22, as discussed above. During a calibration mode, the external PC is connected to theIRD22 by way of a USB bus44 (FIG. 1). During the calibration mode, the stepper motor is operated in micro-step mode, enabling the first symbol position to be precisely aligned with the payline. With such a configuration, the external PC functions as themaster controller24. As such, the external PC can take advantage of the native commands of the stepper motor driver for various purposes. For example, the external PC can cause the stepper motor driver to micro-step the reel to a position in which aligns the first symbol, for example, the centerline of the first symbol, with a payline on power-up. More particularly, the stepper motor driver includes a “GotoSecurePosition” command which enables the stepper motor to be micro-stepped. By way of theIRD22, the external PC can be used to micro-step the reel to a position in which the first symbol is aligned with a payline on the gaming machine. Once the first symbol is aligned with the payline, the offset from the aligned position to the home position can then be added to the home position and stored as the new home position. The stepper motor driver includes a “ResetPosition” command for that purpose.
As illustrated inFIGS. 3A and 3B, phase setting of the reels associated with thereel mechanisms26,28,30 and32 can be accomplished either at the factory or in the field.FIG. 3A illustrates the steps involved in phase setting at the factory.FIG. 3B illustrates the steps involved in phase setting in the field.
Referring first toFIG. 3A, phase setting is initiated at the factory by applying power to the stepper motor. This may be accomplished by applying power to the battery supply pin VBB on the stepper motor driver, as indicated instep68. On power-up the reel will rotate to a home position under the control of the stepper motor driver, as indicated by thestep70. After the reel rotates to its initial home position, the position of the first symbol with respect to the payline is checked instep72. If the first symbol is not aligned with the payline on the gaming machine. The reel is micro-stepped forward or backward until the first symbol on the reel is aligned with the payline, as discussed above, by way of an external PC, as indicated instep74. Once the first symbol is aligned with the payline, the offset between the initial home position and the aligned position is calculated by taking the difference between the initial home position and the aligned positions stored on the stepper motor driver. This difference or offset is stored, as indicated above instep76. Instep78, the initial home position and the offset position are stored on board theIRD22 concluding the manufacturing calibration, as indicated instep80. Thus, on subsequent power-ups, the reel will rotate to a position in which the first symbol position is aligned with the payline.
FIG. 3B illustrates the process steps involved after a power loss in the field. On power loss, the home and offset positions are lost in the stepper motor driver IC. In accordance with an important aspect of the invention, the home and offset positions are automatically restored to the stepper motor driver IC on subsequent power-ups Initially, power is applied to the stepper motor as described above instep82. On subsequent power-ups, the system automatically retrieves the home and offset positions from theIRD22. Once those positions are retrieved, the reel is automatically rotated to its home position, as indicated instep84. Next the reel is automatically rotated to the offset position, as indicated instep86. In step88, the home position and the offset position are stored in the stepper motor driver IC. That position is then set as a the reset position instep90, by way of a “ResetPosition Command”, available on the stepper motor driver.
Standstill Detection and ControlThecontrol system20 can also be used to manage the monitoring of a standstill condition and the response to a condition where the reel drifts from a stop position either due to temporary power loss or a low power condition. In particular, the stepper motor driver has a SW pin. Anytime the SW pin is triggered, the actual position of the stepper motor rotor is stored in memory aboard the stepper motor driver. Themaster controller24 can thus repeatedly request the actual position of the rotor by way of a “GetFullStatus2” command. Should themaster controller24 determine that the reel has drifted with respect to the standstill position, themaster controller24 can drive the rotor back to its standstill position by way of “SetPosition” command.
An exemplary flow chart is illustrated inFIG. 4. In accordance with one aspect of the invention, the system response to rotor movement from a standstill condition is user programmable. More particularly, the response can be set as a “tilt” condition and terminating a game in progress is terminated or simply returning the reel to its correct position and allowing the game to continue, as indicated instep94. In response to random signals generated by the master game controller, the reel motor is spun and driven to a target position as determined by the master game controller24 (FIG. 1) and stopped, as indicated by the logic blocks96 and98. Once the reel reaches its target position, the motor current is reduced instep100, defining a standstill mode. Instep102, the reel position is read from the memory on board the stepper motor driver by themaster controller24. This position is stored as the standstill position instep104. Instep106, theIRD22 can compare the current position with stored standstill position. If the current position does not correspond with the stored standstill position, theIRD22 will indicate a “tamper” condition, as indicated instep108. In accordance with another aspect of the invention, the current reel position is determined in two (2) ways. First, as discussed above, the current reel position is determined by reading the reel position from the memory of the stepper motor driver. Secondly, the current reel position is determined by way of the encoder wheel, as discussed above. As such, if the current position determined from the memory of the stepper motor driver corresponds to stored standstill position, the system next determines the current reel position by reading the reel position, as indicated by the optical encoder, as discussed above, instep108. Instep110, theIRD22 determines if the reel position, as indicated instep108, corresponds to the last stop position generated by the master controller24 (FIG. 1). If not, the system proceeds to step108 and indicates a tamper condition. If theIRD22 determines that the current reel position corresponds to the last stop position generated by themaster controller24, the system determines that the current reel position is correct and to step102 to monitor the current reel position. The system may continuously monitor the current reel position until the game is over, as indicated by thehost controller24, in which case, the standstill mode is terminated, as indicated instep112. Once the standstill mode is terminated, the system loops back to step96 and awaits a motor spin.
If a tamper condition is detected, as indicated instep108, theIRD22 can be placed in a lock mode or a tilt mode. As mentioned above, theIRD22 can be configured initially in either mode. Thus, instep114, theIRD22 checks a configuration register to determine whether it was initially configured in a lock mode or a tilt mode.
In a lock mode, theIRD22 simply drives the reel back to the correct position. The system maintains that position by repeatedly checking the reel position on the memory of the stepper motor driver and driving the reel back to the correct position when the reel moves by a predetermined amount. In the lock mode, the game in progress may continue once the reel is returned to its correct position.
In a tamper mode, theIRD22 reports a tilt condition back to thehost controller24. TheIRD22 may also provide an alarm signal. In the tamper mode, any game in progress may be terminated.
Variation in Symbol Type‘Symbol types’ are variations in the number, and size of symbols that are located on the periphery of the reel basket. A reel basket is defined as a pair of spaced apart circular disks or rings that are connected together with a number of rungs that are juxtaposed around the periphery of the reels in a position generally parallel to the axis of rotation of the reels.
Currently, reel mechanism designs require various components to provide a solution. These components are designed for specific symbol types. Most symbol types are directly related to the stepper motor used to drive the reel. For example, a 200 step motor with reels configured with 25 symbols will utilize 8 steps per symbol, all equally displaced around the reel periphery.
Some known reel baskets include spacers at pre-defined locations to allow correct symbol illumination. Other known reel baskets include pre-defined optical encoders for specific symbol types. The host software is also pre-defined for specific number of symbols.
Multiple symbol types are illustrated inFIG. 5 and may be accommodated within the design. This allows different symbol sizes to be used on a common reel mechanism. It also allows the host to change symbol type easily, if machines are rebuilt. The reel basket design has no spacers that separate the spaced apart rings or spacers. The symbol location may be in any position around the periphery of the reel basket. Such a configuration allows unrestricted backlight illumination.
The reel basket must have an encoder located in a known position, relative to the symbol location. An optic flag is a component that is used to trigger/interrupt an optic device. This encoder may be fixed in that location for any symbol type. Maximum symbol size is determined by the maximum viewable area on the game machine cabinet. For example, a viewing area of 45 degrees, will allow 8 symbols of 45 degrees height to be used. The minimum symbol size is determined by the backlight components. For example an LED component may be mounted so that it provides 5 degrees of illumination spread. This limitation is due to the physical size of the components. This configuration allows up to 72 symbols to be used.
In accordance with one aspect of the invention, any number of symbols may be used, between the minimum and maximum values, and that all symbols may be stopped centrally about the pay line angle. This is achieved by utilizing the micro step feature of the stepper motor driver, as discussed above, and the ability to boost the holding torque, on micro step positions.
FIG. 5 is a two dimensional representation of a symbol strip with unequal symbol sizes, generally identified with thereference numeral118. For illustration, each symbol on thesymbol strip118 has a different length. Assuming a 200 step stepper motor, each symbol on thesymbol strip118 can be correlated to a number of steps. The total number of steps for all of the symbols preferably adds up to 200.
Obviously, many modifications and variations of the present invention are possible in light of the above teachings. Thus, it is to be understood that, within the scope of the appended claims, the invention may be practiced otherwise than as specifically described above.
What is claimed and desired to be secured by a Letters Patent of the United States is: