# Get Motor RPMs from Resolver Signal

everyone.

I have a servo motor that outputs a resolver signal (sine, cosine, and reference). Each of the three signals is a differential pair (+A/-A, +B/-B, etc.). And the three signals are encoded using an 8 kHz carrier signal. Below is a plot that I made from an oscilloscope data capture.

The plot shows the sine (A) signal only. I took the difference (+A - -A) to reduce the noise. The three colors (red, blue, green) represent measurements at three RPMs: 10, 20, and 40, respectively. The bands, or what look like bands, are actually the envelope functions. If you zoom in (see small breakout plot above the larger plot), you can see that each band is composed of a higher frequency (8 kHz) carrier signal. The 8 kHz frequency does not change with motor RPMs, but the phase between the sine and cosine signals does change with each zero-level crossing. My understanding is that this is a normal way to encode resolver data.

My question is this: What is the best way to extract the RPMs? I do not need the azimuth, just the RPMs. I would like a robust way of extracting the motor speed, and I would prefer simple solutions over complex solutions. I have an idea of how to do it, but I want to make sure I'm doing this is the best way before I burn too many more calories on this.

Edit: My current strategy is to demodulate the signal with a diode and a low-pass filter. Then digitize it using a LM311/Schmitt trigger, and measure the frequency using a Teensy 4.0 microcontroller. I would like accuracy in the 1% range or better. As for resources, I can design and build SM and TH boards. I have standard equipment: DMMs, oscilloscopes, signal generators, lab power supplies, etc.

As for 'simple,' sorry for the subjectivity of the word. That just means that I would prefer not to have to involve an FPGA or anything at that level. I don't want to curve-fit the data to get the derivative if I can just digitize and count pulses. That sort of thing.

• Define "simple": your "simple" may be my "horrendously complex", or visa versa. Do this by editing your question. While you're doing that give us an idea of the resources you have available (i.e., processor, it's speed, whether you're designing a board or putting together off-the-shelf motion control components). Also let us know what sort of accuracy you need, and the sample rate. Mar 27, 2023 at 2:53
• @TimWescott Thanks. I will add those details.
– njs
Mar 27, 2023 at 3:02
• do you have the 8Khz reference available? Mar 27, 2023 at 3:51
• @JasenСлаваУкраїні I do. The connector I'm splicing into has A, -A, B (cosine), -B, and a plus-minus reference signal.
– njs
Mar 27, 2023 at 3:53