I think I've got a really good filtering scheme for sensorless at 0.5Rev/sec up to 15,000rev/sec. It fits so well with the nature of the noise in the motor. The faster the motor, the more the waveforms look like fairly well behaved sine waves. The slower the motor, the more the waveforms look like crap. But the slower the motor, the longer the period and the more severe you can filter the signal. The goal is to find the derivative of the noisy current waveform. Well, it only looks random. Even at near zero rpm, that thing is a sine wave, if you do enough filtering. The trouble is, the filtered signal lags behind the one you want. Also, the magnitude is squashed just a bit. But in general, the RPM doesn't change super super fast. I mean, not microseconds fast. So, you find the shifted and scaled "peak of the last half cycle" and width of the last half cycle, and use that to construct a sine wave that is shifted back in time, and scaled up. YOu now know how the true sine wave looks like. You don't have to depend on the old news filtered sine wave. You can then take the derivative of the corrected sine, which then gives the derivative of what's happening right now! No lag! will post simulation pics soon.
