Allegro A89301

I’m trying to control a 3-phase linear motor with this product. The basic operation works well, but if you set it to open drive mode for ultra-low speed rotation, forward/reverse rotation will not work. Why?


Could you please describe the situation in a bit more detail? I’m understanding you to state that you’re trying to use the open-loop speed mode as described on page 7 of the datasheet, but it’s not clear what other configuration settings are being used, what exactly you mean by “ultra low speed rotation”, what control inputs are being provided, or what exactly is meant by “forward/reverse rotation will not work.”

In general though, sensor-less commutation schemes for BLDC motors aren’t very robust at low-speeds since the back-EMF signals used to detect rotor position are speed-dependent. This is partly why the suggested applications include fans, pumps, and similar applications that have near-zero starting torque requirements.

Thank you for answer.


Ultra-low speed refers to control below 10rpm, using a rotary motor as an example.

1 Like

There doesn’t seem to be a chip that can control linear motors.
I think most of them are directly controlled by MCU.
I tried controlling it with the a89301, but it didn’t work well at low speeds below 10rpm, so I had a hard time for several weeks.
I found it by chance while modifying some of the registry in open drive mode, and the problem is that it consumes more current than expected, so I think the power supply needs to be redesigned.
This also causes the a89301 to generate a lot of heat. The heat dissipation structure of the basic PCB will not work. The heat ruined the chip.
I plan to continue testing by attaching a heat sink on top of the chip.

When speaking of a “linear motor” I understood you to mean a device which mechanically converts rotational motion to linear motion using a screw or similar mechanism. Machines where the fixed and moving parts are geometrically linear are a more exotic case, and chips made with rotating machines in mind might not be well-adapted to the purpose.

I don’t claim to be familiar with the internal workings of the device in question, but I can imagine that at extreme-low speeds, the balance of switching and conduction losses would be different from the higher-speed regimes for which the part seems to be designed. That could be a problem by itself, but if it also caused the voltage available on the charge pump capacitor to drop, that could lead to higher losses in the high-side FETs within the chip, and cause problems.

As expected, since it is a chip dedicated to rotary motors, applying it to linear motors does not seem to matter to development products, but it seems difficult to apply to mass-produced products.
It appears that it will have to be controlled directly with the MCU, but it is frustrating because all the functions previously performed by the dedicated chip must be configured with firmware.

Hi hckim,

As @rick_1976 describes above, a sensorless drive system relies on back-emf of the windings to determine position, and back-emf is minimal at low speeds, so it makes that difficult. If you use a motor with Hall sensors or an external encoder, and a motor driver or MCU designed to interface with one of these sensing systems, you’ll have a much better chance of getting a working system.

1 Like

Hi David
There is an external encoder.
This product seems to be suitable only for rotary motors.
This is not suitable for linear. In particular, low speed sections cannot be controlled.
I’m trying to redesign it in a way that allows direct control with the MCU.

In low-speed sections, you may not be able to find the starting position, or only a clunking sound (going back and forth left/right) will occur.

Although this is an application that does not require high-precision control, this product does not seem to be suitable because acceleration/deceleration and low speed are required.