BLDC motor controller / driver
The motor controller IC package with a curve converter and interpolated data improves BLDC motor control by precisely determining rotor position and adjusting motor parameters, addressing inefficiencies in conventional systems.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- ALLEGRO MICROSYSTEMS LLC
- Filing Date
- 2020-09-10
- Publication Date
- 2026-04-23
AI Technical Summary
Conventional BLDC motors with Hall effect sensors face inefficiencies in rotor position detection and closed-loop control, necessitating improved methods for precise motor control.
A motor controller IC package with a curve converter that uses interpolated data and hysteresis to control three-phase BLDC motors, incorporating a processor and memory to provide stored corner points for output data, enabling precise motor speed, torque, and power control through polar FOC.
Enhances the precision and efficiency of BLDC motor control by accurately determining rotor position and adjusting motor parameters in real-time, ensuring stable operation and improved performance.
Smart Images

Figure 0007850657000001 
Figure 0007850657000002 
Figure 0007850657000003
Abstract
Description
[Background technology]
[0001] As is known in the art, brushless DC (BLDC) motors may include external electronic switches synchronized with the rotor position instead of a mechanical commutator. In conventional BLDCs, Hall effect sensors may be mounted on the windings for detecting the rotor position and for closed-loop control of the electronic commutator. [Overview of the Initiative]
[0002] In one embodiment, the method includes the step of assigning stored corner points to the output of a curve converter using a curve converter having an index value for each stored input and output value, the curve converter outputting interpolated data for input data between adjacent values among the input values.
[0003] The method may further include one or more of the following features: the interpolated data includes linearly interpolated data; the curve converter controls a three-phase motor; the curve converter controls motor speed; the curve converter controls motor torque; the curve converter controls motor power; the curve converter controls motor control requests; the index values, input values, and output values impart multiple steps to the output of the curve converter, and these steps include hysteresis; the output of the curve converter is not monotonic; and / or the curve converter uses the polarity FOC of the motor controller IC package.
[0004] In another embodiment, the motor controller IC package includes a processor and memory configured to provide a curve converter, the curve converter having an index value for each stored input and output value to provide stored corner points for the output of the curve converter, and the line converter outputting interpolated data for input data between adjacent values among the input values.
[0005] The motor controller IC package may further include one or more of the following features: the interpolated data includes linearly interpolated data; the curve transducer is configured to control a three-phase motor; the curve transducer is configured to control motor speed; the curve transducer is configured to control motor torque; the curve transducer is configured to control motor power; the curve transducer is configured to control motor control requests; the index values, input values and output values impart multiple steps to the output of the curve transducer, the multiple steps include hysteresis; the output of the curve transducer is not monotonic; and / or the curve transducer is configured for polar FOC motor control.
[0006] The aforementioned features of the present invention, and the invention itself, can be better understood from the following description of the drawings. [Brief explanation of the drawing]
[0007] [Figure 1] This is a schematic diagram of an exemplary control system for a three-phase BLDC motor according to an exemplary embodiment of the present invention. [Figure 2] Figure 1 is a schematic diagram showing further details of the exemplary control system. [Figure 2A] This is a schematic diagram illustrating exemplary bus current measurement and phase-zero current detection. [Figure 3] This is a graphical representation of the phase current and phase voltage waveforms of an example BLDC motor. [Figure 3A] This is the polar coordinate representation of the phase voltage and drive current. [Figure 4] This is a schematic diagram of the drive current, which is a rotating DC current derived from a three-phase AC current. [Figure 5] This is an exemplary process for controlling the speed of a three-phase BLDC motor according to an exemplary embodiment of the present invention. [Figure 6] This is a schematic diagram of a curve converter. [Figure 7A] This is an exemplary embodiment of a curve converter. [Figure 7B] Another exemplary embodiment of the curve converter. [Figure 7C] Another exemplary embodiment of the curve converter. [Figure 7D] Another exemplary embodiment of the curve converter. [Figure 7E] Another exemplary embodiment of the curve converter. [Figure 8A] Schematic diagram of an embodiment of the PI loop. [Figure 8B] Schematic diagram of another embodiment of the PI loop. [Figure 9A] Schematic diagram of an exemplary error feedback loop. [Figure 9B] Schematic diagram of another exemplary error feedback loop. [Figure 10] Block diagram of a control loop for operation. [Figure 11] Schematic diagram of an exemplary PLL implementation. [Figure 12] Exemplary circuit implementation of the PLL of FIG. 11. [Figure 13] Exemplary clock mode migration. [Figure 14] Waveform diagram of a clock signal for the clock mode of FIG. 13. [Figure 15] Block diagram of an exemplary hybrid implementation of the clock mode. [Figure 16] An exemplary computer capable of executing at least a part of the processes described herein.
Best Mode for Carrying Out the Invention
[0008] Figure 1 shows an exemplary system 100 for controlling a motor according to an exemplary embodiment of the present invention. The control system 100 may be useful, for example, for controlling a three-phase BLDC. An exemplary motor control circuit 102 is coupled to drive an electric motor 104 having three windings 104a, 104b, and 104c, each having an inductor connected in series with a resistor and which can be drawn as an equivalent circuit connected in series with a back electromotive force voltage source. For example, winding A104a is shown to have an inductor 130 connected in series with a resistor 131 and in series with a back electromotive force voltage source VA136. The voltage of the back electromotive force voltage source VA136 cannot be directly observed when current is flowing through the associated motor windings, but it can be estimated by looking at the phase current and phase voltage.
[0009] Generally, the voltage across a motor winding, for example, the voltage across winding A140a, is governed by the following equation. VoutA - Vcommon = VA + IR + L·dI / dt
[0010] Herein lies the following: VoutA = Observable voltage at one end of winding A. Vcommon = (VoutA + VoutB + VoutC) / 3: This is the voltage at the junction of windings 104a, 104b, and 104c, and can be calculated using VoutA, VoutB, and VoutC. R = the resistance value of resistor 131. L = Inductance of inductor 130 I = Current flowing through the winding VA = Back electromotive force voltage.
[0011] Therefore, if the current flowing through winding 104a is zero, we can see that VoutA - Vcommon = VA + L·dI / dt. In the ideal case, VoutA - Vcommon = L·dI / dt, and the back electromotive force VA is in phase with the phase current.
[0012] In the illustrated embodiment, the motor control circuit 102 includes a speed request generator 107 coupled to receive an external speed request signal 106 from outside the motor control circuit 102. The external speed request signal 106 can be provided in various formats. Generally, the external speed request signal 106 indicates the speed of the motor 104 requested from outside the motor control circuit 102.
[0013] In this embodiment, the speed request signal 107a is determined not only by an external speed request signal but also by a motor current request measured or calculated by a signal processing module. If an overcurrent limiting (OCL) event occurs, the speed request signal 107a may be clamped and become smaller than the external speed request signal 106.
[0014] The speed request generator 107 is configured to generate a speed request signal 107a. The pulse width modulation (PWM) generator 108 is coupled to receive the speed request signal 107a and is configured to generate a PWM signal 108a, the duty cycle of which is controlled by the speed request signal 107a. The PWM generator 108 is also coupled to receive a modulated waveform from the modulation signal generation module 146. The PWM signal 108a is generated to have modulation characteristics (i.e., a duty cycle that is relatively time-varying) corresponding to the modulated waveform from the modulation signal generation module 146.
[0015] In one embodiment, the motor control circuit 102 also includes a gate drive circuit 110 configured to receive a PWM signal 108a and generate PWM gate drive signals 110a, 110b, 110c, 110d, 110e, and 110f to drive six transistors 112, 114, 116, 118, 120, and 122 arranged as three half-bridge circuits 112 / 114, 116 / 118, and 120 / 122. The six transistors 112, 114, 116, 118, 120, and 122 may operate in a saturated state to provide three motor drive signals VoutA, VoutB, VoutC, 124, 126, and 128 to nodes 102d, 102c, and 102b, respectively.
[0016] It should be understood that any practical number of switching elements can be used, coupled in various suitable configurations, to meet the needs of a particular application. Furthermore, it should be understood that any suitable signal generator can be used to generate the control signals for the switching elements that provide the signal to energize a three-phase BLDC motor.
[0017] The motor control circuit 102 may also include a signal processing module 143 for receiving a bus current measurement signal 150 and one or more of the motor drive signals VoutA, VoutB, VoutC, 124, 126, and 128, respectively. In embodiments, these signals can be used for A-phase, B-phase, and / or C-phase zero current detection (ZCD). The bus current 150 and the motor drive signals VoutA, B, and C can be used to control the motor speed, as will be discussed more thoroughly below.
[0018] The control circuit 102 can be coupled to receive the motor voltage VMOT, or simply VM, at node 102a, which is supplied to the motor through transistors 112, 116, and 120 when the upper transistors 112, 116, and 120 are turned on. It will be understood that there may be a small voltage drop (e.g., 0.1 volts) through transistors 112, 116, and 120 when they are turned on and supplying current to the motor 104.
[0019] Figure 2 shows a BLDC control system 200 according to an exemplary embodiment of the present invention, providing further details to the system in Figure 1. The inverter / motor module 202 receives a control signal U(ABC) for controlling a three-phase motor. The inverter / motor module 202 generates an I_bus signal 204 corresponding to the bus current to the I_bus command module 206 and a phase current signal I(ABC) to the zero current detection module 208, which supplies three-phase current direction information to the sample / calculation module 210. The I_bus / command (e.g., I_bus divided by the speed command) module 206 generates an I_driving signal or drive current, as will be described in more detail below.
[0020] Sample / calculation module 210 determines θ when zero current is detected. S A motor drive angle signal θ is received, which can be sampled as the difference angle θ corresponding to the difference between the motor phase current and the phase voltage, as will be explained in more detail below. e The output is θ0. The phase advance angle θ0, which can be given as an input signal, can be input to an adder 212 that outputs a difference angle Δθ for adjusting the motor speed ω. In this embodiment, the difference angle Δθ and the I_driving signal (drive current) generated by the I_bus / command module 206 are supplied as inputs to a coupler 214, for example, a multiplier, whose output is supplied to a proportional-integral-derivative (PID) controller 216. The PID 216 outputs θ e The motor speed output value ω is generated as the difference between and θ0, and the motor speed error is minimized over time. The output of PID216 is integrated 218 and supplied to a conversion mechanism 220 for controlling the motor, such as a lookup table, and the motor speed angle signal θ is sampled θ S To enable this, it is supplied to the sample / calculation module 210.
[0021] It is understood that Kp and Ki represent the coefficients of the proportional and integral-derivative terms. The derivative Kd can also be used. P is θe The current value of the error between and θ0 is denoted as I for the past value of the error and D for the possible future value of the error based on the current rate of change. By adjusting the coefficients, the PID controller 216 can be executed according to specific process requirements.
[0022] The I_driving output signal of the I_bus command module 206 is supplied to the power control module 222, and the power control module 222 supplies the output to the amplitude command module 224. The combiner 226 receives the output from signals 228 such as the amplitude command module 224, the conversion mechanism 220, and VBB corresponding to the motor voltage VM. The output of the combiner 226 is supplied to the inverter / motor module 202, generating a gate signal for the switching element, thereby controlling the speed of the motor. In an exemplary embodiment, the combiner 226 multiplexes the input signals to generate the output.
[0023] FIG. 2A shows an exemplary embodiment of a position for measuring the bus current 250 and the zero current detection 252 of phases A, B, and C. In the embodiment, the first, second, and third switching device pairs are respectively coupled to the respective phases A, B, and C of the motor M. The sensed signals enable zero current detection of phases A, B, and C.
[0024] FIG. 3 shows an exemplary waveform that can be used for BLDC motor control according to an exemplary embodiment of the present invention. The voltage drive angle 300 of the three-phase BLDC is shown from 0 degrees to 360 degrees. The sine wave phase current signal 302 is shown having a falling zero crossing 304 corresponding to the sampled voltage drive angle θ S which can be used to derive the angle θ e between the phase current 302 and the phase voltage 306. In the illustrated embodiment, θ e =180 - θ S is true.
[0025] In an embodiment, the differential angle θ eIt is desirable that in the steady state, this is equal to θ0 (Figure 2). Figure 3A shows the angle θ in polar coordinates, defined by the angle between the phase voltage 350 (output from 206 in Figure 2) and the drive current 352. e This indicates.
[0026] Figure 4 shows a representation of the drive current, which can replace the three-phase AC current with an equivalent rotating DC current. As can be seen, sinusoidal currents can be supplied to the A, B, and C phases of the motor, respectively. The magnet has a north pole (N pole) and a south pole (S pole), from which its position is determined. The angle θ represents the voltage drive angle, which is the input to the sinusoidal function of the phase voltage. In this embodiment, the angle θ can be an index in a sinusoidal lookup table.
[0027] As described above, the I_bus / command module 206 (Figure 2) can generate the I_driving signal for the PID controller 216. In an exemplary embodiment, I_driving = I_bus divided by the speed command. The relationship between I_driving and the phase current is described below.
[0028] Three-phase current can be defined as follows: IA = Ipeak × sin(ωt) (where ω corresponds to the motor speed). IB = Ipeak × sin(ωt - 120°) IB = Ipeak × sin(ωt - 240°)
[0029] Phase torque can be defined as follows: TA=IA×FluxPeak×sin(θ+120°) TB=IB×FluxPeak×sin(θ+240°) TC = IC × FluxPeak × sin(θ + 0°) Tsum=1.5×Ipeak×FluxPeak×(ωt+θ+120°)
[0030] The DC drive current Idrive = 1.5 × Ipeak, and when rotating counterclockwise at a velocity ω, Tdrive = 1.5 × Ipeak × FluxPeak × (ωt + θ + 120°) = Tsum.
[0031] From this, it can be seen that by rotating Idrive, which is 1.5 times the Ipeak DC current, together with the BLDC's magnet, the BLDC motor is driven with an equivalent torque Tdrive = Tsum. Therefore, for the analysis, the three-phase currents IA, IB, and IC are replaced with Idrive. Idriving is the amplitude of Idrive, and can be measured using I_bus / command module 206 (Figure 2).
[0032] Figure 5 shows an exemplary process for BLDC motor control according to an exemplary embodiment of the present invention. In step 500, the phase current direction may be detected using a suitable zero current detection (ZCD) technique, such as that shown and described in U.S. Patent No. 8,917,043, which is incorporated herein by reference. In step 502, the angle θ between the phase current 302 (see, for example, Figure 3) and the phase voltage 306 is determined. e This is the voltage drive angle θ sampled when zero current was detected. S It can be calculated from the following. The voltage drive angle θ can be an index from 0 to 360 degrees that determines the sinusoidal output. Angle θ e As shown in Figure 3A, this can correspond to the angular position of the current in polar coordinates. In step 504, the phase lead angle θ0 calculated from the motor inductance, etc., is received as input. Generally, in a steady state, the angle θ e It is desirable that this is equal to θ0. In step 506, the difference angle Δθ (for example, θ0-θ) e ) supplies a feedback signal to a control loop for adjusting the motor speed ω, for example, a PID controller 216 (Figure 2).
[0033] In step 508, the system (e.g., I_bus / command module 206 in Figure 2) measures the average value of the bus current 204 (Figures 2 and 4) and converts this value into the drive current (I_driving), which is the effective rotational current that generates the motor's driving torque. It is understood that any suitable method can be used to measure and / or estimate the drive current. In a three-phase BLDC motor driven by a sinusoidal waveform, as described above, the three-phase AC current can be replaced with an equivalent rotational DC current which can be called the drive current, and this is proportional to the bus current divided by the amplitude command. In one embodiment, I_driving = Ibus × 1.732 / amplitude_command. The drive current is the radial portion 352 in polar coordinates in Figure 3A.
[0034] In step 510, the drive current is multiplied by the difference angle Δθ, and the product is supplied to the PI controller 216 (Figure 2). The proportional gain (Kp) and integral gain (Ki) of the PI control loop can be determined, for example, by the motor parameters. The drive current can also be used for power control to control the acceleration and deceleration of the system.
[0035] In other embodiments, the BLDC motor control processing may include data curve converters useful for speed, torque, power, control request data, etc. In embodiments, the curve converter may be provided as part of a signal processing device, such as the signal processing module 143 in Figure 1.
[0036] Figure 6 shows an exemplary curve converter module 600 having M(M:0) input bits and N(N:0) output bits. In this exemplary embodiment, N=M such that the number of input bits and output bits are the same. It is understood that N and M can be given as any practical integers to meet the needs of a particular application.
[0037] Figure 7A shows an exemplary embodiment of N=M=9 where the input and output data values may range from 0 to 511. The curve converter 600 (Figure 6) converts the input data values to the output data values. In the illustrated embodiment, each input data value between 0 and 511 is converted to an output value between 0 and 511. In some embodiments, the data lookup values can be stored in EEPROM or other storage. The "corner points" of 0 and 511 are stored, and the values in between are calculated, for example, by linear interpolation. It should be understood that any suitable interpolation technique can be used to meet the needs of a particular application. The converted data can be stored in specific memory addresses to cover a certain number of corner points. In a particular embodiment, each data point includes 9 bits of input data and 9 bits of output data.
[0038] In the embodiment shown in Figure 7A, address 32 stores the first point (index 0), with input data of 0 and output data of 0. Address 33 stores the second point (index 1), with input data of 511 and output data of 511. The curve is a straight line from 0 to 511. In the second row, the input data is 511, indicating the last corner point of the curve. In this embodiment, data beyond this row is ignored.
[0039] Figure 7B shows a further example of input data {0, 100, 100, 450, 511} converted to output data {0, 0, 100, 511, 511} using index values {0, 1, 2, 3, 4} at memory address positions {32, 33, 34, 35, 36}. The input and output values are shown by the curve on the right side of the figure. The corner points are shown as linearly extrapolated from 100 to 511. Input data less than or equal to 100 is converted to an output value of 0. Input data greater than or equal to 450 is converted to an output value of 511.
[0040] In an example implementation of speed requirements using a curve converter, the motor will not start if the speed requirement is less than approximately 20% (≒100 / 511), and the motor speed will saturate if the input requirement is approximately 80% (≒450 / 511) or higher.
[0041] Figure 7C shows another example using 10 points to give a step curve with hysteresis. As can be seen, various input data values correspond to output data values that form a plateau for a specific range of input values. Hysteresis occurs when the input data for the next point (index N+1) is smaller than the input data for the current point (index N). For example, if index 1 is 100 and index 2 is 80, a hysteresis of 20 occurs. Similar hysteresis occurs for indices 3 and 4, indices 5 and 6, and indices 7 and 8.
[0042] Figure 7D shows another example where the output does not need to be monotonic, in which case the output returns to zero when the input is 511 for index 6. In the illustrated embodiment, the curve has a linear extrapolation from 80 to 511 and various corner points.
[0043] Figure 7E shows another example of a curve that can be considered bidirectional in a motor application. In the illustrated example, for an input request between 230 and 280, the output is 255. If a bidirectional curve is selected, this translates to a speed of zero. An input request of 0 means the maximum speed in the reverse direction, and an input request of 511 also translates to the maximum speed, but it becomes the speed in the forward direction. As can be seen, the curve is linear between 0 and 230, and between 280 and 511.
[0044] As shown and described above, an exemplary embodiment is a polar coordinate system for a BLDC motor in which the processing is performed in the polar coordinate region. (Polar) Field-Oriented Control (FOC: FThis includes (IELD Oriented Control). Referring again to Figures 1, 2, and 3, for any vector in a BLDC motor control system, the voltage, current, and back BEMF can be characterized by a linear and orthogonal axis factor. They can also be characterized by amplitude and angle, and this structure is called polar coordinates. The amplitude of the current can be measured from the bus current, and the angle can be measured by a ZCD (Zero Current Cross Detection) circuit (see, for example, Figure 3).
[0045] When the phase current crosses zero, the circuit can sample a pointer value that is the angle θ that produces the three-phase voltage output. If the current crossover is on a falling edge, the sampled θ(θ) S ) is the error angle (θ e Note that you need to subtract 180 degrees to obtain the result. Also, since there is a three-phase current, note that if zero current occurs in phase B or C, you need to add 120 degrees or 240 degrees.
[0046] Referring again to Figure 4, the current flowing through the motor windings is called the phase current, and the current flowing through the power supply is called the bus current. The phase current is sinusoidal, and the bus current is a ripple waveform with an average DC value in the case of I_bus. In exemplary embodiments, the drive current (or I_drive) means the equivalent DC rotational current. The wire carrying the drive current rotates in sync with the motor magnets, which are based on the same torque effect.
[0047] In this embodiment, the drive current has an amplitude 1.5 times that of the peak of the phase current. The exemplary motor driver controller IC package simply measures the bus current and calculates the drive current as follows: Idrive=Ibus×1.732 / amplitudeCmd / cos(θ)
[0048] Since θ is usually a relatively small angle and cos(θ) is approximately equal to 1, the coefficient of cos(θ) in the above equation can be ignored. In other embodiments, cos(θ) is not ignored.
[0049] Referring again to Figure 2, the current zero crossover is detected by the ZCD circuit 208, and the sample and calculation block 210 calculates the angle (θ) between the voltage and current. e θ0 is generated. θ0 is calculated based on the motor inductance, current, and motor speed (wIL). Higher current, higher speed, and higher inductance may require a higher θ0. In some embodiments, the user can program θ0 directly.
[0050] In the embodiment, the feedback θ should be zero. e It is desirable to control the difference between and θ0. The output adjusts the drive speed via the PID module 216. The motor physical speed is determined by the drive torque, load torque, and inertia. The drive speed must be equal to the motor speed in the steady state. If the drive speed is higher or lower than the motor speed for a certain period of time, the motor may experience a "phase shift," potentially causing the control loop to fail. Therefore, it is necessary to continuously adjust the drive speed based on feedback of θ.
[0051] The bus current can be measured by the operational amplifier and ADC in the I_bus / command module 206. Dividing I_bus by the amplitude command generates I_drive (ignoring cosθ). The I_drive signal can be limited between the rated current and zero by adjusting the amplitude command 224, which may also affect the calculation of I_drive.
[0052] In this embodiment, the I_drive signal is multiplied by Δθ before being supplied to the PID module 216. Higher currents (I_drive) may require greater adjustment for smaller angular errors (Δθ). The drive speed may be integrated to generate a pointer (θ), and a sine table may be read from the pointer to generate a three-phase output voltage.
[0053] As described above, in some embodiments, the phase current (peak value) is expressed by dividing the bus current by the duty cycle (bus current / duty cycle), but this assumes that the phase current and phase voltage have a small angle, for example, cos(θ) = 1. In some embodiments, θ can be relatively large, such as 30 degrees, so cos(θ) may be involved in the calculation.
[0054] In some embodiments, the Idrive current, gain, and Δθ are multiplied together and supplied to the integral proportional loop, as shown in Figure 8A. In other embodiments, only the gain and Δθ are multiplied together and supplied to the integral proportional loop, as shown in Figure 8B.
[0055] In some embodiments, the feedback loop includes Δθ, which is the error between θ and θ0, and Idrive, as shown in Figure 9A. θ0 is calculated by w × I × L. In other embodiments, the block "IR + wIL / BEMF" may be implemented for these calculations. In some embodiments, an electric field weakening input can be added to the calculation.
[0056] In one exemplary embodiment, the IR+wIL / BEMF block may be implemented as follows: error=(cos(θ)×w×L+sin(θ)×w×Idrive×R) / (w×Kt) error=(cos(θ)×w×L×Idrive+sin(θ)×Idrive×R) / (w×Kt)
[0057] Here, θ represents the phase current angle, w represents the motor drive angular velocity [rad / s], Idrive represents the phase peak current [A], R represents the winding resistance [Ω], L represents the winding inductance [H], Kt represents the motor torque constant [Nm / A], and error represents the phase advance [rad].
[0058] In an exemplary embodiment, the motor controller has four operating modes: open-loop, constant speed, constant current (torque), and constant power. Three of the operating modes, constant speed, constant current (torque), and constant power, are closed-loop modes. Figure 10 shows examples of control loops with speed loops, power loops, current loops, and amplitude control using various operating modes.
[0059] The drive torque of a BLDC motor is generated by the drive current (phase current) attracted to the permanent magnet. Controlling the torque to be constant is equivalent to controlling the current to be constant. The terms constant torque and constant current are sometimes used interchangeably. Control requests from analog input, PWM input, or I2C input are applied to four different blocks, depending on the selected operating mode.
[0060] When the open loop is selected, the control request is applied directly to the amplitude control. A larger control request results in a larger average output voltage amplitude, and in most cases, an increase in current and motor speed. In open-loop mode, the current loop, speed loop, and power loop are not activated.
[0061] When constant torque mode is selected, the control request is applied to the reference input of the current loop. The speed loop and power loop are bypassed. If the motor operating current (I_drive) is less than the torque request, which is a control request signal from either analog, PWM, or I2C, the PI loop increases the amplitude request and ultimately adjusts I_drive. The time constant of the current loop is approximately 1 ms in exemplary embodiments. The current loop can be stabilized by adjusting the integral and proportional parameters. It will be understood that higher inductance motors require slower PI parameters.
[0062] When constant speed mode is selected, the control request is applied to the reference input of the speed loop. The power loop is bypassed. The current loop operates after the speed loop. If the motor's operating speed is less than the speed request, which is the control request signal from one of the inputs in analog, PWM, I2C, or CLOCK (frequency) mode, the PI loop will increase the current reference. Since the current loop is at least 10 times faster than the speed loop, the current can be treated as an immediate adjustment to the target value, and eventually the system adjusts the motor speed. The time constant of the speed loop is longer than 10 ms in exemplary embodiments. The speed loop can be stabilized by adjusting the integral and proportional parameters.
[0063] When constant power mode is selected, control requests are applied to the power loop's reference input. The speed loop is bypassed. The current loop operates after the power loop. If the motor's operating power is less than the power demand, which is the control request signal from either the analog, PWM, or I2C input, the PI loop will increase the current reference. Since the current loop is at least 10 times faster than the power loop, it can be treated as immediately adjusting the current to the target value, and eventually the system adjusts the supplied power. The power loop's time constant is longer than, for example, 10 ms.
[0064] In the embodiment, the rated speed and rated current can be programmed independently regardless of which operating mode is selected, and these are primarily used to determine motor parameters. The rated current can be used to clamp a current reference signal from the speed loop or power loop.
[0065] In other embodiments, the motor controller has a phase-locked loop scheme to improve accuracy. The motor controller IC package may have an internal RC oscillator with a predetermined accuracy / error, such as ±3%. In some applications, it may receive a precise clock reference from an external crystal. The motor controller can receive a precise clock reference and lock its internal PLL frequency to the precise clock.
[0066] Figure 11 shows an exemplary implementation of programming the clock frequency using a 16-bit EEPROM. The period of the input clock is obtained by multiplying the value (N) in the EEPROM by 320ns. For example, if the input clock frequency is 1kHz and the period is 1ms, then N = 1ms / 320ns = 3125. This value of 3125 needs to be programmed into the EEPROM.
[0067] An external clock can be input from any suitable terminal, such as the PWM, DIR, or BRAKE terminal. The external clock is measured by the 3.125M internal clock, and if the internal clock is accurate, the measured period should be equal to the EEPROM parameter. If the internal clock is slow, the measured period will be shorter than the EEPROM parameter, causing the internal oscillator to operate faster and generating an adjUp pulse. If the internal clock is fast, the measured period will be longer than the EEPROM parameter, requiring the internal oscillator to operate slower and generating an adjDown pulse. If the error is greater than 6.25%, i.e., 6.25% higher or lower than the reference value, it is treated as an invalid adjustment request. Neither adjUp nor adjDown occurs. If the function is not enabled, adjUp and adjDown will be zero, and adj_none will be 1. The adjUp, adjDown, and adj_none signals control the analog circuit to adjust the oscillator frequency.
[0068] Figure 12 shows an exemplary implementation where the capacitor is charged by the adjUp pulse and discharged by the adjDown pulse. When the function is disabled, adjNone is turned on, and the voltage is forced to the reference voltage (e.g., Vdd / 2). The capacitor voltage controls the current source that adds excess current from the VCO circuit. The adjustment range is 2 LSBs of the trim bit. It may be desirable to trim the oscillator as close to 3.125 MHz as possible, and enabling this function corrects the error in place.
[0069] The clock speed control mode operates at closed-loop speed. It may not operate in open-loop, constant torque, or constant power modes. The higher the frequency of the SPD terminal, the higher the motor speed, as follows:
[0070] close_loop_speed(rpm)=clock_input×speed_ctrl_ratio
[0071] Here, `speed_ctrl_ratio` can be programmed into the EEPROM. For example, if the ratio is 4 and the clock input frequency is 60Hz, the motor will operate at 240rpm. Note that the number of pole pairs of the motor must be properly set in the programming application for the rated speed (RPM) to be accurate.
[0072] Figure 13 shows an exemplary implementation in which a counter moves up or down based on the input CLOCK signal and the motor's FG signal (or the multiplication of the FG signal depends on speed_ctrl_ratio). The counter controls the amplitude command.
[0073] In some embodiments, the current loop is implemented after the speed loop, and there is a requirement to control the time constant and speed_ctrl_ratio of the speed loop independently. In other embodiments, it is desirable to extract the clock frequency, for example, by "borrowing" it from PWM demodulation, as shown in Figure 14.
[0074] Figure 15 shows an example of a hybrid implementation of CLOCK mode. The clock signal may have a 50% duty cycle. The rising edge of the CLOCK signal is taken and passed through a "monostable trigger circuit" to generate a CLK_PWM signal with the same frequency but a fixed "on" period Ton. Therefore, if the frequency of CLOCK changes, the duty cycle changes. This signal is input to the PWM demodulation process, and the output represents the frequency of CLOCK. The Ton time is determined by the system's maximum speed (not the rated speed, but the 100% target speed). The higher the speed, the smaller Ton becomes, and the higher the CLOCK frequency required to reach the target speed. The duty cycle or CLOCK frequency of the converted PWM is used in a PI speed loop, which compares it to the actual speed, followed by a current loop. Due to quantization errors in digital implementations, there may be a slight error between the actual speed and the clock's reference speed. A PLL circuit operates concurrently after the PI speed loop as a complementary method to compensate for this slight error. Since it only takes a slight error, this block may only have a few bits.
[0075] Figure 16 shows an exemplary computer 1600 capable of performing at least some of the processes described herein. The computer 1600 includes a processor 1602, volatile memory 1604, non-volatile memory 1606 (e.g., a hard disk), an output device 1607, and a graphical user interface (GUI) 1608 (e.g., a mouse, keyboard, display, etc.). The non-volatile memory 1606 stores computer instructions 1612, an operating system 1616, and data 1618. In one example, computer instructions 1612 are executed by the processor 1602 from the volatile memory 1604. In one embodiment, article 1620 includes non-temporary computer-readable instructions.
[0076] The processing may be implemented in hardware, software, or a combination of both. The processing may also be carried out in a computer program executed on a programmable computer / machine comprising a processor, a storage medium or other manufactured product readable by the processor (including volatile and non-volatile memory and / or memory elements), at least one input device, and one or more output devices. The program code may be applied to data input using the input devices to perform the processing and generate output information.
[0077] The system can perform processing, at least partially, through execution by a data processing device (e.g., a programmable processor, a computer, or multiple computers) or through a computer program product (e.g., in machine-readable storage) to control its operation. Each such program may be implemented in a higher-level procedural or object-oriented programming language to communicate with the computer system. However, the program may also be implemented in assembly language or machine language. The language may be a compiled language or an interpreted language and may be deployed in any form, such as a standalone program or as modules, components, subroutines, or other units suitable for use in a computer environment. The computer program may run on a single computer, on multiple computers at one site, or distributed across multiple sites and interconnected by a communication network. The computer program may be stored on a storage medium or device (e.g., a CD-ROM, hard disk, or magnetic diskette) that is readable by a general-purpose or dedicated programmable computer to configure and operate the computer when the storage medium or device is read by the computer. Alternatively, processing may be carried out on a machine-readable storage medium composed of the computer program, where instructions within the computer program operate the computer at runtime.
[0078] The processing is performed by one or more programmable processors that run one or more computer programs, enabling the system to perform its functions. All or part of the system may be implemented as special-purpose logic circuits (e.g., FPGAs (Field Programmable Gate Arrays) and / or ASICs (Application-Specific Integrated Circuits)).
[0079] While exemplary embodiments of the present invention have been described, it will be apparent to those skilled in the art that other embodiments incorporating those concepts may also be used. The embodiments included herein should not be limited to those disclosed, but rather to the spirit and scope of the appended claims. All publications and references cited herein are expressly incorporated herein by reference in their entirety.
[0080] Elements of different embodiments described herein may be combined to form other embodiments not specifically defined above. Furthermore, various elements described in the context of a single embodiment may be provided separately or in any suitable subcombination. Other embodiments not specifically described herein are also included in the scope of the following claims.
Claims
1. The step includes using a curve converter to control a three-phase BLDC motor, The curve converter stores a plurality of corner points, and each of the plurality of corner points includes a pair of an input value and an output value corresponding to the input value. The curve converter has an integer index value for each of the stored corner points, The curve converter outputs interpolated data for the input data between adjacent values among the input values of the corner points. A method wherein the index value, the input value, and the output value are applied to the output of the curve converter in such a way that a plurality of steps including hysteresis are added, and the hysteresis occurs when the input value of index value N+1 is smaller than the input value of index value N (where N is an integer).
2. The method according to claim 1, wherein the interpolated data includes linearly interpolated data.
3. The method according to claim 1, further comprising the step of using the curve converter for controlling the motor speed.
4. The method according to claim 1, further comprising the step of using the curve converter to control the motor torque.
5. The method according to claim 1, further comprising the step of using the curve converter to control motor power.
6. The method according to claim 1, further comprising the step of using the curve converter to control a motor control request.
7. The method according to claim 1, wherein the output of the curve converter is not monotonic.
8. The step further includes using the curve converter with pole field directing control of the motor controller IC package, The method according to claim 1.
9. This is a motor controller IC package, Includes a processor and memory configured to provide a curve converter, The curve converter is configured to control a three-phase BLDC motor, stores a plurality of corner points, and each of the plurality of corner points includes a pair of an input value and an output value corresponding to the input value. The curve converter has an integer index value for each of the stored corner points. The curve converter outputs interpolated data for the input data between adjacent values among the input values of the corner points. A motor controller IC package in which the index value, the input value, and the output value are applied to the output of the curve converter to introduce a plurality of steps including hysteresis, and the hysteresis occurs when the input value of index value N+1 is smaller than the input value of index value N (where N is an integer).
10. The motor controller IC package according to claim 9, wherein the interpolated data includes linearly interpolated data.
11. The motor controller IC package according to claim 9, wherein the curve converter is configured to control the motor speed.
12. The motor controller IC package according to claim 9, wherein the curve converter is configured to control motor torque.
13. The motor controller IC package according to claim 9, wherein the curve converter is configured to control motor power.
14. The motor controller IC package according to claim 9, wherein the curve converter is configured to control motor control requests.
15. The motor controller IC package according to claim 9, wherein the output of the curve converter is not monotonic.
16. The motor controller IC package according to claim 9, wherein the curve converter is configured for polar field directivity control.
Citation Information
Patent Citations
Devices with electronic motors
JP2002524008A
Imaging device and control method therefor
JP2016092759A