Compensation for Historical Error in Dynamic Observer-Based Ripple Detection in Brushed Direct Current Motors
A motor control system and method for a brushed direct current (BDC) motor using a compensated and 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, are counted to generate a ripple count. An observer function derives an angular frequency model estimate using a computational model for the motor applying motor parameters estimated in an initial estimation interval following startup of 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. Compensation for cumulative error over the initial estimation interval is derived from a behavioral motor model applying the estimated motor parameters. A motor drive signal is adjusted based on the compensated corrected ripple count.
This application is a continuation-in-part of copending U.S. application Ser. No. 17/592,921, filed Feb. 4, 2022, which is incorporated herein by this reference.
STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENTNot applicable.
BACKGROUNDThis 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 INVENTIONTo 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. In an initial time interval following startup of the motor, an estimate of motor parameters is generated responsive to a sensed motor voltage and a sensed angular velocity of the motor. Discontinuities detected in a sensed coil current are counted to produce a ripple count over this initial time interval A computational model applying the estimated motor parameters is used with the sensed coil current and motor voltage to determine an angular frequency model estimate from which an estimated rotation is derived 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. The corrected ripple count is compensated for cumulative error based on an historical angular frequency model estimate generated from a behavioral motor model incorporating the estimated motor parameters.
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 estimate of motor parameters is generated responsive to a sensed motor voltage and a sensed angular velocity of the motor in an initial time interval following startup of the motor, and 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. The corrected ripple count is compensated for cumulative error based on an historical angular frequency model estimate generated from a behavioral motor model incorporating the estimated motor parameters.
Technical advantages enabled by one or more of these aspects include improved accuracy in measuring the rotational position of the motor by compensating for error in the ripple count arising during an initial time period in which motor parameters are being estimated from operation of the motor. This improved accuracy enables integration of 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 INVENTIONThe 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.
Motor driver 112 may 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 logic 110 communicated on line MDRV. Examples of motor driver 102 suitable 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 logic 110 applies the control signal to motor driver 112 on line MDRV based in part on feedback from motor 100. In this example embodiment, current sensor 115 is deployed in or near one (or both) of drive lines MV+, MV− to sense the coil current conducted by the coil of motor 100. Current sensor 115 may be realized as a small resistor or field-effect transistor in series with motor 100 and 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 circuitry 116 has an input coupled to receive a voltage or current level from sensor 115, and has an output coupled to digital logic 110 via line I_COIL, on which current sense circuitry 116 provides a feedback signal corresponding to the coil current of motor 100. Current sense circuitry 116 may 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 driver 112 are coupled to digital logic 110 to provide a feedback motor voltage signal MV.
The system of
Digital logic 110 in this example embodiment may be realized by fixed function digital logic circuitry, field programmable logic arrays (FPLAs), 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. Examples of a type of microcontroller suitable for use as digital logic 110 in the implementation of
In this example, speed input SPD_IN corresponding to a desired speed of motor 100 is received as one input to difference function 150. 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 function 150 has 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 motor 100 conveyed by signal SPD_EST.
Speed controller 160 receives 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 controller 160 includes the desired gain and filtering according to a desired response and stability characteristic. For example, speed controller 160 may be realized as a PID (proportional-integral-differential) controller with parameters selected for the desired stability and response. Speed controller 160 may be implemented using digital circuitry, analog circuitry, a processor, a microcontroller, memory, and/or software. Motor control signal MCS is applied to signal converter 170 for conversion of motor control signal MCS to a form suitable for communication to motor driver 112 as motor drive signal MDRV. For example, signal converter 170 may include a pulse-width modulator. Signal converter 170 may be implemented using digital circuitry, analog circuitry, a processor, a microcontroller, memory, and/or software. As described above relative to
In the control loop of
As shown in
In implementing the control loop of
In this example, CPU 250 in microcontroller 200 is programmed or otherwise configured to determine the rotational speed or position of motor 100 from coil current measurements obtained from current sense circuitry 116 according to a “ripple counting” technique, in which discontinuities in coil current from commutation are detected and counted over time.
where N is the number of poles of the motor and ΔTi is the time interval between the ith discontinuity 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 discontinuities 360 occurring from commutation exhibit high instantaneous rates of change as shown in
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 logic 110 in the motor control system of
In the functional architecture of
According to the example embodiment of
In this example embodiment, error correction function 460 operates to derive an expected ripple count from the angular frequency model estimate ωest produced by observer function 450 for use in correcting the ripple count R_CT as detected by ripple counter function 400 and to produce a corrected ripple count CR_CT accordingly. Corrected ripple count CR_CT is communicated to speed/position estimation function 480 implemented by microcontroller 200, for determination of a rotational velocity or position, or both, as used in controlling motor 100 (e.g., for use in updating drive signal MDRV).
As mentioned above, observer function 450 applies current measurements of coil current and motor voltage, as applied by inputs I_COIL and MV, respectively, to a model of motor 100 to obtain an angular frequency model estimate ωest. According to this example embodiment, the model used by observer function 450 is a system of equations including both an electrical equation and a mechanical equation for BDC motor 100. Observer function 450 arrives at angular frequency model estimate ωest by 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 motor 100 used by observer function 450 is:
where v is the instantaneous motor voltage, La is the inductance (in units of Henries) of the armature coil of motor 100, I is the instantaneous coil current (in units of Amperes), Ia is the time-average (e.g., RMS) of coil current, Ra is the series resistance (in units of Ohms) of the armature coil of motor 100, and kv is the motor back electromotive force (back emf) constant (in units of
for motor ivy such mat kvω represents the back emf of motor 100 at 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 motor 100 used by observer function 450 is:
where kt is the motor torque constant of motor 100 (in units of
such that the term ktIa represents the torque of motor 100. Motor torque constant kt is numerically equal to the back emf motor constant kv in the electrical model of motor 100, expressed in different units. J is an inertia constant) in units of kg·m2) for motor 100, and Bf is a rotor friction constant (in units of kg·m2/sec) for motor 100.
As evident from equations (2) and (3), the electrical and mechanical models of motor 100 include 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 function 450 for a particular instance of motor 100 may be derived in various ways. In one implementation, observer function 450 may 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 motor 100 may be characterized through test and measurement at manufacture or at deployment, and those characterized values stored in memory of microcontroller 200 for use by observer function 450. Alternatively, or in addition, one or more values of the model constants may be adaptively derived during the actual operation of motor 100, for example by iteratively adjusting initial values (e.g., specification values, or characterized values) during an initial time interval of each operation of motor 100.
In a digital logic realization of observer function 450, such as implemented by CPU 250 of microcontroller 200 according to this example embodiment, the model system of the electrical and mechanical equations may be efficiently realized in a recursive implementation.
In particular, the implementation of
To arrive at this model estimate output vector {circumflex over (x)}, the realization of
where La represents the coil inductance of motor 100. The output of operator 502 is applied as one input to adder 504. As will be described below, adder 504 will generate an estimate vector that is the time derivative of model estimate output vector {circumflex over (x)}. That time derivative vector is applied to integrator 506, 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 operator 510, which multiplies vector {circumflex over (x)} by:
The output of operator 510 is another input to adder 504. Model estimate output vector {circumflex over (x)} is also applied to C operator 520, which multiplies vector {circumflex over (x)} by:
C=[0 1] (3d)
to retrieve the current estimate of coil current Ia from vector {circumflex over (x)}. The resulting value ŷ=Ia is applied (as a negative term) to one input of adder 522, which receives the current measured coil current value I_COIL (i.e., y=Ia) at its other input. The output of adder 522, expressed as error signal y_error in
As noted above, the implementation of
Integration of this vector
over time by integration operator 506 will thus yield the model estimate output vector {circumflex over (x)}:
As described above, the angular frequency model estimate ωest component from model estimate output vector {circumflex over (x)} is forwarded to error correction function 460, and the coil current component Ia is removed from vector {circumflex over (x)} by C operator 520 and applied to the negative input of adder 522 for development of the error signal y_error.
As noted above, the implementation of
Referring now to
Error correction function 460 in the meanwhile will have received one or more angular frequency model estimates ωest from observer function 450 since a time tc of the last previous pulse 380 from ripple counter 400 (an example of which is also shown in
In process 604, error correction function 460 compares the estimated angular rotation of motor 100 from integration process 602 with the commutation angle indicated by the advanced ripple count detected by ripple counter 400. Because the number of poles of motor 100 is 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 process 604 performed by error correction function 460 compares this commutation angle with the estimated angular rotation from process 602 to determine whether the rotation detected by ripple counter 400 is expected, based on the electrical and mechanical models applied by observer function 450 for the applied coil current and motor voltage. For example, this comparison may be performed by observing the time interval between time tc of the previous pulse and time tp of the newly detected pulse and determining whether the commutation angle movement of motor 100 matches the estimated angular rotation from integration process 602 over 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 motor 100, and for variations or imprecision in the motor as compared to the parameters applied to observer function 450. 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 process 604, classification process 606 may be performed by error correction function 460 to 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 process 606 classifies 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 tc of the previous pulse and time tp of the newly detected pulse. Based on the result of classification process 606, error correction function 460 generates a corrected ripple count value and communicates this corrected ripple count via signal CR_CT to speed/position estimation function 480 in this example embodiment.
For the case in which classification process 606 classifies the newly detected pulse as a correct pulse, error correction function 460 executes process 608a to apply no correction to ripple count R_CT in generating corrected ripple count signal CR_CT. Also in process 608a for the case of a correct pulse, previous pulse time tc is updated with the time tp of the newly detected pulse, in preparation for the next detected discontinuity pulse in a next instance of process 602.
For the case in which classification process 606 classifies the newly detected pulse as a false pulse, error correction function 460 executes process 608b in the example embodiment of
At time t3, ripple counter 400 has detected another discontinuity pulse, and advanced its ripple count R_CT by one as shown by plot 702. However, this pulse at time t3 is classified as a false pulse (FP) by error correction function 460 in classification process 606. In process 608b in this example, error correction function 460 corrects the ripple count R_CT by subtracting one in its generation of corrected ripple count CR_CT. This correction is shown in
Referring back to
In this example, ripple counter 400 detects the next discontinuity pulse and advances its ripple count R_CT at time t5, as shown by plot 722. In this case, however, error correction function 460 determines, in comparison process 604 and classification process 606, that another pulse (ghost pulse GP) should have occurred but was not detected prior to the pulse corresponding to time t5 because the estimated angular rotation from observer function 450 is greater than the commutation angle of a single pulse at time tp=t5 following time tc=t3. Accordingly, the uncorrected ripple count R_CT at time t5 has undercounted commutation pulses by one. In process 608c, therefore, error correction function 460 adds 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 t4 but was not. This correction is shown in
This operation continues, in this example of
In process 610, error correction function 460 communicates corrected ripple count signal CR_CT to speed/position estimation function 480. The corrected ripple count signal CR_CT may be communicated to and processed by speed/position estimation function 480 after 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 function 480 in microcontroller 200 uses this corrected ripple count signal CR_CT to estimate the current rotational speed, rotational position, or both of motor 100 for use as feedback in controlling the drive of motor 100.
The generation of a corrected ripple count as described may be implemented into a motor control system such as illustrated in
In process 802 of
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.
As apparent from the foregoing description, the model constants applied by observer function 450 in its generation of angular velocity model estimate ωest correspond to various parameters of motor 100, such as the back emf constant kt, resistance Ra and inductance La of the armature coil of motor 100, rotor friction constant Bf, inertia constant J, and possibly other motor parameters. As noted above, in some embodiments the values of these motor parameters may be derived during the actual operation of motor 100, for example by iteratively updating initial values (e.g., specification values, or characterized values) of the motor parameters during an initial time interval of each operation of motor 100.
During the initial estimation period illustrated in
However, during this initial estimation period while the motor parameters are being derived by motor parameter estimation function 900, observer function 450 is not operable to generate an angular frequency model estimate ωest for correcting ripple count R_CT from ripple counter 400. As a result, errors in the ripple count R_CT that are due to ghost pulses or false pulses will not be corrected during this estimation period, and the ripple count CR_CT applied to speed/position function 480 is simply the raw ripple count R_CT generated by ripple counter 400.
Because errors in the ripple count R_CT are not corrected during the estimation period Testimation, though, the presence of false or ghost pulses can cause an error in the cumulative ripple count relative to its “true” count. In the example of
Correction of this fixed error ε is important in those motor control applications in which precise knowledge of the absolute position of the motor is necessary.
Similarly as described above in connection with the architecture of
As in the architecture of
According to this example embodiment, behavioral motor model function 1120 has inputs receiving motor parameters MPS from motor parameter estimation function 900 and the motor voltage MV from motor 100. Behavioral motor model function 1120 is configured and operable to calculate motor speed and position for motor 100 according to a behavioral model for a motor having the parameters estimated by function 900 and in response to motor voltage MV over the duration of estimation time Testimation. The output of behavioral motor model function 1120 is an historical angular frequency model estimate ωest_m. This estimate ωest_m is applied to an input of error compensation function 1150, which also has an input receiving a stored cumulative ripple count H_CT from memory 1110 of ripple counter 400 and an input receiving the current real-time corrected ripple count CR_CT from error correction function 460.
According to this example embodiment, the historical angular frequency model estimate ωest_m indicates the position of motor 100 in response to motor voltage MV if motor 100 were operating according to the motor parameters MPS estimated by function 900. To the extent that the actual cumulative ripple count H_CT produced by ripple counter 400 and stored in memory 1110 differs from an estimated angular position based on this historical angular frequency model estimate ωest_m, that difference, which corresponds to the fixed error ε of
The behavioral motor model applied by behavioral motor model function 1120 in this example embodiment may differ from that applied by observer function 450. An example of a behavioral motor model as used by function 1120 in an implementation is illustrated in
To arrive at this model estimate output vector {circumflex over (x)}, the implementation of
where La represents the coil inductance of motor 100. The output of operator 1202 (e.g., the product of input u by the B operator) is applied as one input to adder 1204. As will be described below, adder 1204 generates an estimate vector that is the time derivative {dot over (x)} of model estimate output vector {circumflex over (x)}. That time derivative vector is applied to integrator 1206, which integrates the time derivative to produce model estimate output vector x. Model estimate output vector {circumflex over (x)} is applied as feedback to A operator 1208, which multiplies vector {circumflex over (x)} by:
The output of operator 1208 is another input to adder 1204. Model estimate output vector {circumflex over (x)} may also be applied to C operator 1210, which multiplies vector {circumflex over (x)} by:
C=[0 1] (5d)
to retrieve coil current estimate Ia from vector {circumflex over (x)}. Model estimate output vector {circumflex over (x)}, or at least the historical angular frequency model estimate ωest_m component of that vector, is forwarded to error compensation function 1150 implemented by microcontroller 200 as shown in the functional architecture shown in
The implementation of
The generation of a corrected ripple count, including compensation for historical errors in a cumulative ripple count that may arise during estimation of motor parameters as described above, may be implemented into a motor control system such as illustrated in
The method of motor control according to this example embodiment begins with process 1302, in which the drive of motor 100 by motor driver 112 starts. As motor driver 112 drives motor 100 after startup, control of the motor drive is effected in process 1304 by control signals produced by microcontroller 200 in response to an input signal corresponding to a desired speed or position, in combination with feedback corresponding to the current speed or position of motor 100 as measured by ripple counter 400. At this initial stage of operation after startup, motor parameters have not yet been estimated by motor parameter estimation function 900, and as such, the control applied in process 1304 is based on the raw ripple count R_CT from ripple counter 400 without correction for false and ghost pulses as described above. In process 1306, motor parameter estimation function 900 begins determining the motor parameters for this instance of motor 100 under its current conditions, while motor 100 is continuing to be driven by motor driver 112 (decision 1307 is “no”). Upon completion of the estimation of the motor parameters (decision 1307 is “yes”), these motor parameters are communicated to observer function 450 and behavioral motor model 1120 in process 1308, and motor driver 112 continues to drive motor 100 in process 1310.
Once the motor parameters have been estimated and applied to observer function 450, the raw ripple count R_CT may be corrected. During the driving of motor 100 in process 1310, current values of coil current and motor voltage at motor 100 are sensed and communicated to observer function 450, and digital logic 110 performs an instance of process 600, for example as described above relative to
In process 1316, behavioral motor model function 1120 meanwhile generates historical angular frequency model estimate ωest_m based on the motor voltage MV and the motor parameters estimated in process 1306, and applies that estimate ωest_m to compensation function 1150. Error compensation function 1150 compensates the corrected ripple count (e.g., signal CR_CT from error correction function 460 in
Alternatively, the ripple count adjustment RCTA derived in operation 1404 may be applied in process 1406 by a single adjustment (e.g., a single ripple count adjustment of four pulses).
Referring back to
In motor control implementations in which the motor parameters are estimated during an initial time interval following motor startup, a behavioral motor model can be used to derive a model-based estimate of rotation during this estimation time. Error compensation may be applied, based on this angular rotation estimate, to a stored cumulative ripple count over that estimation time to compensate for false and ghost pulse errors in the ripple count that may have been detected and counted. In automotive and industrial applications in which the accurate position of BDC motor is very critical and error is not acceptable, this error compensation method obtained through post-processing offers advantage over conventional implementations.
As used herein, the terms “terminal”, “node”, “interconnection” and “pin” are used interchangeably. Unless specifically stated to the contrary, these terms are generally used to mean an interconnection between or a terminus of a device element, a circuit element, an integrated circuit, a device, or other electronics or semiconductor component.
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 device that is “configured to” perform a task or function may be configured (e.g., programmed and/or hardwired) at a time of manufacturing by a manufacturer to perform the function and/or may be configurable (or re-configurable) by a user after manufacturing to perform the function and/or other additional or alternative functions. The configuring may be through firmware and/or software programming of the device, through a construction and/or layout of hardware components and interconnections of the device, or a combination thereof.
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.
Circuits described herein are reconfigurable to include the replaced components to provide functionality at least partially similar to functionality available prior to the component replacement. Components shown as resistors, unless otherwise stated, are generally representative of any one or more elements coupled in series and/or parallel to provide an amount of impedance represented by the shown resistor. For example, a resistor or capacitor shown and described herein as a single component may instead be multiple resistors or capacitors, respectively, coupled in parallel between the same nodes. For example, a resistor or capacitor shown and described herein as a single component may instead be multiple resistors or capacitors, respectively, coupled in series between the same two nodes as the single resistor or capacitor. To the extent that it is not shown in the figures or discussed above, similar features in the figures (whether they have the same or different reference numbers) may be connected in the same manner as they are connected in other figures, even if they are not explicitly shown to include those connections in a particular figure. As used herein, functional blocks (“functions”) and/or circuitry may be implemented using digital circuitry, analog circuitry, a processor, a microcomputer, a state machine, memory, software, firmware and/or any combination of the above.
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.
Claims
1. A motor control method, comprising:
- starting a brushed direct current (BDC) motor by applying electrical drive to the motor;
- in an initial time interval following the starting of the motor, detecting discontinuities in a coil current sensed at the motor to produce a ripple count of the detected discontinuities;
- during the initial time interval, generating an estimate of one or more motor parameters responsive to a motor voltage at the motor and to one or more of an angular velocity and acceleration of the motor;
- generating an historical angular frequency model estimate from a behavioral motor model incorporating the estimated motor parameters;
- after the generating of the estimate of the motor parameters and while applying electrical drive to the motor, determining an angular frequency model estimate responsive to coil current and motor voltage sensed at the motor, using a computational model for the motor incorporating the estimated motor parameters;
- generating a corrected ripple count responsive to a comparison of a commutation angle of the motor with an angular position based on the angular frequency model estimate;
- compensating the corrected ripple count based on the historical angular frequency model estimate; and
- adjusting the electrical drive applied to the motor responsive to the compensated corrected ripple count.
2. The method of claim 1, wherein the compensating step comprises:
- storing a value of the ripple count at the end of the initial time interval;
- computing an integration of the historical angular frequency model estimate to derive an estimated angular position of the motor;
- determining a difference between the estimated angular position and the stored value of the ripple count; and
- compensating the corrected ripple count according to the difference.
3. The method of claim 1, wherein the motor parameters comprise one or more of a back emf constant kt, a resistance Ra of an armature coil of the motor, an inductance La of the armature coil, a rotor friction constant Bf, and an inertia constant J.
4. The method of claim 3, wherein the step of generating an estimate of the one or more motor parameters comprises:
- iteratively updating initial values of the one or more motor parameters during the initial time interval responsive to a motor voltage at the motor and to one or more of an angular velocity and acceleration of the motor.
5. The method of claim 4, wherein the step of generating an estimate of the one or more motor parameters further comprises:
- determining the one or more of the angular velocity and acceleration of the motor based on the ripple count of the detected discontinuities.
6. A motor control system, comprising:
- a motor driver having an output for coupling to a brushed direct current (BDC) motor; and
- motor control circuitry having an input for receiving a coil current signal and a motor voltage signal from the motor and having an output coupled to the motor driver, the motor control circuitry configured to generate a motor drive signal at its output by a plurality of operations comprising: starting the motor by generating the motor drive signal to the motor driver; in an initial time interval following the starting of the motor, detecting and counting discontinuities in the coil current signal to produce a ripple count; during the initial time interval, generating an estimate of one or more motor parameters responsive to the motor voltage signal at the motor and to one or more of an angular velocity and acceleration of the motor; generating an historical angular frequency model estimate from a behavioral motor model incorporating the estimated motor parameters; after the generating of the estimate of the motor parameters and while applying the motor drive signal to the motor driver, determining an angular frequency model estimate responsive to the coil current signal and motor voltage signal using a computational model for the motor incorporating the estimated motor parameters; generating a corrected ripple count responsive to a comparison of a commutation angle of the motor with an angular position based on the angular frequency model estimate; compensating the corrected ripple count according to the historical angular frequency model estimate; and adjusting the motor drive signal responsive to the compensated corrected ripple count.
7. The system of claim 6, further comprising:
- a current sensor for sensing a coil current at the motor; and
- current sense circuitry coupled to the current sensor, for generating the coil current signal responsive to the coil current sensed at the motor.
8. The system of claim 6, further comprising:
- a memory;
- wherein the operation of compensating the corrected ripple count comprises:
- storing a value of the ripple count at the end of the initial time interval in the memory;
- computing an integration of the historical angular frequency model estimate to derive an estimated angular position of the motor;
- determining a difference between the estimated angular position and the stored value of the ripple count; and
- compensating the corrected ripple count according to the difference.
9. The system of claim 6, wherein the motor parameters comprise one or more of a back emf constant kt, a resistance Ra of an armature coil of the motor, an inductance La of the armature coil, a rotor friction constant Bf, and an inertia constant J.
10. The system of claim 9, wherein the operation of generating an estimate of the one or more motor parameters comprises:
- iteratively updating initial values of the one or more motor parameters during the initial time interval responsive to the motor voltage signal and to one or more of an angular velocity and acceleration of the motor.
11. The system of claim 10, wherein the operation of generating an estimate of the one or more motor parameters further comprises:
- determining the one or more of the angular velocity and acceleration of the motor based on the ripple count of the detected discontinuities.
12. The system of claim 6, wherein the motor control circuitry comprises digital logic configured to perform the detecting and counting, determining, generating, and adjusting operations.
13. The system of claim 12, further comprising:
- a current sensor for sensing a coil current at the motor; and
- current sense circuitry coupled to the current sensor, for generating the coil current signal responsive to the coil current sensed at the motor;
- and wherein the digital logic comprises a comparator coupled to the current sense circuitry to receive the coil current signal.
14. Motor control circuitry configured to generate a motor drive signal at an output by performing a plurality of operations comprising:
- starting the generating of the motor drive signal;
- receiving, at one or more inputs, a coil current signal and a motor voltage signal from a brushed direct current (BDC) motor;
- in an initial time interval following the starting of the motor, detecting discontinuities in a coil current sensed at the motor to produce a ripple count of the detected discontinuities;
- during the initial time interval, generating an estimate of one or more motor parameters responsive to the motor voltage signal and to one or more of an angular velocity and acceleration of the motor;
- generating an historical angular frequency model estimate from a behavioral motor model incorporating the estimated motor parameters;
- after the generating of the estimate of the motor parameters and while applying electrical drive to the motor, determining an angular frequency model estimate responsive to the coil current signal and the motor voltage signal, using a computational model for the motor incorporating the estimated motor parameters;
- generating a corrected ripple count responsive to a comparison of a commutation angle of the motor with an angular position based on the angular frequency model estimate;
- compensating the corrected ripple count based on the historical angular frequency model estimate; and
- adjusting the motor drive signal responsive to the compensated corrected ripple count.
15. The motor control circuitry of claim 14, further comprising:
- a memory;
- wherein the operation of compensating the corrected ripple count comprises:
- storing a value of the ripple count at the end of the initial time interval in the memory;
- computing an integration of the historical angular frequency model estimate to derive an estimated angular position of the motor;
- determining a difference between the estimated angular position and the stored value of the ripple count; and
- compensating the corrected ripple count according to the difference.
16. The motor control circuitry of claim 14, wherein the motor parameters comprise one or more of a back emf constant kt, a resistance Ra of an armature coil of the motor, an inductance La of the armature coil, a rotor friction constant Bf, and an inertia constant J.
17. The motor control circuitry of claim 16, wherein the operation of generating an estimate of the one or more motor parameters comprises:
- iteratively updating initial values of the one or more motor parameters during the initial time interval responsive to the motor voltage signal and to one or more of an angular velocity and acceleration of the motor.
18. The motor control circuitry of claim 14, wherein the operation of generating an estimate of the one or more motor parameters further comprises:
- determining the one or more of the angular velocity and acceleration of the motor based on the ripple count of the detected discontinuities.
19. The motor control circuitry of claim 14, comprising a microcontroller, the microcontroller comprising:
- a central processing unit;
- one or more ports coupled to one or more inputs, outputs, or input/outputs; and
- memory storing contents comprising executable program instructions that, when executed by the central processing unit, cause the motor control circuitry to perform the starting receiving, detecting, generating, determining, generating, compensating, and adjusting operations.
Type: Application
Filed: Feb 25, 2022
Publication Date: Aug 10, 2023
Patent Grant number: 11936325
Inventors: Kaushik Alwala (Nalgonda), Venkata Naresh Kotikelapudi (Bangalore)
Application Number: 17/680,577