Observer-based ripple detection for speed and position measurement for brushed direct current motors

A motor control system and method for controlling a brushed direct current (BDC) motor using a feedback loop based on a corrected ripple count. Motor control circuitry, for example implemented in digital logic such as a microcontroller, receives a coil current signal and a motor voltage signal. Discontinuities in the coil current signal, such as caused by commutation of the BDC motor, are counted to generate a ripple count. An observer function derives an angular frequency model estimate for the values of the coil current and motor voltage signals using a computational model for the motor. A corrected ripple count is generated based on a comparison of a commutation angle of the motor with an angular position based on the angular frequency model estimate over a time interval between discontinuity pulses. A motor drive signal is adjusted based on the corrected ripple count.

CROSS-REFERENCE TO RELATED APPLICATIONS

Not applicable.

Not applicable.

BACKGROUND

This specification relates to measurement and control circuitry for brushed direct current (BDC) electrical motors. More specifically, this specification relates to the measurement of motor speed and position of BDC motors.

Direct current (DC) motors are commonly used in a wide range of applications requiring the conversion of electrical energy into mechanical torque. As fundamental in the art, a DC motor generates mechanical torque from the rotation of an electromagnetic rotor in a magnetic field in response to current applied to the rotor coil. Commutation of the coil current reverses the direction of the current through the rotor windings as the rotor rotates through the magnetic field, thus maintaining torque in the same angular direction. In brushed DC motors, coupling of the DC current to the rotor is made by brushes that contact a commutator at the rotor shaft; gaps in the commutator prevent short circuiting as the coil current is reversed.

BDC motors have a long history and continue to have widespread use in many modern implementations due to their simplicity, ease of adjustable control, and utility in both low power and high power applications. For example, modern automobiles commonly use BDC motors for such functions as power windows, HVAC control, seat positioning, mirror adjustment, windshield wipers, electronic shifters, and the like. BDC motors are also widely used in industrial applications including pumps, fans, robots, camera and other positioners, and hospital beds, to name a few.

In many of these BDC motor applications, accurate control of the speed and position of the rotor, and thus of the motor shaft, is important. Modern BDC motor applications often include a microcontroller programmed to operate and control the motor in response to user input or program control, by providing drive signals to a DC motor driver to attain the desired speed or position. In closed-loop motor control implementations, feedback regarding a current speed or position (or both) of the motor is applied in a control loop to attain precise and stable operation of the motor. Accurate closed-loop control depends on the accuracy at rotor speed and position is measured.

One conventional approach to speed and position measurement in closed-loop BDC motor control uses a sensor, such as a tachometer, optical digital quadrature encoder, Hall-effect positional sensor, rotary sensor, or other position sensor installed on the rotor. Such encoders and sensors convert an indicator of the rotational speed, direction, and position of the rotor into digital signals communicated to the microcontroller or other motor control logic. However, such encoders and sensors add significant cost and complexity to the motor system.

BRIEF SUMMARY OF THE INVENTION

To avoid the cost and complexity of encoder-based or sensor-based measurement in BDC motor systems, motor position and speed can be measured by counting ripples in the armature coil current or back electromagnetic force (back emf) that occur from commutation. By counting the number of ripples over a time interval, one can derive the rotational speed of the BDC motor.

It is within this context that the embodiments described herein arise.

According to one aspect, a motor control method for driving a BDC motor is performed by sensing a coil current and a motor voltage at the motor. Discontinuities detected in the coil current are counted to produce a ripple count. A computational model for the motor is used with the sensed coil current and motor voltage to determine an angular frequency model estimate based upon which an angular position is generated and compared with a commutation angle of the motor. A corrected ripple count is generated responsive to the comparison, for use in adjusting a drive voltage applied to the motor.

According to another aspect, a motor control system including motor control circuitry, for example digital logic circuitry such as a microcontroller, is provided. The motor control circuitry is configured to generate a motor drive signal by detecting and counting discontinuities to produce a ripple count. An angular frequency model estimate is determined using a computational model for the motor, and in response to a coil current signal and a motor voltage from the motor. Results of a comparison of an angular position based on the angular frequency model estimate with a commutation angle of the motor to produce a corrected ripple count for use in adjusting the motor drive signal.

Technical advantages enabled by one or more of these aspects include improved accuracy in estimates of rotational speed and position of the motor enabled by correcting ripple counts for false and ghost pulses. This improved accuracy enables integration of speed and position estimation in an integrated circuit, without requiring external sensors and encoders to measure motor speed and position.

Other technical advantages enabled by the disclosed aspects will be apparent to those of ordinary skill in the art having reference to the following specification together with its drawings.

The same reference numbers or other reference designators are used in the drawings to illustrate the same or similar (in function and/or structure) features.

DETAILED DESCRIPTION OF THE INVENTION

The one or more embodiments described in this specification are implemented into motor control circuitry for brushed direct current (BDC) motors as it is contemplated that such implementation is particularly advantageous in that context. However, it is also contemplated that aspects of these embodiments may be beneficially applied in other applications. Accordingly, it is to be understood that the following description is provided by way of example only and is not intended to limit the true scope of this invention as claimed.

FIG.1Aillustrates the architecture of a motor control system for controlling the operation of BDC motor100according to one or more example embodiments. In the architecture ofFIG.1A, motor control circuitry, realized as digital logic110in this example, generates motor control signals applied to a control input of motor driver112via one or more control lines MDRV. Motor driver112drives a voltage across and current through drive lines MV+, MV−, which are coupled to opposite ends of a coil in motor100. In this example, as typical in BDC motor control systems, the rotational position and speed (i.e., the angular rotation and frequency, respectively) of motor100correspond to the coil voltage and current, with the angular frequency of motor100increasing with increases in the motor voltage (e.g., the differential voltage between lines MV+, MV−) and coil current driven by motor driver112. The system ofFIG.1Aalso includes power supply module102, which receives one or more external power supply voltages, and generates or communicates one or more power supply voltages, including power supply voltage VM to motor driver112and digital logic110in this example.

Motor driver112may be constructed as power transistors, for example arranged in an H-bridge, that apply a voltage and current derived from power supply voltage VM at lines MV+, MV− in response to a control signal from digital logic110communicated on line MDRV. Examples of motor driver102suitable for implementation according to this example embodiment include the DRV8702-Q1 and DRV8703-Q1 H-bridge gate drivers available from Texas Instruments Incorporated.

In this example, digital logic110applies the control signal to motor driver112on line MDRV based in part on feedback from motor100. In this example embodiment, current sensor115is deployed in or near one (or both) of drive lines MV+, MV− to sense the coil current conducted by the coil of motor100. Current sensor115may be realized as a small resistor or field-effect transistor in series with motor100and one or both of drive lines MV+, MV−, or alternatively may be a current sensing coil or Hall effect sensor placed near a conductor in the motor drive loop. Current sense circuitry116has an input coupled to receive a voltage or current level from sensor115, and has an output coupled to digital logic110via line I_COIL, on which current sense circuitry116provides a feedback signal corresponding to the coil current of motor100. Current sense circuitry116may be implemented using analog circuitry (such as an amplifier), digital circuitry, a combination of analog and digital circuitry and/or any circuitry for amplifying, conditioning and/or converting the sensed signal into a signal representative of the coil current. In addition, motor drive lines MV+, MV− from the output of motor driver112are coupled to digital logic110to provide a feedback motor voltage signal MV.

The system ofFIG.1Afurther includes user interface114coupled to digital logic110, by way of which user inputs are communicated to digital logic110. The desired rotational speed or position of motor100may be controlled by digital logic110in response to user inputs received via interface114. For example, a user input received at user interface114and communicated to one of I/O ports236a,236bof digital logic110may indicate a desired speed or position, in response to which digital logic110generates control signal MDRV to motor driver112corresponding to that desired speed or position (e.g., a specific angular position or velocity, or a profile of position or velocity over a time interval, etc.). In another example, digital logic110may itself be programmed with the desired motor speed or position, such that an actuation signal from a user, received via interface114, initiates execution of an algorithm by digital logic110to provide control signals corresponding to the desired position, speed, and/or speed or position profile. In other examples, digital logic110may operate to autonomously control the position and speed of motor100, without requiring user input as an initiating or control signal. In any case, digital logic110controls the position and speed of motor100through the drive signal on line MDRV applied to gate driver112, based in part on the feedback coil current it receives on line I_COIL from current sense circuitry116and feedback motor voltage MV across lines MV+, MV−.

Digital logic110in this example embodiment may be realized by fixed function digital logic circuitry, field programmable logic arrays (FPLAs), an application specific integrated circuit, programmable logic circuitry (such as in the form of a microprocessor or microcomputer), or as some combination of these implementation types. Example of a type of microcontroller suitable for use as digital logic110in the implementation ofFIG.1Ainclude the MSP430G2x53 and MSP430G2x13 families of mixed signal microcontrollers available from Texas Instruments Incorporated.

FIG.1Billustrates a control loop as implemented by the motor control system ofFIG.1Aaccording to example embodiments. While the particular example of the control loop ofFIG.1Bcontrols the speed (e.g., angular velocity) of motor100in response to feedback regarding the motor speed, it is to be understood that the control loop ofFIG.1Bmay alternatively control the position (e.g., angular position) of motor100in response to feedback regarding motor position in a similar manner.

In this example, speed input SPD_IN corresponding to a desired speed of motor100is received as one input to difference function150. Input SPD_IN may be received from a user input to the motor control system, or alternatively may be a stored or calculated motor speed such as may be used in automated or autonomous motor control (e.g., in response to an actuator, such as for an automobile power window). Difference function150has a negative input receiving a current motor speed estimate SPD_EST as a feedback signal and operates to produce difference signal ΔSPD at its output. Difference signal ΔSPD represents a difference between the desired motor speed at input SPD_IN and the current speed estimate for motor100conveyed by signal SPD_EST.

Speed controller160receives difference signal ΔSPD and applies a control function to that difference signal ΔSPD to produce a motor control signal MCS. The control function applied by speed controller160includes the desired gain and filtering according to a desired response and stability characteristic. For example, speed controller160may be realized as a PID (proportional-integral-differential) controller with parameters selected for the desired stability and response. Speed controller160may be implemented using digital circuitry, analog circuitry, a processor, a microcontroller, memory, and/or software. Motor control signal MCS is applied to signal converter170for conversion of motor control signal MCS to a form suitable for communication to motor driver112as motor drive signal MDRV. For example, signal converter170may include a pulse-width modulator. Signal converter170may be implemented using digital circuitry, analog circuitry, a processor, a microcontroller, memory, and/or software. As described above relative toFIG.1A, motor driver112operates to drive motor100with a voltage and coil current in response to motor drive signal MDRV.

In the control loop ofFIG.1B, feedback FB is measured from motor100, for example from one or both of the motor voltage and coil current at motor100as driven by motor driver112. Motor speed estimator function180determines the current estimated motor speed SPD_EST from this feedback FB according to example embodiments as will be described below. Estimator function180may be implemented using digital circuitry, analog circuitry, a processor, a microcontroller, memory, and/or software. As noted above, estimated motor speed SP_EST serves as the feedback signal in this control loop ofFIG.1Bas implemented in the motor control system ofFIG.1A. In addition, as illustrated inFIG.1B, the control loop functions of difference function150, speed controller160, signal converter170, and motor speed (or position) estimator180may be individually implemented or collectively included as part of digital logic110according to these example embodiments.

FIG.2illustrates the architecture of digital logic circuitry110in the motor control system ofFIG.1A, as realized by microcontroller200according to an example embodiment. Microcontroller200in this example embodiment includes a central processing unit (CPU)250, for example arranged as a reduced instruction set computer (RISC) architecture operating on data in a register file. In this example architecture of microcontroller200, CPU250is coupled to various peripheral functional circuitry modules via address bus ADDR_BUS and data bus DATA_BUS. Clock system222in microcontroller200is shown as separately coupled to CPU250and is configured to generate one or more clock signals for use by CPU250and other functions internal and external to microcontroller200, including one or more of the functional modules residing on buses ADDR_BUS, DATA_BUS. In the example shown inFIG.1A, these functional modules include memory resources such as random access memory (RAM)224and read-only memory (ROM)226, one or more timers230, an analog-to-digital converter (ADC) module228, a universal asynchronous receiver-transmitter (UART)234, and one or more input/output (I/O) ports236a,236b. Other support modules such as power management, scan test functionality, and the like may also be included. Other functional circuitry modules may alternatively or additionally be implemented in microcontroller200as desired for the particular application. Microcontroller200may alternatively be realized with alternative bus architectures, with other alternative or additional functional circuitry modules, and according to other architectural variations from that shown inFIG.2.

As shown inFIG.2, I/O port236bis one of the functional modules residing on buses ADD_BUS, DATA_BUS in microcontroller200. In this implementation, I/O port236bhas an output coupled to control line MDRV and operates to transmit motor drive signals to motor driver112in response to data from CPU250. For example, microcontroller200may include pulse-width modulation (PWM) circuitry for producing PWM drive signals, such as produced from a control loop executed by CPU250, for communication to motor driver112via I/O port236b. Comparator240, which also resides on buses ADDR_BUS, DATA_BUS, may be configured to perform signal comparison, such as an analog signal comparison or performing of a slope analog-to-digital (A/D) conversion. In the example embodiment ofFIG.2, comparator240of microcontroller200is coupled to receive a coil current signal I_COIL from current sense circuitry116for such comparison. Also in this example embodiment, ADC module228, which also resides on buses ADDR_BUS, DATA_BUS, receives motor voltage signal MV corresponding to a differential voltage across motor drive lines MV+, MV− at motor100.

In implementing the control loop ofFIG.1Baccording to this example embodiment, microcontroller200is programmed or otherwise configured to implement motor speed estimator function180to obtain a measurement of the rotational speed or position, or both, of the rotor of motor100for use as feedback in its control of motor100. More specifically, microcontroller200obtains measurements of the speed or position of motor100based on core current measurements (obtained by current sense circuitry116from sensor115and communicated on line I_COIL to comparator240) and motor voltage MV (from lines MV+, MV− at motor100), and applies those speed or position measurements as feedback in a control loop executed by CPU120to generate control signals on line MDRV for application to motor driver112.

In this example, CPU250in microcontroller200is programmed or otherwise configured to determine the rotational speed or position of motor100from coil current measurements obtained from current sense circuitry116according to a “ripple counting” technique, in which discontinuities in coil current from commutation are detected and counted over time.FIG.3Aillustrates these coil current discontinuities by way of an example waveform of armature coil current Icoilover time, for example as sensed by current sense circuitry116. Discontinuities360in the waveform ofFIG.3Aoccur when the brushes of BDC motor100break contact with one commutator and make contact with the next commutator as the rotor spins. The elapsed time between adjacent discontinuities360(e.g., intervals T1, T2) is a function of the angular frequency (rotational velocity) of the motor, such that the duration of the intervals between adjacent discontinuities360will decrease with increases in angular frequency of the rotor. According to the ripple counting technique, the angular frequency of motor100can be computed from the measured time between adjacent discontinuities360and knowledge of the number of poles of the motor. For example, angular frequency ω, in units of rad/sec, of motor100can be determined from the following equation:

ω=2⁢π∑i=1N⁢Δ⁢Ti(1)
where N is the number of poles of the motor and ΔTiis the time interval between the ithdiscontinuity in coil current between that for a given pole and that of the preceding pole. For example, as described in commonly assigned U.S. Pat. No. 9,628,006, incorporated herein by this reference, ripple counting may be realized by circuit functions including a comparator to compare a derivative of sensed coil current with a threshold level. Coil current discontinuities360occurring from commutation exhibit high instantaneous rates of change as shown inFIG.3A, exceeding the threshold level (properly set) of the comparator. The comparator output may be used to trigger a one-shot multivibrator to issue a signal pulse in response to each instance of the coil current derivative exceeding the threshold.FIG.3Billustrates a sequence of voltage pulses380as may be issued by such a one-shot multivibrator in response to coil current discontinuities360ofFIG.3A. Measurement of the time interval durations between voltage pulses380, or conversely counting the number of pulses380over a given interval of time, can determine the period of rotation of motor100and thus the angular frequency ω of motor100.

Errors in this ripple counting approach can appear either as missing pulses, namely the failure to detect a discontinuity in coil current (i.e., a missing or “ghost” pulse), or as false pulses erroneously generated in the absence of coil current discontinuities. Several sources of these ghost and false pulse errors in the ripple counting of BDC motor coil current have been observed in connection with these example embodiments. Transients in the coil current, such as current spikes occurring at start-up of the motor and transients resulting from load variations, braking, and reversal of motor direction, tend to distort the ripple envelope and cause ripple count errors. Another source of error results from superposition of the rotor magnetic flux that causes bending of the stator magnetic field, which can result in commutation having an undefined phase relationship and exhibiting multiple ripples per commutation. It has also been observed that the ripple peak current varies with the average coil current, such that peak detection can become difficult at lower average current levels (e.g., at low speed motor operation). Furthermore, the physical construction of the brushes in BDC motors lead to asymmetry in the ripple profile between the forward and reverse direction of rotation as the brushes shift. This asymmetry may be exacerbated with motor age, and can cause variations in the ripple envelope, and thus difficulty in ripple detection and counting.

According to example embodiments, digital logic110in the motor control system ofFIG.1Ais configured to estimate the rotational speed or position of motor100based on a ripple counting approach in which ghost pulse and false pulse events may be detected and the ripple count corrected accordingly.FIG.4illustrates the generalized operation of digital logic110in estimating the rotational velocity or position, or both, of motor100according to one or more example embodiments. In this example described below, digital logic110is realized as microcontroller200, in which case these operations will be carried out by and under the direction and control of CPU250in combination with other functions in microcontroller200. For example, CPU250may carry out and control these operations by executing program instructions stored in machine-readable form in the memory resources of the system, such as ROM226and in some implementations RAM224. Alternatively or in addition, some or all of the operations described herein may be executed by special-purpose or dedicated logic circuitry realizing part or all of digital logic110in the motor control system.

In the functional architecture ofFIG.4, ripple counter function400receives an input I_COIL corresponding to the coil current of motor100, for example as communicated by current sense circuity116to microcontroller200via line I_COIL. From this coil current, ripple counter function400operates to detect and count discontinuities in the coil current occurring from the commutation of motor100, as the brushes of motor100break contact with one commutator and make contact with the next commutator during rotation, and to generate an output R_CT corresponding to a count of those discontinuities. Ripple counter function400may perform these operations as described in the above-incorporated U.S. Pat. No. 9,628,006, for example by comparator240comparing a derivative of sensed coil current with a threshold level and triggering a one-shot multivibrator to issue a signal pulse in response to each instance of the coil current derivative exceeding the threshold; pulses from the multivibrator can then be applied to a counter which outputs the ripple count R_CT. Other approaches for detecting and counting discontinuities in the coil current, or for determining the time duration between discontinuities in the coil current, may alternatively be implemented as ripple counter function400. In any event, ripple count R_CT represents a measurement of current discontinuities occurring over time.

According to the example embodiment ofFIG.4, the coil current input I_COIL is also input to observer function450. As in the case of ripple counter function400, observer function450may be performed by CPU250executing program instructions stored in ROM224or other memory, perhaps with other functions of microcontroller200. In addition to coil current input I_COIL, observer function500also receives an input MV corresponding to the voltage across motor100. For example, input MV may correspond to the differential across motor drive lines MV+, MV− at the output of motor driver112. As will be described in further detail below, observer function450applies the inputs of coil current I_COIL and motor voltage MV to a computational model of motor100to derive an angular frequency model estimate. In this example ofFIG.4, this angular frequency model estimate corresponds to an angular frequency or angular velocity model estimate ωest. Alternatively, the angular frequency model estimate derived by observer function450may correspond to an angular or rotational position estimate. In any case, observer function communicates the angular frequency model estimate to error correction function460in the architecture ofFIG.4according to this embodiment.

In this example embodiment, error correction function460operates to derive an expected ripple count from the angular frequency model estimate West produced by observer function450for use in correcting the ripple count R_CT as detected by ripple counter function400and to produce a corrected ripple count CR_CT accordingly. Corrected ripple count CR_CT is communicated to speed/position estimation function480implemented by microcontroller200, for determination of a rotational velocity or position, or both, as used in controlling motor100(e.g., for use in updating drive signal MDRV).

As mentioned above, observer function450applies current measurements of coil current and motor voltage, as applied by inputs I_COIL and MV, respectively, to a model of motor100to obtain an angular frequency model estimate West. According to this example embodiment, the model used by observer function450is a system of equations including both an electrical equation and a mechanical equation for BDC motor100. Observer function450arrives at angular frequency model estimate ωestby solving that system of equations for angular velocity from the current values of coil current input I_COIL and motor voltage input MV. In one implementation in the continuous-time domain, the electrical equation for BDC motor100used by observer function450is:

v=La⁢d⁢id⁢t+Ia⁢Ra+kv⁢ω(2)
where v is the instantaneous motor voltage, Lais the inductance (in units of Henries) of the armature coil of motor100, I is the instantaneous coil current (in units of Amperes), Iais the time-average (e.g., RMS) of coil current, Rais the series resistance (in units of Ohms) of the armature coil of motor100, and kvis the motor back electromotive force (back emf) constant (in units of

V·srad)
for motor100such that kvω represents the back emf of motor100at angular frequency ω. For purposes of this description, the terms angular velocity and angular frequency will be considered as synonymous but may be expressed in terms of different units of measure. In this implementation, the mechanical equation for BDC motor100used by observer function450is:

kt⁢Ia=J⁢d⁢ωd⁢t+Bf⁢ω(3)
where ktis the motor torque constant of motor100(in units of

N·mA),
such that the term ktIarepresents the torque of motor100. Motor torque constant ktis numerically equal to the back emf motor constant kvin the electrical model of motor100, expressed in different units. J is an inertia constant (in units of kg·m2) for motor100, and Bfis a rotor friction constant (in units of kg·m2/sec) for motor100.

As evident from equations (2) and (3), the electrical and mechanical models of motor100include certain constants, namely motor torque constant kt, motor back emf constant kv, rotor friction constant Bf, inertia constant J, armature coil inductance La, and armature coil resistance Ra. The specific values for these constants used by observer function450for a particular instance of motor100may be derived in various ways. In one implementation, observer function450may apply nominal values for these constants, such as may be derived from product specifications and the like. Alternatively, the values of these constants for particular instances of motor100may be characterized through test and measurement at manufacture or at deployment, and those characterized values stored in memory of microcontroller200for use by observer function450. Alternatively, or in addition, one or more values of the model constants may be adaptively derived during the actual operation of motor100, for example by iteratively adjusting initial values (e.g., specification values, or characterized values) during an initial time interval of each operation of motor100.

In a digital logic realization of observer function450, such as implemented by CPU250of microcontroller200according to this example embodiment, the model system of the electrical and mechanical equations may be efficiently realized in a recursive implementation.FIG.5illustrates such a recursive implementation of the system of equations (2) and (3) in the continuous-time domain. In the recursive implementation ofFIG.5, it is useful to consider at least some of the signals and operators in the form of vectors and matrix operators, with the scalar inputs of motor voltage MV and current coil I_COIL.

In particular, the implementation ofFIG.5is arranged to derive a model estimate output vector {circumflex over (x)} representing angular frequency model estimate ωestand average coil current Iaas follows:

xˆ=[ωe⁢s⁢tIa](3⁢a)
To arrive at this model estimate output vector {circumflex over (x)}, the realization ofFIG.5includes B operator502which multiplies its input u, which in this case is a scalar corresponding to the input of motor voltage MV as sensed and digitized by ADC228of microcontroller200, by a matrix B:

B=[01/La](3⁢b)
where Larepresents the coil inductance of motor100. The output of operator502is applied as one input to adder504. As will be described below, adder504will generate an estimate vector that is the time derivative of model estimate output vector {circumflex over (x)}. That time derivative vector is applied to integrator506, which integrates the time derivative to produce model estimate output vector {circumflex over (x)}. Model estimate output vector {circumflex over (x)} is applied as feedback to A operator510, which multiplies vector {circumflex over (x)} by:

A=[-Bf/Jkt/J-kv/La-Ra/La](3⁢c)
The output of operator510is another input to adder504. Model estimate output vector {circumflex over (x)} is also applied to C operator520, which multiplies vector {circumflex over (x)} by:
C=[0 1]  (3d)
to retrieve the current estimate of coil current Iafrom vector {circumflex over (x)}. The resulting value ŷ=Iais applied (as a negative term) to one input of adder522, which receives the current measured coil current value I_COIL (i.e., y=Ia) at its other input. The output of adder522, expressed as error signal y_error inFIG.5, thus represents a time differential ΔIabetween the current estimate and current measured coil current values, and is applied to an input of L operator524. L operator524multiplies error signal y_error by a gain matrix L of convergence factors to be applied the observer estimates and forwards the result to adder504as another input. Model estimate output vector {circumflex over (x)}, or at least the angular frequency model estimate ωestcomponent of that vector, is forwarded to error correction function460implemented by microcontroller200as shown in the functional architecture shown inFIG.4.

As noted above, the implementation ofFIG.5derives model estimate output vector {circumflex over (x)} by solving the system of the electrical and mechanical equations for motor100, for the current measured values of motor voltage and coil current. The output of adder504is a time derivative {circumflex over ({dot over (x)})} of that solution from the sum of its addends. Based on the above description and matrix equations (3a) through (3d), the time derivative {circumflex over ({dot over (x)})} output by adder504can be expressed as:

xˆ.=dd⁢t[ωI]=[-BfJktJ-ktLa-RaLa][ωIa]+[01/La]⁢M⁢V(4)
Integration of this vector

dd⁢t[ωI]
over time by integration operator506will thus yield the model estimate output vector {circumflex over (x)}:

xˆ=[ωe⁢s⁢tIa](3⁢a)
As described above, the angular frequency model estimate ωestcomponent from model estimate output vector {circumflex over (x)} is forwarded to error correction function460, and the coil current component Iais removed from vector {circumflex over (x)} by C operator520and applied to the negative input of adder522for development of the error signal y_error.

As noted above, the implementation ofFIG.5represents the operation of observer function450realized in the continuous-time domain. Observer function450may alternatively be realized in the discrete-time domain, for example when implemented by digital logic such as in microcontroller200. As described above with respect to FIG.2, microcontroller200includes comparator module240and ADC module228, which digitizes the feedback coil current signal I_COIL and feedback motor voltage signal MV into discrete time sequences. Additional processing to incorporate discrete-time related compensation blocks (e.g., backward Euler or Bilinear transforms) in the transfer function of observer function will be required in such discrete-time realizations. With the inclusion of the appropriate transforms, this realization of observer function450in the discrete-time domain can solve a system of equations including an electrical model and a mechanical model for motor100similarly as in the continuous-time example described above relative toFIG.5. According to this example embodiment, observer function450may be realized as either a continuous-time observer or a discrete-time observer, depending on the particular implementation.

Referring now toFIG.6, error correction process600as performed by error correction function460ofFIG.4according to an example embodiment will now be described. According to this example embodiment, ripple counter400issues a pulse upon detection of a discontinuity in coil current I_COIL, and advances a cumulative ripple count, and communicates advanced cumulative ripple count value as signal R_CT to error correction function460. For example, as illustrated inFIG.3B, a timestamp indicating a time tpat which ripple counter400detected the discontinuity and issued a discontinuity pulse380may be forwarded to error correction function460along with the advanced ripple count R_CT. Alternatively, error correction function460may apply the timestamp for time tpon its receipt of the updated ripple count R_CT from ripple counter400.

Error correction function460in the meanwhile will have received one or more angular frequency model estimates ωestfrom observer function450since a time tcof the last previous pulse380from ripple counter400(an example of which is also shown inFIG.3B). This time tcmay be stored in RAM224or another memory resource accessible to error correction function460as executed by CPU250. In process602, error correction function460performs an integration of angular frequency model estimate ωestas estimated by observer function450over the time interval between time tcof the previous pulse and time tpof the pulse from the newly detected discontinuity. The result of integration process602will be an estimate of the angular rotation of the rotor of motor100over the time interval tp-tcbetween the previous and current pulses.

In process604, error correction function460compares the estimated angular rotation of motor100from integration process602with the commutation angle indicated by the advanced ripple count detected by ripple counter400. Because the number of poles of motor100is known and fixed, the occurrence of a commutation as reflected in a coil current discontinuity theoretically indicates rotation of the rotor by a fixed angle (e.g., for a four-pole motor, the angle between commutations is 90°; for an eight-pole motor, the commutation angle is 45°, and so on). In general, comparison process604performed by error correction function460compares this commutation angle with the estimated angular rotation from process602to determine whether the rotation detected by ripple counter400is expected, based on the electrical and mechanical models applied by observer function450for the applied coil current and motor voltage. For example, this comparison may be performed by observing the time interval between time tcof the previous pulse and time tpof the newly detected pulse and determining whether the commutation angle movement of motor100matches the estimated angular rotation from integration process602over that same time interval. This comparison of the commutation angle may be made relative to the estimated angular rotation plus or minus a selected margin, to allow for the effects of acceleration or deceleration of motor100, and for variations or imprecision in the motor as compared to the parameters applied to observer function450. This margin may be programmable to allow the user to tighten or relax the classification operation as desired in a specific implementation.

Based on the result of comparison process604, classification process606may be performed by error correction function460to classify the newly detected discontinuity pulse into one of three categories: a correct pulse; a false pulse; or a ghost pulse. According to this approach, classification process606classifies the newly detected pulse as a correct pulse if the estimated angular rotation matches the commutation angle of the motor (within the selected margin), classifies the newly detected pulse as a false pulse if the estimated angular rotation is less than the commutation angle, and classifies the newly detected pulse as a ghost pulse if the estimated angular rotation is greater than the commutation angle, such that an intervening pulse in addition to the newly detected pulse would be expected within the time interval between time tcof the previous pulse and time tpof the newly detected pulse. Based on the result of classification process606, error correction function460generates a corrected ripple count value and communicates this corrected ripple count via signal CR_CT to speed/position estimation function480in this example embodiment.

For the case in which classification process606classifies the newly detected pulse as a correct pulse, error correction function460executes process608ato apply no correction to ripple count R_CT in generating corrected ripple count signal CR_CT. Also in process608afor the case of a correct pulse, previous pulse time tcis updated with the time tpof the newly detected pulse, in preparation for the next detected discontinuity pulse in a next instance of process602.

For the case in which classification process606classifies the newly detected pulse as a false pulse, error correction function460executes process608bin the example embodiment ofFIG.6. Because the newly detected false pulse is counted in the ripple count R_CT as communicated to error correction function460, this false pulse error is corrected in process608bby subtracting one from the ripple count R_CT in generating the corrected ripple count CR_CT to speed/position estimation function480. Because the newly detected pulse was a false pulse, the previous pulse time tcis not updated in process608bto the time tpof the newly detected pulse but remains at its previous value.

FIG.7Aillustrates an example of the operation of error correction function460during the operation of motor100in the case in which false pulses are intermittently detected by ripple counter400. For the sake of simplicity, the angular velocity of motor100in this example is substantially constant, and as such the commutation pulses are expected to be periodic with a substantially constant period Tnom. Plot702inFIG.7Acorresponds to an uncorrected cumulative ripple count (e.g., ripple count R_CT) as generated by ripple counter400, while plot712corresponds to a corrected cumulative ripple count (e.g., corrected ripple count CR_CT). At time t2inFIG.7A, the uncorrected ripple count of plot702advances by one. Accordingly, time tp=t2and the previous pulse time tc=t1. In this example, error correction function460classifies the pulse at time t2as a correct pulse in classification process606, and makes no correction to the ripple count R_CT in generating corrected ripple count CR_CT, as shown by the coincidence of plots702and712in the example ofFIG.7A. Previous pulse time tcis updated to the time t2of this correct pulse.

At time t3, ripple counter400has detected another discontinuity pulse, and advanced its ripple count R_CT by one as shown by plot702. However, this pulse at time t3is classified as a false pulse (FP) by error correction function460in classification process606. In process608bin this example, error correction function460corrects the ripple count R_CT by subtracting one in its generation of corrected ripple count CR_CT. This correction is shown inFIG.7Aby the dashed line of plot712remaining at its previous value at time t3. Previous pulse time tcis not updated to time t3in this instance of process608b, because the detected pulse at time t3was determined to be a false pulse, so time tcremains at its current value (i.e., tc=t2). In this example ofFIG.7A, another pulse is detected by ripple counter400and ripple count R_CT is advanced at time t4. This pulse at time t4is classified by error correction function460as a correct pulse, and in this instance of process608a, corrected ripple count CR_CT is advanced by one and previous pulse time tcis updated to time t4. Operation continues in this manner from pulse to pulse, with another correct pulse detected at time t5. Another false pulse FP is detected at time t6, in response to which the corrected ripple count CR_CT is not advanced, as shown by plot712at time t6.

Referring back toFIG.6, for the case in which classification process606classifies the newly detected pulse as a ghost pulse, error correction function460executes process608c. In this case, in addition to the newly detected commutation pulse at time tp, another pulse should have been previously detected since the time tcof the last detected pulse, such that the ripple count R_CT is lower (by one) than it ought to be, according to the estimated angular rotation from process602. In process608c, this ghost pulse error is corrected by adding an additional pulse (+1) to ripple count R_CT in generating corrected ripple count CR_CT communicated to speed/position estimation function480. Because the newly detected pulse is a correct pulse, the previous pulse time tcis updated in process608cto the time tpof the newly detected pulse.

FIG.7Billustrates an example of the operation of error correction function460during the operation of motor100in the case in which ghost pulses are detected by ripple counter400. In this example, the angular velocity of motor100is again substantially constant, and as such commutation pulses are expected to be periodic at a substantially constant period Tnom. Plot722inFIG.7Bcorresponds to an uncorrected cumulative ripple count R_CT as generated by ripple counter400, while plot732corresponds to corrected cumulative ripple count CR_CT as generated by error correction function460. In this example, uncorrected cumulative ripple count plot722and corrected cumulative ripple count plot732are initially at the same value at time t1. At time t2inFIG.7B, the uncorrected ripple count of plot722advances by one to indicate a commutation pulse. Error correction function460classifies the pulse at time t2as a correct pulse in classification process606, and thus makes no correction to the ripple count R_CT as it advances corrected ripple count CR_CT to count this correct pulse. Previous pulse time tcis updated to time t2of this correct pulse. Similarly, a commutation pulse occurs at time t3as indicated by the advancing of uncorrected ripple count of plot722. This pulse is also classified as a correct pulse by error correction function460, and the corrected ripple count is advanced with no correction applied as shown by plot732at time t3. Previous pulse time tcis updated to time t3of this correct pulse. Because no correction is applied by error correction function460at either of times t2and t3, plots722and732remain at the same value through time t3in the example ofFIG.7B.

In this example, ripple counter400detects the next discontinuity pulse and advances its ripple count R_CT at time ts, as shown by plot722. In this case, however, error correction function460determines, in comparison process604and classification process606, that another pulse (ghost pulse GP) should have occurred but was not detected prior to the pulse corresponding to time t5because the estimated angular rotation from observer function450is greater than the commutation angle of a single pulse at time tp=t5following time tc=t3. Accordingly, the uncorrected ripple count R_CT at time t5has undercounted commutation pulses by one. In process608c, therefore, error correction function460adds a correction of +1 to the uncorrected ripple count R_CT to account for the ghost pulse GP that should have been detected at about time t4but was not. This correction is shown inFIG.7Bby the dashed line of plot732advancing by two at time t5(+1 for the newly detected pulse at time t5, and a correction of +1). Previous pulse time tcis updated to time t5of the newly detected pulse.

This operation continues, in this example ofFIG.7B, with error correction function460classifying correct pulses at times t6and t9and detecting ghost pulses GP that should have occurred between time t6and time t8and between time t9and time t11. The corrected ripple count CR_CT includes corrections of an additional +1 in the ripple count at times t8and t11, as shown by plot732ofFIG.7B.

In process610, error correction function460communicates corrected ripple count signal CR_CT to speed/position estimation function480. The corrected ripple count signal CR_CT may be communicated to and processed by speed/position estimation function480after each instance of a detected coil current discontinuity, or at such time or periodicity as appropriate for the motor control system. In this example embodiment, speed/position estimation function480in microcontroller200uses this corrected ripple count signal CR_CT to estimate the current rotational speed, rotational position, or both of motor100for use as feedback in controlling the drive of motor100.

The generation of a corrected ripple count as described may be implemented into a motor control system such as illustrated inFIG.1Aand operating according to a control loop such as illustrated inFIG.1B, according to example embodiments.FIG.8illustrates a flow chart of an example of a method incorporating the generation of a corrected ripple count into such a motor control system and control loop, according to an example embodiment as will now be described.

In process802ofFIG.8, motor driver112drives motor100according to control signals produced by microcontroller200in response to an input signal corresponding to a desired speed or position, in combination with feedback corresponding to the current speed or position of motor100as described above. While motor100is being driven in process802, current values of coil current and motor voltage at motor100are sensed and communicated to digital logic110, for example via coil current signal I_COIL from current sense circuitry116and motor voltage signal MV acquired from lines MV+, MV−. Process600, for example as described above relative toFIG.4throughFIG.6, is then performed by digital logic110to detect and count coil current discontinuities and correct that ripple count based on observer function450applying a model for motor100to the sensed coil current and motor voltage. The corrected ripple count (e.g., signal CR_CT from error correction function460inFIG.4) is applied to speed/position estimation function480, which computes an angular frequency (or rotational position, or both) from that corrected ripple count in process806. That computed angular frequency (or position) is applied as feedback in the motor drive control loop such as described above relative toFIG.1Bin process808. In process810, that feedback is combined with the motor speed (or position) input to adjust the drive signals currently applied to motor100in process802, and the motor control process continues.

According to these example embodiments, improvements in the measurement of the speed and position of a rotating BDC motor are enabled, without requiring the costly and bulky implementation of encoder-based speed sensors. Experimentation has shown that the combination of ripple counting with the estimation of angular rotation by a model-based observer function has exhibited improved accuracy over either approach used individually. For example, in one experiment, the error in the uncorrected ripple count over 5000 commutations (as counted by an encoder) was observed to be 1.8%, while the error in the corrected ripple count generated according to an example embodiment was observed to be approximately 0.04% over 5000 commutations. This improvement is made available, by example embodiments, in a form that can be readily implemented into an integrated circuit solution.

Unless otherwise stated, “about,” “approximately,” or “substantially” preceding a value means +/−10 percent of the stated value. Modifications are possible in the described examples, and other examples are possible within the scope of the claims.

A circuit or device that is described herein as including certain components may instead be adapted to be coupled to those components to form the described circuitry or device. For example, a structure described as including one or more semiconductor elements (such as transistors), one or more passive elements (such as resistors, capacitors, and/or inductors), and/or one or more sources (such as voltage and/or current sources) may instead include only the semiconductor elements within a single physical device (e.g., a semiconductor die and/or integrated circuit (IC) package) and may be adapted to be coupled to at least some of the passive elements and/or the sources to form the described structure either at a time of manufacture or after a time of manufacture, for example, by an end-user and/or a third-party. While, in some example embodiments, certain elements are included in an integrated circuit and other elements are external to the integrated circuit, in other example embodiments, additional or fewer features may be incorporated into the integrated circuit. In addition, some or all of the features illustrated as being external to the integrated circuit may be included in the integrated circuit and/or some features illustrated as being internal to the integrated circuit may be incorporated outside of the integrated. As used herein, the term “integrated circuit” means one or more circuits that are: (i) incorporated in/over a semiconductor substrate; (ii) incorporated in a single semiconductor package; (iii) incorporated into the same module; and/or (iv) incorporated in/on the same printed circuit board.

Uses of the phrase “ground” in the foregoing description include a chassis ground, an Earth ground, a floating ground, a virtual ground, a digital ground, a common ground, and/or any other form of ground connection applicable to, or suitable for, the teachings of this description.

While one or more embodiments have been described in this specification, it is of course contemplated that modifications of, and alternatives to, these embodiments, such modifications and alternatives capable of obtaining one or more of the technical effects of these embodiments, will be apparent to those of ordinary skill in the art having reference to this specification and its drawings. It is contemplated that such modifications and alternatives are within the scope of the claims presented herein.