Lately I’ve been playing a bit with TI’s InstaSpin’s FAST motor parameter identification and tuning. I must admit I’m amazed as how good it is. You can throw it any motor and it will estimate phase resistance, inductance, flux while tuning current and speed PID’s parameters. all that in less than a minute. The phase resistance estimate where whithin 5% of ground truth, inductance whithin 10%.

TI’s encoderless (I will not use the word sensorless) algorithm is proprietary and there are no implementation references. It is implemented directly in the silicon ROM and relies on a variation of BEMF sensing. Also the FOC algorithm they implement is not a PID but ADRC (iirc).

Reverse engineering the InstaSpin algorithm, implementing ADRC FOC and designing an open PCB implementation to run this algorithm would be a fantastic project.

Edit: This is probably a good starting point

Edit2: Another good one, however this one requires angular resolver, which needs to be estimated by BEMF for encoderless cases

Edit3: And another one but no PDF, needs subscription

Thanks a lot,
Just skimmed through the papers. So ADRC is an alternative to PID, that is an interesting topic. Although, right now, I’m more interested with the state estimation and system identification part of instaspin’s FAST algo. basically, you feed in Va, Vb, Vc, Ia, Ib, Ic (in time) and you can estimate all on this figure:

I think the papers you cited (the 3rd is on scihub, btw) covera part of it. I’m sure there are paper that more directly target what I’m looking for.

Right, you need reasonably fast current and voltage telemetry, something like a standard current and voltage sensor, and the black-box transformation on that picture. Then, I am sure you can commutate using PID FOC. The secret sauce is in the transformation function that could be derived from the papers. Once you get the angle, torque and angular speed (I am not sure why you need the flux btw I feel like they put it there only to spell F.A.S.T.) you can commutate the next cycle using any algorithm you want.

I’m into DRV8305 and DRV8316 right now. you only need shunt resistance on the 05, so, no special pcb I think?
I guess you want to carefully route the ADC traces…

Very interesging. The TI’s piccolo MCU runs at 60 mhz so current and voltage sense can be processed by any average st32 mcu running the adrc algo. But you need another 3 opamps for voltage, and use the driver bidirectional amps for current sense. Or find a clever way to scale and normaize the voltage down to 3.3v? My PCB design knowledge is rather limited.

I am answering my own question but looking at the TI EVM schematics for DRV8316EVM the voltage divider already does that, and is scaling the [0,45] to [0,3.3] volts. So you can directly feed the VSEN A,B,C to the MCU analog inputs. No opamps needed. I guess on that EVM you already have everything to develop an ADRC algorithm.

Funny thing, I have TI’s BOOSTXL-DRV8323RS evaluation board in my drawer which I wanted to use to develop something similar way back. It has individual DC bus and phase voltage sense as well as individual low-side current shunt amplifiers. Everything you need for the encoderless ADRC algorithm. I’ll be damned. Is this a sign? May be the time has come.

One thing though, there is some effort needed to time your sampling right. Right now I’m using a SAMD21/51 with a rather complex EVSYS-DMA scheme, but maybe it’s easier on other MCUs.

For the last two, I’d have to start pretty much from scratch but it’s on my (mid-term) todo list. You can order an arduino-compatible samd21 breakout for as little as 7$ ship incl on aliexpress.