Monday, March 3, 2014

Link Update / Sensorless Gen. 1 Documentation

All of the documentation links on my site are dead.

It will take me some time to go through each one and re-link it to its new location. For the most part, everything will mirror to a Google Drive Amazon S3 folder, as such: is no more. For some reason it is without a doubt my most downloaded file. I guess I will take that as a complement. The new location is:

Other documents of importance in are moved to that same shared folder. Some more examples:

Since it's a shared folder, you can look at what else has been moved:
[Edit: Sorry! Google Drive disabled hosting. I've moved individual files over to Amazon S3 and will update links accordingly.]

In return for temporarily killing all of my documentation links, I will post some new old documentation that has been a long time coming:

Flux Observer-Based Sensorless Field-Oriented Control of  Surface Permanent Magnet Synchronous Motors (Gen. 1)
or, What Does the Flux Say?

This is an attempt to document my first attempt at sensorless field-oriented control (hence, Generation 1). The hardware implementation of this method was finished more than a year ago, but the documentation has been slow to catch up. I did a few posts on it, but only teased at the complete documentation of the Gen. 1 method. Well, here it is. Better late than never, I guess.

Originally, I expected this method to be a baseline, possibly the simplest implementation I could think of that would lead to more advanced techniques. Maybe Gen. 2 will be that step. But as is usually the case with my projects, just the act of actually building hardware and software has helped clarify my understanding of the problem, to the point where I could actually see the benefits of the simpler method and work it into an analysis framework that allows it to be deployed quickly and easily on new motors. And by quickly and easily, I mean with great pain and frustration unless you have a thorough understanding of how it works. Which is the point of the document, I guess.

For sure, the solution is not complete and not even ideal. It's just something that I use as a technical reference and might be useful in that context to others as well. I don't plan on commercializing the implementation because of the effort that would be involved in bringing it up to the level of being a reliable and user-friendly product, or even a development kit capable of being used by others to create such a product. (If it is to be commercialized, the improvements over Gen. 1 will be proprietary anyway.) But hopefully the information it has can be useful.

If you are looking for more of a developer-friendly kit / API for sensorless FOC, Texas Instruments has a solution called Instaspin FOC that I've been following since before it existed (motor control hipster-style): 
Although I can't be sure, I suspect the basis for it is also a flux observer. I'm sure the implementation is a lot more thorough, though.

Anyway, the field of motor control is vast and there is tons of information available. What's needed are people to take that information and use it, yes, but also improve it. Not just copy-paste into a system but also twist it into something different, find a better and faster way to do it, port it to new hardware. Not just ask questions about it but answer them in a new way. That's the challenging and fun part, IMO. Good luck!

Now back to fixing dead links...


  1. The Balance Filter - A Simple Solution for Integrating Accelerometer and Gyroscope Measurements for a Balancing Platform

    You have one of the best papers on the subject. Thank you for re-posting it.

    John Sokol

  2. Man, thank you so much for keeping and sharing this info with us!!!!
    Just like the comment above, when I found this site and that you saved these papers this was my reaction:

  3. Shane - thought you might get a kick out of this. I used your work to power a Gen 2 Prius electric a/c compressor in my converted electric car and it has worked incredibly well. Details here if you're interested, and thanks for all the informative posts.


    1. Now that is awesome. I'm amazed that it runs on AVRs. Must have been a very efficient implementation. Way to go on a successful port. And nice work on the hardware design too!

      Just curious - any plans to build traction drives in the future? Seems like you have a talent for it.

    2. yeah, definitely spent a lot of time to make it fast. switching to the xmega at 32Mhz really helped.

      As for traction drives, I got started helping on the 'Open Revolt' controller for series wound DC motors. It's a 144V 500A mosfet based controller.

      Then, my buddy converted a porsche and I helped him make a 230V 800A IGBT version. Here are some of his blog posts.

      But, this was my first venture in AC motors. I think there are a lot of affordable AC motors from wrecked Leafs and Prius's and I think it'd be fun to try to get one of them running.

  4. it seems can't visit those documentations..

    1. Me neither, is are they posted somewhere else?

    2. Sorry! Google Drive disabled hosting and killed my links once again :(. I've moved all the documentations to Amazon S3 and updated the links above.