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?
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.
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?
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...