Application Note for Allegro A89301 BLDC driver

Hi,

I have used this product for driving a BLDC blower for a NIV for COVID.

More information on the end product here: http://surabi.com

I have attached an excel file in this thread. It has the factory default EEPROM values and the values used in my application. This will give you an idea on what to tune to get a satisfactory performance. The motor inductance should be amongst the important parameters to be tune to get a reliable start-up. Have you done that?

One issue was a unsatisfactory speed response in closed loop.

Allegro A89301 BLDC driver- speed response in closed loop - General - Engineering and Component Solution Forum - TechForum │ Digi-Key

I had to fall back on open loop. Let me know if you have any success with good speed response in closed loop.

BR,

Ravi

image001.jpg

image002.jpg

Hi Ravi,

Thanks for the response. I have looked a your excel file briefly, but will study it in more detail!

To answer your question, no I have not tuned the inductance properly using a scope yet (as suggested in application note) - I have only experimented with different values using the GUI.

Today I was able to get more reliable start up though (with no load on motor at this stage, eventually it will drive a pump head). This was with the inductance set to ‘7’ on the GUI, though I don’t know how that value actually relates to the motor inductance (i.e. my motor spec sheet lists an inductance of 0.45 mH)

Either way, I was happier with start up consistency…but have been trying to push the start up time / acceleration further.

I have the following start up related settings in the GUI:

  • Start up mode = Align & go (running ‘IPD test’ was not successful on my motor, though I still seem to get consistent start ups using ‘slight move’ now also)
  • acceleration at start up = 816 Hz/s (maxed out)
  • soft-ON = disabled
  • First cycle speed = 4.4hz
  • Open loop acceleration buffer = Fast

Is there any other tricks for a faster start up? i.e. when not using the GUI, can you push the acceleration at start up further?

Finally I have not experimented much with closed loop control yet, but also noticed a slow response when I did…so am sticking to open loop for now also.

Thanks!
Adam

Hi Adam,

There are the values I have used in production. The rest are defaults. Hope this helps…

BldcDrvEepromWrite(8, 0x6334); // open loop, acceleration range is high

BldcDrvEepromWrite(12, 0x0128); // motor inductance lowered

BldcDrvEepromWrite(16, 0x206C); // disabled acc and dec buffer

// for speed via I2C

BldcDrvEepromWrite(10, 0x4740); // increasing rated current

BldcDrvEepromWrite(17, 0x22FF);

// motor resistance and sense resistor

BldcDrvEepromWrite(9, 0x0E10); // increased startup acceleration

BldcDrvEepromWrite(20, 0x584B);

image001.jpg

Hi,
@Presto of course I’m interested in copy of this famous GUI. I would like compare how I calculate parameters (especially Motor Resistance) and what program will say about.
Going back to your application: your acceleration at start sounds very offensive (maybe application requires it?)
Anyway Im going to shortly describe parameters which I tuned a lot:
SCL=1 (close loop),
AR=1, and Acceleration=4, (higher values cause instability of the start if the rotor is under load)
Startup_Current - max, and rated current calculated as in datasheet
PID_P - in my case between 2 to 8 (2 faster response, 8 more stable (smoothly stabilizing expected rpm))
PID_I - 5, bigger value cause significant reduction in rpm
Deadtime_setting = 4 (I dont see any spikes on oscilloscope, seems enough in case of my mosfets);
Son,Soff = 1;
First_cycle_speed=2 (stable start under rotor load)
IPD_Current_Thr - this one I have to say that I don’t get it, in my case I didn’t realize any influence. @surabibio - maybe you have experience with?

One more thing: in my cases as high voltage as I could put higher acceleration. It’s obvious from physic, but it’s good to remember.

Thanks @surabibio and @Eustachy for the shared values.

Also yes, I required a very dynamic response on initial start-up - hence the ‘offensive’ acceleration :slight_smile:

I tried with pump head connected today and it was not successful though. I have a lot a tuning to do to try and get a good acceleration under load.

Did you both tune your system with a scope and if so - what process did you follow?

Also @Eustachy - let me know how to send the GUI?

I set the motor inductance by trial and error. Just choose the best value that gave a reliable startup and best speed at lowest current consumption (as measured from the desktop power supply).

image001.jpg

image002.jpg

Hi @Presto,
I suppose that service like https://fromsmash.com/ will be usefull (please choose the ‘Link’ option).
Just post generate link here :slight_smile:
Thanks in advance!
PS: I was fighting with my motor yesterday, and still BEMF is an issue.
@surabibio - in my case I don’t see any difference when I change Inductance. Both in velocity/stability of the run, and power consumption. My motor is 72ohm per phase, maybe that’s the reason … .

Hi Eustachy,

Are you writing to the EEPROM or RAM.

If it is to the EEPROM it requires a power cycle.

I usually write to EEPROM and read from RAM to be doubly sure.
BR,

Ravi

https:// .com/Seien22OrW-gt (Edit RCN: Link expired, removed domain to prevent future issues…)

Hi,

Is it possible for someone to upload another link to the GUI? Thanks!

Hello community!
Same situation here, has someone still got the GUI?

MF3