I am a student EE major working on a control algorithm for a 3 phase sensored BLDC motor. Currently the motor is running well. I'm currently pursuing fault condition safety software for the motor. One possible fault that could occur is an invalid state read in for the hall effect sensors.

If the hall effect sensors read in 000 or 111 that means either one of the hall effect sensor's is shorted (111) or one is disconnected (000). My question derives from how to respond (in my control software) to a condition such as this?

Obviously if a hall effect sensor has gone corrupt (short / disconnected) I need to stop the motor from commutating. However, I'm worried that if this invalid state is caused by a fluke then I would not want to force the motor to stop immediately.

My current thoughts would be to just increment a counter each time an invalid state gets read in, then if 10 invalid reads come in consecutively I would stop the motor for good.

Thoughts? Am I crazy to think that hall effect sensor inputs straight from the motor could randomly be incorrect?

The more I think about this "issue" the more I'm leaning towards trusting the hall effect sensor data absolutely. If a random bit were to flip in the transmission the commutation pattern wouldn't be correct...


  • \$\begingroup\$ IMO, you are losing precious time of things that could happen. In either case the motor won't work and has to be replaced. \$\endgroup\$ Dec 15, 2016 at 7:05

1 Answer 1


You could implement back-emf as a backup control system to aid detecting fault conditions matching sensor data and rotor position calculated by back-emf, thus being able to detect even those fault conditions producing a "good looking" set of values, and eventually bring the motor to a soft stop using BEMF for rotor position detection.

Another option, if you want to go the fault detection way, is to implement redundancy in your sensors and communication line. This can be implemented in various ways and probably is the best way to add a functional fault detection that not only detect faults but also enables you to not have to immediately halt the motor.

If both such solutions seems too complicate you probably are in a case were a serious fault detection algorithm is not needed and stopping the motor in case of incoherent data is "just the right solution" so you can fix that cold soldered hall sensor before finals :-)

As far as fault detection goes is probably more important to focus on current detection.

Have fun! :-)

  • 1
    \$\begingroup\$ Ended up simply writing a bit of software filtering to only respond to a 000 condition or 111 condition if in fact there has been a disconnect. In the case I detect an invalid hall state I simply kill the motor and notify the user. \$\endgroup\$ Dec 17, 2016 at 0:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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