This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Detecting a non-responsive motor

I have a motor (DC brushmotor 12V, 15A, 246:1) and motor driver (www.robotshop.com/.../cytron-13a-5-30v-single-dc-motor-controller.html) in my control system that is controlled by TM4C129. 

How do I detect in the code if the motor is non-responsive?

  • Have you a tachometer attached to the motor? That's a (very) tried/true method to detect motor stall.

    When no tach is available - and you've been able to (earlier) log motor current when under rotation - the detection of that current level & waveform may suffice.

    If your analog skills are well developed - it may also be possible to detect the commutation events - as the brushes transfer energy to the motor's windings. This usually proves a nice challenge - the tachometer method is usually chosen...
  • cb1 points out available techniques. Part of your choice will be driven by what you want to detect as unresponsive.

    A tachometer (one of quadrature, frequency, or tachgen)* is the easiest, tachgen** being the easiest to use. This covers a wide range of possibilities including velocity mismatch, stall, disconnects and overspeed.

    Current/voltage can usually deal with stall but the others are more problematic.

    Brushnoise is possible, but the signal may be dwarfed by other noise sources. Smaller motors, like yours, may have a larger signal from the brushes than the larger motors. This is, in any case, as cb1 noted a more difficult task. Even if you want to go this route I'd suggest starting with a frequency tachometer to develop your algorithms,  act as a comparison and provide a fallback if the brush noise detection doesn't work.

    Robert

    * There's also resolvers but at that point your tachometer support is more complex than your motor. Probably more expensive too. 

    ** Side note. Any small PM motor can act as a tachgen, either DC (brushed PM) or AC(synchronous PM, BLDC), although the latter will take more work to interface

  • Might the record reveal that, "NOT just poster's motor" proves, "Non-responsive!"

    Two "pretty fair" responses (both deserving VERIFIES) have landed.   Silence is "deafening."

  • Hi Lilyhack,

    If the motor code has state flags you can test the status of any flag during routine error polling, This code below is simple way to check status of such a flag though the names of your state flags and variables may differ the principal is basically the same.

     {
       //
        // See if motor is stalled @125ms.
        //
        if(g_ulState & STATE_FLAG_RUN)
        {
            if(g_ulMeasuredSpeed == 0)
            {
                g_ulStallDetectCount++;
                if(g_ulStallDetectCount > 125)
                {
                    //
                    // Emergency stop the motor drive.
                    //
                    MainEmergencyStop();
    
                    //
                    // Indicate a motor stall fault.
                    //
                    MainSetFault(FAULT_STALL);
                }
            }
            else
            {
                g_ulStallDetectCount = 0;
            }
        }
        else
        {
            g_ulStallDetectCount = 0;
        }
    }

  • BP101 said:
    state flags and variables may differ the principal is basically the same.

    Advice is sound - assuming poster has devised (some) means of detecting motor rotation - which proves a more dominant challenge.

    Word choice/usage - once again - over-challenges.

    Principal refers to (1) one who holds a presiding position or rank, and (2) capital or property before interest, and it’s also an adjective meaning (3) first or most important in rank. The head of a primary or secondary school is a principal.

    Principle is only a noun. In its primary sense, it refers to a basic truth, law, assumption, or rule.

    It is "Principle" (i.e. the "truth or law or rule) which you intended...