I would like to determine the position of a motor based on its radio emissions, I do not have access to said motor but I am trying to reverse engineer it.

Here is what I know about it :

  • It has X amount of positions (X being finite and somewhere around 50).
  • It is a stepper motor.
  • It is not very large or powerful, but it is not a tiny RC motor.
  • The whole structure is not encased in metal, which is good for my case.

Sorry I cannot provide more information, but with this, is it possible to determine through enough experimentation, the position of the motor based on the EMI it generates ?

Suppose it rotates at a constant speed, then depending on the length of the emission (t x 1, t x 5, t x 24,...) I should be able to determine where it landed right ?

I know Stack Exchange is not for theoretical questions but I am going to invest in an SDR for this and I would like to first know if it is feasible.

  • 2
    \$\begingroup\$ You've asked a yes or no question. Is it feasible: yes (is it practical or reliable: depends on many things and those many things are how you design it). \$\endgroup\$ – Andy aka Sep 18 '19 at 11:19
  • \$\begingroup\$ For me is not feasible. The rotor won't emit any EMI, you would measure only the EMI that driver emits. So, have you done any search of your hypothesis, where the idea came from? \$\endgroup\$ – Marko Buršič Sep 18 '19 at 11:40
  • \$\begingroup\$ I have read in many places that motors emit a lot of EMI, especially when generating the initial force. \$\endgroup\$ – Ryan Sep 18 '19 at 12:47
  • \$\begingroup\$ Can you access the motor wires? Enough to place inductive pick-ups onto each motor wire. From that, pulses and direction can be inferred. \$\endgroup\$ – rdtsc Sep 18 '19 at 13:40

Think about it for a moment. Even if you know exactly how many steps the motor makes during each movement, there's no way to determine the direction of the movement from the EMI emissions. Therefore, there are two possible answers for each movement, and you can't know which one is correct as the starting point for the next movement.

| improve this answer | |

If the opposing force is cyclic with rotor position such that the pulsed or steady state current in each position becomes sinusoidal, then it is possible to sense DC current or emission level of transient current pulse width during commutation with a Narrow band AM radio but this will become unreliable if speed or load is changed.

Direct current sensing would be more accurate for predicting/deconvoluting sine position but only if load is strongly opposing gravity or some sine position spring force on the rotor belt.

Otherwise your assumptions are invalid. Stepper current rise time depends on L/(RdsOn+DCR)=Tau and not the rotor mechanical load that might vary with sine position. However the time duration and oscillation levels may vary to reach the next step which means the amplitude of the frequency that corresponds to the step motion pulse width , which is a fraction of step interval or large harmonic of step rate but well below step risetime. This intermediate bandwidth might possibly be correlated with position but skewed by noise of many factors.

Start by scoping DC current and Spectrum Analyzer noise in wide band mode using a time sweep rather the frequency sweep and tune until you get a strong cyclic sinusoid with rotation and expect you need > 40dB SNR at all times to resolve 50:1.

You may need to detect surge edge to enable a sample & hold to capture the signal of interest accelerating the sinusoidal load so as to ignore the noise, which is greater but contains unimportant signal. The greatest current (10x) is when voltage is applied when the stepper has not reached significant speed yet L/R has been exceeded. Then motion /velocity-induced BEMF reduces the current until it stops.

The best rotor position sensing uses a Home or 0 deg or position 000 optical sensor and then up/down counter on quadrature steps or micro steps. This gives the best chance of a calibrated position sense.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.