Dear all,
I am designing a BLDC motor controller and because of the reduced size of the motor I have to use a magnetic enconder and employ 3 HALL sensors to determine rotor position.
I am reading some articles about how to choose the following critical parameters:
- Position and orientation of HALL sensors regarding rotor magnets.
- Sensibility of the sensors >> It has to be "more" than the maximum magnetc peak measured in that position.
- Angle between them >> Angle = (2 / number of rotor magnets) x 120
- Bandwidth >> BW > 2 x Number of poles per second.(at maximum speed)
My system features the following parameters:
- 16 rotor magnets.
- 18 stator inductors.
- 4000 RPM maximum.
- 16 mT maximum peak measured at sensors' position.
So according to this data my initial setup would be:
- Position and orientation: http://www.ti.com/lit/ds/symlink/drv5011.pdf , figure 16, first case showed.
- Sensibility of the sensors >> Maximum peak measured 16mT, so sensor choosed: DRV5013AG +- 6mT.
- Angle between them >> Angle = (2 / 16) x 120 = 15º.
- Bandwidth >> BW >> 4000 RPM / 60 = 66,67 RPS >> 66,67 RPS x 16 magnets per revolution >> 1066,67 magnets/second >> BANDWITH > 2x1066,67 = 2133 Hz. DRV5013AG features 30KHz.
Combination of 3 digital data has to encode a 60º by 6 allowed codes (000 and 111 are forbidden in the sequence).
My PCB looks like the following:
I am experimenting trouble regarding 2 points:
- When I spin the motor manually, I read 000 and 111 codes which are not supoosed to be allowed.
- Sensor on the right side is reading almost half the magnetic intensity compared to the other sensors. (I taught measurement only depends on Z axis, not XY orientation as well).
Could you please help me to solve this issue? Motor controller is reading forbidden codification and is not working properly. In addition, sizing sensors' sensibility is not easy if one sensors is reading half of what is is supposed to read...
What do you think?
Many thanks in advance!