Welcome back to the Digilent blog!
Robots that run around on motors are pretty sweet. These motors traditionally tend to be DC motors that are controlled through the use of an H-Bridge, which can change the flow of current so that the motor is able to run forwards or backwards. H-bridge modules, such as Digilent’s PmodHB3 or PmodHB5, also tend to have two pins labeled as Sensor A and Sensor B that measure which direction the motor is rotating. The two sensors, A and B, will be wired to the outputs of components known as Hall effect sensors. Unsurprisingly, these measure the Hall effect. But rather than having the “word in the definition” problem, let’s learn some of the practical details.
Broadly speaking, when current is travelling through a component, such as a piece of metal, it will travel along the path of least resistance. Typically, this path of least resistance is going to be the shortest and relatively straightest path from the high voltage side of the component to the low voltage side. However, if a magnetic field is placed perpendicular to straight path of current flowing through a semiconductor, the charge carriers in the current flow experience what is known as the Lorentz force. This force causes the charged particles to move to one side of the semiconductor or the other, depending on whether they are positively or negatively charged.
This charge separation and resulting voltage differential is known as the Hall effect. The resulting voltage can then be given to a transistor or system board to indicate how strong the Hall effect across this particular semiconductor is. So, how does this relate back to DC motors? If our DC motor has a permanent magnet in a small section on the outside of the motor, we can place two Hall effect sensors in quadrature to the motor. In plain English, this means that when looking at the top of the spinning motor, the two Hall effect sensors are placed 90° from one another. This way, the magnetic field produced by the permanent magnet will only affect the Hall Effect Sensor that is directly in front of it and not influence the one that is perpendicular (90 degrees away) to it. With this configuration it is possible to determine which way the motor is spinning based on which sensor produces a voltage first within a set time frame. You can also determine how fast your motor is spinning based on the time difference between a particular sensor is at its maximum value and how wide your motor is.
Feel free to give us a comment if you have any questions!