WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Direct current command generation for a stepper motor drive    
United States Patent6121745   
Link to this pagehttp://www.wikipatents.com/6121745.html
Inventor(s)Komm; William (Weatogue, CT)
AbstractA system for controlling a stepper motor is disclosed that includes a microprocessor for directly generating current command signals. The microprocessor has a memory wherein the memory includes a function table, a first function table address, and a second function table address. A velocity signal (indicating a rotational position change per unit time) is calculated by the microprocessor during each update interval. Each update interval comprises a plurality of interrupt intervals. The microprocessor, in accordance with software-selectable current magnitude parameter values and microstepping parameter values, determines a first and second current value by accessing the function table at the first and second function table addresses, during each interrupt interval. The first and second current values generated by the microprocessor correspond to a pair of digital words representing a pair of phase current commands. The microprocessor outputs the pair of digital words to a drive circuit during each interrupt interval to energize a two-phase stepper motor.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 6121745
Direct current command generation for a stepper motor drive - US Patent 6121745 Drawing
Direct current command generation for a stepper motor drive
Inventor     Komm; William (Weatogue, CT)
Owner/Assignee     Warner Electric Technology, Inc. (Richmond, VA)
Patent assignment
All assignments
Publication Date     September 19, 2000
Application Number     09/226,138
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     January 5, 1999
US Classification     318/696
Int'l Classification    
Examiner     Ro; Bentsu
Assistant Examiner    
Attorney/Law Firm     Dykema Gossett PLLC
Address
Parent Case     CLAIM OF PRIORITY This application is a continuation-in-part of U.S. patent application Ser. No. 08/942,937 filed on Oct. 2, 1997, now U.S. Pat. No. 5,914,579.
Priority Data    
USPTO Field of Search     318/254 318/685 318/696 318/700 318/701 318/720 318/721 318/722 318/724
Patent Tags     direct current command generation stepper motor drive
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5648759
Miller et al.

Jul,1997

[0 after 0 votes]
5640075
Brasseur et al.

Jun,1997

[0 after 0 votes]
5583410
Jacobson et al.

Dec,1996

[0 after 0 votes]
5552691
Pierce et al.

Sep,1996

[0 after 0 votes]
5545112
Densmore et al.

Aug,1996

[0 after 0 votes]
5508594
Underwood et al.

Apr,1996

[0 after 0 votes]
5489250
Densmore et al.

Feb,1996

[0 after 0 votes]
5475289
McLaughlin et al.

Dec,1995

[0 after 0 votes]
5420492
Sood et al.

May,1995

[0 after 0 votes]
5359271
Husher

Oct,1994

[0 after 0 votes]
5290205
Densmore et al.

Mar,1994

[0 after 0 votes]
5272424
Lee

Dec,1993

[0 after 0 votes]
5252903
Maruyama

Oct,1993

[0 after 0 votes]
5249118
Smith

Sep,1993

[0 after 0 votes]
5198741
Shinada et al.

Mar,1993

[0 after 0 votes]
5187417
Minnich et al.

Feb,1993

[0 after 0 votes]
5099185
Kono et al.

Mar,1992

[0 after 0 votes]
4868477
Anderson et al.

Sep,1989

[0 after 0 votes]
4845608
Gdula

Jul,1989

[0 after 0 votes]
4683408
Inoue et al.

Jul,1987

[0 after 0 votes]
4651073
Shimizu et al.

Mar,1987

[0 after 0 votes]
4642536
Boyd, Jr. et al.

Feb,1987

[0 after 0 votes]
4630210
Salazar et al.

Dec,1986

[0 after 0 votes]
4529919
Melocik et al.

Jul,1985

[0 after 0 votes]
4518907
Giguere

May,1985

[0 after 0 votes]
4353019
Sweeney, Jr.

Oct,1982

[0 after 0 votes]
4250544
Alley

Feb,1981

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A method of controlling a motor, comprising the steps of:

(A) generating a velocity signal during a first update interval, said first update interval including a plurality of interrupt intervals and said velocity signal corresponding to a desired change in rotational position of said motor per unit time;

(B) dividing said change in said rotational position by a predetermined number to obtain an incremental position change value;

(C) adding said incremental position change value to a function table position value to obtain a first function table address;

(D) accessing a function table using said first function table address to obtain a first current value;

(E) generating a first current in a first phase of said motor during a first interrupt interval of said plurality of interrupt intervals responsive to said first current value;

(F) adding a phase offset value to said first function table address to obtain a second function table address;

(G) accessing said function table using said second function table address to obtain a second current value; and

(H) generating a second current in a second phase of said motor during said first interrupt interval responsive to said second current value.

2. A method of controlling a motor, said method comprising the steps of:

(A) generating a first current value from a function table, said first current value corresponding to an excitation waveform for said motor;

(B) storing said first current value in a first transfer table; and,

(C) repeating steps (A) and (B) a plurality of times corresponding to the number of entries to be output from said first transfer table during a first update interval.

3. The method of claim 2, further comprising the steps of:

(D) generating a second current value from said function table, said second current value corresponding to an excitation waveform for said motor; and

(E) storing said second current value in a second transfer table.

4. The method of claim 3, further comprising the step of:

(F) repeating steps (D) and (E) a plurality of times corresponding to the number of entries to be output from said second transfer table during a second update interval.

5. A method of controlling a motor, said method comprising the steps of:

(A) generating a velocity signal during a first update interval, said first update interval including a plurality of interrupt intervals and said velocity signal corresponding to a desired change in rotational position of said motor per unit time;

(B) dividing said change in said rotational position by a predetermined number to obtain an incremental position change value;

(C) generating a first current value from a function table during a first interrupt interval of said plurality of interrupt intervals using said incremental position change value; and

(D) generating a first current in said motor during said first interrupt interval responsive to said first current value.

6. The method of claim 5, further comprising the step of:

(E) repeating steps (C) and (D) during each interrupt interval of said plurality of interrupt intervals.

7. The method of claim 5 wherein said step (C) of generating a first current value includes the substeps of:

adding said incremental position change value to a function table position value to obtain a first function table address; and

accessing said function table using said first function table address to obtain said first current value.

8. The method of claim 5 wherein said step (D) of generating a first current includes the substeps of:

generating a first current command responsive to said first current value;

applying said first current command to a drive circuit to generate a first excitation signal; and

applying said first excitation signal to a first motor phase of said motor.

9. The method of claim 5 wherein said first current value corresponds to a sine law function.

10. The method of claim 5, further comprising the steps of:

(E) generating a second current value from said function table during said first interrupt interval using said incremental position change value; and

(F) generating a second current in said motor during said first interrupt interval responsive to said second current value.

11. The method of claim 10, further comprising the step of:

(G) repeating steps (C), (D), (E), and (F) during each interrupt interval of said plurality of interrupt intervals.

12. The method of claim 10 wherein said step (E) of generating a second current value includes the substeps of:

adding a phase offset value to a first function table address to obtain a second function table address; and

accessing said function table using said second function table address to obtain said second current value.

13. The method of claim 10 wherein said second current value corresponds to a cosine law function.

14. An apparatus for controlling a motor, comprising:

means for generating a velocity signal during a first update interval, said

first update interval including a plurality of interrupt intervals and said velocity signal corresponding to a desired change in rotational position of said motor per unit time;

means for dividing said change in said rotational position by a predetermined number to obtain an incremental position change value;

means for generating a first current value from a function table during a first interrupt interval of said plurality of interrupt intervals using said incremental position change value; and

means for generating a first current in said motor during said first interrupt interval responsive to said first current value.

15. The apparatus of claim 14 further comprising:

means for generating a second current value from said function table during said first interrupt interval using said incremental position change value; and

means for generating a second current in said motor during said first interrupt interval responsive to said second current value.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Technical Field

This invention relates to the control of stepper motors, and, more particularly, to a control circuit for directly generating drive current command signals for a stepper motor drive.

2. Discussion of the Related Art

Stepper motors are used in a wide variety of applications due to their low cost, ruggedness, simplicity of construction, and wide acceptance, among other factors. A common type of stepper motor includes a permanent magnet-type rotor, and a stator having a body portion with inwardly extending teeth. Coils are wound on stator poles which are connected together to form motor phases. The art is literally replete with variations of this type of stepper motor. For example, a common configuration is a two-phase, 200-step per revolution (i.e., 1.8.degree. mechanical per step) stepper motor. In a non-microstepping mode of operation, current in any given motor phase in any given time is switched either fully on or fully off. It is known, however, to employ a "microstepping" mode of operation, wherein the magnitudes of the currents in the various motor phases are adjusted in accordance with a pre-determined function. For example, in a stepper motor having two phases, a drive circuit may cause electrical current to flow through the stator windings (phases) in accordance with the sine/cosine law.

One approach taken in the art to generate current command signals applied to the drive circuit is to first generate a desired velocity signal (i.e., rotational change of rotor per unit time), and then further process the desired velocity signal to obtain the current command signals. The structure for accomplishing this under this approach may include means for generating a desired velocity signal, a pulse generator, an up down counter, ROM's containing sine and cosine data, and digital-to-analog (D/A) converters. The pulse generator, up/down counter, ROM's, and D/A's are all external to the desired velocity generating means. The velocity signal may be a digital word representing the number of pulses to output over the next pre-determined time period. The pulse generator receives the velocity signal and then uniformly outputs the desired number of pulses over the next pre-determined time interval. The pulse generator's output is coupled to the counter, which then either counts up or down depending on the state of a clockwise/counterclockwise (CW/CCW) direction line (generated by a control). The counter's output defines an address applied to the ROM's. The output of the ROM's is then applied to the D/A's, whose outputs define the current command signals for each phase.

A problem with the foregoing approach is that several hardware components must be used, which increase the cost and size of the control device (commonly referred to as an indexer). In addition, the magnitude of the current commands, the number of steps per motor revolution, as well as other parameters are difficult to vary, being commonly adjusted by way of dip switches.

Accordingly, there is a need to provide an improved stepper motor control circuit that minimizes or eliminates one or more of the problems as set forth above.

SUMMARY OF THE INVENTION

It is an object of the present invention to reduce the number of components in a stepper motor control circuit, and thus also the cost and size of the same. In addition, it is a further object of the present invention to improve the ease with which operating parameters, such as the number of steps per motor revolution, and current command settings, may be selected.

Preferably, the control method is implemented in software, and such parameters as current levels and pulses per revolution may be set using software commands, thereby eliminating the need for dip switches or the like. This approach thus saves money as well as test time, relative to conventional approaches.

To achieve these and other objects, and in accordance with the present invention, a method and apparatus for controlling a stepper motor is provided. In a first preferred embodiment, the method includes several basic steps. The first step involves generating a first velocity signal indicative of a desired change in a rotational position of the motor per unit time. Next, dividing the change in the rotational position into a first pre-determined number of increments. The third step involves generating a first current value signal using the first pre-determined number of increments and at least one function table. Next, storing the first current value signal in a first transfer table. The next step involves generating a second velocity signal for the next predetermined period of time. The next step involves dividing a change in rotational position of the motor associated with the second velocity signal into a second pre-determined number of increments. The next step involves generating a second current value signal using the second pre-determined number of increments and the function table. Finally, storing the second current value signal in a second transfer table. Importantly, the step of generating the second current value signal and storing it in the second transfer table occurs while the first current value signal is retrieved from the first transfer table and is used to generate excitation signals that are applied to the motor windings. The foregoing is implemented, in a constructed embodiment, by programming a microprocessor having direct memory access (DMA) capabilities to thereby eliminate a number of discrete hardware components. Particularly, in the constructed embodiment, the DMA controller transfers the first current value signal to generate the excitation signals while the microprocessor core calculates the second current value signal.

In a second preferred embodiment, the method for controlling a stepper motor again includes several basic steps. The first step involves generating a velocity signal during a first update interval. The first update interval may include a plurality of interrupt intervals and the velocity signal may correspond to a desired change in rotational position of the motor per unit time. In a second step, the change in the rotational position of the motor--as represented by the velocity signal--is divided by a predetermined number to obtain an incremental position change value. In a third step, the incremental position change value is used to access a function table and generate a first current value. The third step may take place during a first interrupt interval of the plurality of interrupt intervals. A fourth step involves generating a first current in the motor responsive to the first current value. The first current may be supplied to a first phase coil of the motor. Like the third step, the fourth step may take place during the first interrupt interval.

A method in accordance with the second preferred embodiment may include several additional steps. For example, the method may include the step of repeating the first current value generating step and first current generating step during each interrupt interval of the update interval. The method may also include the steps of generating a second current value and generating a second current during the first interrupt interval for use in controlling a second motor phase of the motor.

The second preferred embodiment is advantageous relative to the first preferred embodiment because it may be implemented with fewer components. In particular, the first preferred embodiment uses a pair of transfer tables and a DMA controller to access the transfer tables. Both the transfer tables and DMA controller may be eliminated in the second preferred embodiment, which relies on current command generation directly from a function table during each interrupt interval of the update interval.

Other objects, features and advantages of the present invention will become apparent to one skilled in the art from the following detailed description and accompanying drawings illustrating features of this invention by way of example, but not by way of limitation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified, schematic and block diagram view of an improved stepper motor system according to a first embodiment of the present invention.

FIG. 2 is a simplified, schematic and block diagram view showing, in greater detail, the control means shown in block diagram form in FIG. 1.

FIGS. 3 shows exemplary waveforms generated by the control circuit according to the present invention.

FIG. 4 is a simplified flow chart diagram showing the overall methodology of a first embodiment of the present invention.

FIG. 5 shows, in greater detail, the general step of determining current value signals for an inactive transfer table, shown in block diagram form in FIG. 4.

FIG. 6 shows the current value determining means 30 of FIG. 2 in greater detail.

FIG. 7 is a simplified, schematic and block diagram view of an improved stepper motor system according to a second embodiment of the present invention.

FIG. 8 is a simplified, schematic and block diagram view showing, in greater detail, the control means shown in block diagram form in FIG. 7.

FIG. 9 shows the current value determining means 90 of FIG. 8 in greater detail.

FIG. 10 is a simplified flow chart diagram showing the overall methodology of a second embodiment of the present invention.

FIG. 11 shows, in greater detail, the general step of determining current value signals, shown in block diagram form in FIG. 10.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring now to the drawings wherein like reference numerals are used to identify identical components in the various views, FIG. 1 shows a motor system 10 in accordance with a first preferred embodiment of the present invention. System 10 includes a digital motor, such as two-phase stepper motor 12, and means or circuit 14 for energizing the motor phases of motor 12 in accordance with pre-determined criteria. Although the first preferred embodiment of the present invention will be described in connection with a preferred, two-phase stepper motor embodiment, it should be appreciated that the present invention is not so limited, and may be profitably employed to electric motors having three or more phases.

Motor 12 may comprise one of a plurality of conventional stepper motor configurations known to one of ordinary skill in the art. In a constructed embodiment, a two-phase, permanent magnet rotor, 200-step per revolution configuration was used. However, it should be appreciated that the number of motor phases, the number of full steps per revolution, etc. are exemplary only, and not limiting in nature. Motor 12 is diagrammatically illustrated in FIG. 1, and includes a rotor portion 22, a stator portion 24, and windings 26.sub.A and 26.sub.B defining motor phase A and motor phase B, respectively. Energizing means 14 is configured to energize windings 26.sub.A, and 26.sub.B so that phase currents I.sub..phi.A, and I.sub..phi.B, respectively flow therethrough. It should be appreciated, due to the conventional construction of motor 12, that rotor 22 may include a plurality of radially, outwardly extending poles, while stator 24 may include a plurality of radially inwardly extending poles (which may have teeth formed on the ends thereof) upon which windings 26.sub.A, and 26.sub.B are wound. The tips of the stator poles define a central bore sized to accommodate rotor 22. In all respects, motor 12 is well-known and conventional.

Energizing means 14 includes control means 16, a plurality of digital-to-analog (D/A) converting devices 18, and a drive circuit 20. Control means 16 is configured to directly generate a pair of digital words (the current value signals 27 ) corresponding to the desired current magnitude to flow through the motor phases A and B. In a preferred embodiment, control means 16 outputs a 16-bit word comprising two 8-bit words, one 8-bit word for each phase A and B. The 16-bit digital word is updated by control means 16 at a predetermined frequency. For purposes of illustration only, in a constructed embodiment, control means 16 updates the 16-bit digital word 64 times every two milliseconds. In an alternate embodiment, control means 16 updates the 16-bit digital word 48 times every two milliseconds. It should be appreciated that the number of microsteps per revolution is selectable and may be varied and still remain within the scope of the present invention. In addition, it should be further appreciated that the selection of the number of microsteps/revolution may be influenced by the type of drive circuit 20 used in system 10, the particular configuration of motor 12, as well as the instantaneous values of various operating parameters of motor 12 (e.g., speed, acceleration, etc.). In a preferred embodiment, control means 16 comprises a microprocessor pre-programed in accordance with the present invention. In a constructed embodiment, a commercially available component Hitachi model H8/3003 having on-chip RAM, ROM, a processing core, as well as an on-chip direct memory access (DMA) controller (DMAC) has been found to operate satisfactorily in carrying out the invention. Of course, other devices known to those in the art, and equivalent thereto, may be readily substituted therefor and remain within the scope of the

present invention.

Digital-to-analog conversion (D/A) devices 18 are configured to receive, respectively, the 8-bit digital words (the current value signals 27 ) corresponding to the desired phase current levels. D/A's 18 also each receive a reference signal REFERENCE, which sets the full scale of the current command signals I.sub.CMD.phi.A and I.sub.CMD.phi.B. D/A's 18 then generate, in response thereto, a pair of "analog" current command signals I.sub.CMD.phi.A, and I.sub.CMD.phi.B, respectively. The current command signals, of course, as should be appreciated by those of ordinary skill in the art, are comprised of a series of small steps.

Drive circuit 20 is conventional, and well-known in the art, and is configured to generate excitation signals for phase A and phase B of motor 12 using the current command signals I.sub.CMD.phi.A and I.sub.CMD.phi.B, to thereby cause phase currents I.sub..phi.A, and I.sub..phi.B to flow through coils 26.sub.A and 26.sub.B, respectively. The art is literally replete with various drive configurations and topologies suitable for use with the present invention. Accordingly, this block will not be discussed in any further detail.

Before proceeding with the detailed description of the invention referenced to the drawings, a general overview of the control established by the present invention will be set forth. To control stepper motor 12's rotational position, a VELOCITY signal is calculated by control 16 every Update Interval (2 milliseconds in a constructed embodiment). The VELOCITY signal represents the desired change in rotational position over the next Update Interval. Specifically, VELOCITY corresponds to the number of "microsteps" to take during the next Update Interval. This change in position is divided by a pre-determined number corresponding to the number of table entries in a transfer table, and is preferably 64 in a constructed embodiment. The result of the division is a Velocity Increment (VEL INC). The VEL INC is used to generate position data every 31.25 microseconds (in a constructed embodiment--0.002/64) over the next Update Interval. In the constructed embodiment, each new VELOCITY signal is used to populate one of two 64 entry transfer tables by reading data from a function table (e.g., a sine wave or cosine wave) using the velocity increment to generate a table address to extract a data sample from the function table. After one of the transfer tables is populated, and at 31.25 microsecond intervals, a data word from the transfer table is written to the output port. The data at the output port pins are the current value signals. The transfer table address is incremented following each transfer in order to output the next table entry on the next transfer (31.25 microseconds later). After 64 transfers (2 milliseconds), the entire transfer table has been output, and at this point a software interrupt is generated. The interrupt code will cause a new VELOCITY signal value to be calculated, and with it, 64 new table entries are determined. There are two transfer tables. A first one of the tables is outputting data every 31.25 microseconds under control of a DMA controller, while the other is being loaded with 64 new words of data by the main control software. The roles of the two transfer tables are reversed every Update Interval by way of an interrupt. The transfer table most recently loaded will commence transferring its data to the output port following the next interrupt, while the transfer table presently accessed by the main control will be reloaded with new current values.

Referring now to FIG. 2, control means 16 is shown in greater detail. Control means 16 includes means 28 for generating a velocity signal, means 30 for determining current value signals, a function table 32, a first transfer table 34, a second transfer table 36, an output port 38, a velocity increment memory 40, a transfer table position memory 42, a table address memory 44 and a direct memory access (DMA) controller (DMAC) 45.

Generating means 28 is preferably implemented in software by executing a sequence of pre-programmed steps stored in program memory of control means 16. The output signal from generating means 28, namely velocity signal VELOCITY, may be, and is in a constructed embodiment, a digital word indicative of a desired change in a rotational position of rotor 22 per unit time. In one embodiment, the VELOCITY signal count corresponds to the desired number of microsteps for rotor 22 to take during the next Update Interval. For example, assume that a full-step for motor 12 corresponds to the well-known 1.8.degree. mechanical displacement of rotor 22. Further assume, in one configuration, that 64 microsteps per full-step is selected. Also assume that the Update Interval is 2 milliseconds. Based on the foregoing, a VELOCITY count of 640 corresponds to